unity中的常用屬性修飾符

unity中的常用屬性修飾符

  • 一、前言
  • 二、常用修飾符
  • 三、結語

一、前言

在做unity開發編輯腳本的時候經常會用到屬性修飾符,使開發調試更加便捷。初學者見過最多的莫過于[Header("標題文本")]了吧,除此之外其實還有很多,這篇文章列舉說明一些開發常用屬性修飾符。

請添加圖片描述

二、常用修飾符

在Unity中,屬性修飾符可以用于控制序列化行為、編輯器顯示和其他功能。以下是一些常用的Unity屬性修飾符及其含義:

  1. [HideInInspector]
    此屬性修飾符可以隱藏一個字段或屬性,使其在Inspector窗口中不可見。
    在這里插入圖片描述

  2. [Range(min, max)]
    限制一個數值字段或屬性的可接受值范圍。在Inspector中,這個字段會顯示為一個滑動條或輸入字段,限制在指定的最小值和最大值之間。
    在這里插入圖片描述

  3. [Tooltip("提示文本")]
    為Inspector中的字段或屬性添加工具提示。當用戶將鼠標懸停在字段上時,會顯示提示文本。
    在這里插入圖片描述

  4. [Multiline(n)]
    將字符串字段或屬性在Inspector中顯示為多行文本區域。可以指定行數,例如[Multiline(3)]將顯示一個3行的文本區域。
    在這里插入圖片描述

  5. [ SerializeField ]
    使私有或受保護的字段在Inspector中可見和可序列化。
    在這里插入圖片描述

  6. [Header("標題文本")]
    在Inspector中添加一個標題,用于分隔和組織字段。
    在這里插入圖片描述

  7. [Space]
    在Inspector中添加一些空間,用于分隔字段,也可以[Space(50)]分隔的更遠。
    在這里插入圖片描述

  8. [ContextMenuItem("菜單項文本", "方法名")]
    在Inspector中的字段旁邊添加一個上下文菜單項,當點擊時,會調用指定方法。
    在這里插入圖片描述

  9. [TextArea(3, 10)]
    [Multiline]類似,但它還允許指定文本區域的最小和最大行數。超過最大行數,會出現滾動條,但[Multiline]不會出現。
    在這里插入圖片描述

  10. [HelpURL("URL")]
    為腳本添加一個幫助鏈接,點擊時會在瀏覽器中打開指定的URL。
    這些屬性修飾符可以在Unity編輯器中提供更好的用戶體驗,并幫助組織和管理腳本中的數據。
    只修飾類,一般會默認跳轉手冊文檔
    在這里插入圖片描述

  11. [ContextMenu ("名稱")]
    在Inspector面板中腳本Script的上下文菜單中添加一條指令,當點擊該指令時,執行對應函數。需要注意的是修飾符只能用于非靜態函數。
    在這里插入圖片描述

  12. [CreateAssetMenu(fileName = "xxxx",menuName = "xxx/xxx")]
    參數說明:fileName:生成asset文件的文件名;menuName:在Assets/Create上子菜單的名字。

    這個修飾符可以通過編輯器創建自定義資產。通常用于那些繼承自ScriptableObject的類,它可以讓開發者輕松地創建和管理配置文件、數據容器或其他可序列化的資源。
    在這里插入圖片描述

  13. [ColorUsage(bool, bool, float, float, float, float)]
    在Unity中,[ColorUsage]屬性用于指定一個Color類型的字段如何在編輯器中顯示和編輯。這個屬性允許你限制顏色的編輯范圍,例如,可以指定最小的亮度、飽和度或者Alpha值。這對于那些需要特定顏色范圍的應用場景非常有用,比如光照顏色、材質顏色等。
    在這里插入圖片描述
    第一個參數true表示是否允許HDR(高動態范圍)顏色。
    第二個參數true表示是否允許顏色選擇器顯示Alpha通道。
    第三個參數0f是顏色的最小亮度值。
    第四個參數8f是顏色的最大亮度值。
    第五個參數0.1f是顏色的最小飽和度值。
    第六個參數3f是顏色的最大飽和度值。

  14. [AddComponentMenu("xxx/xxx")]
    該屬性是一個用于自定義腳本的特性,它允許你為腳本定義一個自定義的菜單路徑,以便在編輯器中通過Add Component菜單添加該組件時能夠找到它。這個特性對于組織復雜的工程或者為非程序員用戶提供易于理解的組件非常有用。
    在這里插入圖片描述

  15. [DisallowMultipleComponent]
    防止在同一GameObject上添加同一組件的多個實例。
    在這里插入圖片描述


下面是一些不是很常見的,但是也要了解知道。

  1. [Delayed]
    當應用于屬性時,延遲更新屬性值,直到用戶完成輸入。這通常用于那些需要用戶輸入但不需要即時反映的場合,比如在Inspector中輸入一個值后,不需要立即看到結果,而是等到用戶完成所有輸入后再更新。

    在這里插入圖片描述
    比如在這段腳本中,health字段在Inspector中會有一個延遲更新的行為。當你開始在Inspector中編輯health的值時,Unity不會立即應用這個新值,而是等到你完成輸入(比如按下回車鍵或點擊其他字段)后才會更新。

    這個特性對于防止在用戶輸入過程中頻繁觸發的事件或計算非常有用。例如,如果你有一個復雜的計算依賴于health的值,你不想在用戶每輸入一個數字時就執行這個計算,而是等到用戶輸入完整個數值后再執行。

  2. [ExecuteInEditMode]
    允許腳本在編輯模式下運行,而不僅僅是播放模式。

  3. [FormerlySerializedAs("舊字段名")]
    當字段名稱更改時,用于保持序列化數據的兼容性。

  4. [PropertyDrawer(typeof(MyPropertyDrawer))]
    自定義字段在Inspector中的顯示方式,通過指定一個實現了PropertyDrawer類的類型。

  5. [RequireComponent(typeof(ComponentType))]
    自動將指定的組件添加到GameObject上,如果它尚未存在。

三、結語

雖然上面列舉了不少屬性修飾符,但是還有許多修飾符,只不過我們在開發的時候很少用到。我記得有個老師在教我的時候說過這樣一句話:沒有哪個程序員可以全部背會記住文檔,只要能夠找到會用就行,不要求全部背會記住。 是啊,文檔手冊里的東西千千萬,怎么可能把全部的東西信手拈來,熟練使用查找手冊也是一種能力。

今天的文章內容到此結束,下期見,拜拜!

請添加圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/19206.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/19206.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/19206.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

MFC工控項目實例一主菜單制作

1、本項目用在WIN10下安裝的vc6.0兼容版實現。創建項目名為SEAL_PRESSURE的MFC對話框。在項目res文件下添加相關256色ico格式圖片。 2、項目名稱:密封壓力試驗機 主菜單名稱: 系統參數 SYS_DATA 系統測試 SYS_TEST 選擇型號 TYP_CHOICE 開始試驗 TES_STA…

sdbusplus:通過文件描述符傳遞數據

有的時候需要傳遞大量的數據,如果將數據通過dbus傳遞,會消耗大量的帶寬。可以通過傳遞一個文件描述符替代傳遞數據: 以下的service通過文件描述符接收數據: //fd_service.cpp #include <sdbusplus/asio/connection.hpp> #include <sdbusplus/asio/object_server…

U盤無法打開?數據恢復與預防措施全解析

在日常生活和工作中&#xff0c;U盤已成為我們存儲和傳輸數據的重要工具。然而&#xff0c;有時我們會遇到U盤無法打開的情況&#xff0c;這無疑給我們帶來了諸多不便。本文將深入探討U盤打不開的現象、原因及解決方案&#xff0c;并分享如何預防此類問題的發生。 一、U盤無法訪…

Java實現對象存儲的4種方式(本地對象存儲、MINIO、阿里云OSS、FastDFS)

文章目錄 Java實現對象存儲的3中方式1、概述2、本地對象存儲2.1 配置本地文件相關信息2.2 通用映射配置 ResourcesConfig2.3 文件上傳業務 LocalSysFileServiceImpl2.4 上傳接口2.5 演示 3、MINIO3.1 依賴3.2 配置3.3 配置連接信息3.4. MINIO文件上傳業務3.5 文件上傳下載接口3…

學生管理系統 面向對象

創建一個實例對象后 把實例對象添加到列表后 每次遍歷列表 都能獲得一個實例對象 然后就可以使用實例對象的屬性和方法了 學生管理系統 面向對象 兩個類 學生管理類 學生類 # 學生類 # 屬性 姓名 電話 class Student:def __init__(self, name, phone):self.name nameself.phon…

各大翻譯軟件代碼——潯川AI翻譯研發社團

一、前言 有道翻譯API&#xff08;主要推薦&#xff09; 百度翻譯API&#xff08;需要申請key與密鑰&#xff0c;每月100萬免費字符&#xff09; 谷歌翻譯API&#xff08;需要梯子&#xff0c;而且不穩定&#xff0c;不推薦&#xff09; 二、代碼 1、有道翻譯 def is_Chi…

高性價比、超強功能的開源工單解決方案

在企業日常運營中&#xff0c;工單管理系統是不可或缺的工具。高效的工單管理不僅能提升工作效率&#xff0c;還能顯著提高客戶滿意度。今天&#xff0c;我們為您推薦搭貝工單派單系統——一款超高性價比、功能齊全的開源工單管理系統。 &#x1f50d; 為什么選擇搭貝工單派單…

LangChain入門開發教程(一):Model I/O

官方文檔&#xff1a;https://python.langchain.com/docs/get_started/introduction/ LangChain是一個能夠利用大語言模型&#xff08;LLM&#xff0c;Large Language Model&#xff09;能力進行快速應用開發的框架&#xff1a; 高度抽象的組件&#xff0c;可以像搭積木一樣&a…

Nginx R31 doc-17-debugging 調試

前言 大家好&#xff0c;我是老馬。很高興遇到你。 我們為 java 開發者實現了 java 版本的 nginx https://github.com/houbb/nginx4j 如果你想知道 servlet 如何處理的&#xff0c;可以參考我的另一個項目&#xff1a; 手寫從零實現簡易版 tomcat minicat 手寫 nginx 系列 …

【PB案例學習筆記】-13 徒手做個電子時鐘

寫在前面 這是PB案例學習筆記系列文章的第11篇&#xff0c;該系列文章適合具有一定PB基礎的讀者。 通過一個個由淺入深的編程實戰案例學習&#xff0c;提高編程技巧&#xff0c;以保證小伙伴們能應付公司的各種開發需求。 文章中設計到的源碼&#xff0c;小凡都上傳到了gite…

python基礎-數據結構-leetcode刷題必看-queue---隊列-python的底層構建

文章目錄 隊列雙端隊列 deque底層存儲deque接口1. __init__(self, iterable: Iterable[_T], maxlen: int | None None) -> None2. append(self, __x: _T) -> None3. appendleft(self, __x: _T) -> None4. copy(self) -> Self5. count(self, __x: _T) -> int6. …

java項目啟動報錯

java項目啟動報錯&#xff1a;java: java.lang.NoSuchFieldError: Class com.sun.tools.javac.tree.JCTree$JCImport does not have member field ‘com.sun.tools.javac.tree.JCTree qualid’ 原因&#xff1a;編譯和運行的版本不一樣 點擊idea文件 點擊項目結構 把這兩個版本…

軟件架構設計屬性之一:功能性屬性淺析

引言 軟件架構設計屬性中的功能性屬性是評估軟件架構是否滿足其預定功能需求的關鍵指標。功能性屬性確保軟件能夠執行其設計中的任務&#xff0c;并提供所需的服務。以下是對軟件架構設計中功能性屬性的淺析&#xff1a; 一、定義 功能性屬性是指軟件系統所具備的功能特性&a…

解決Android studio 一直提示下載gradle-xxx-all.zip問題

今天用AndroidStdiod打開一個新工程的時候&#xff0c;發現項目一直卡在正在下載gradle-xxx-all.zip的任務上&#xff0c;網絡出奇的慢&#xff0c;即使配了VPN也無濟于事&#xff0c;于是按照以往經驗&#xff1a;將gradle-xxx-all.zip下載到.gradle\gradle\wrapper\dists目錄…

【ESP32之旅】ESP32 PlatformIO 固件單獨燒錄

背景 有時候使用PIO編寫的代碼需要發給客戶去驗證&#xff0c;相比較于發送源碼直接發送bin文件&#xff0c;更加的安全而且高效。不用擔心源碼的泄漏&#xff0c;也不用幫客戶配置PIO環境。 操作方法 1.編譯 首先進行代碼編譯&#xff0c;如編譯成功會在 .pio\build\airm2…

python之any用法

寫法對比 代碼一&#xff1a; any(i for i in [0,1]) 代碼2&#xff1a; any([i for i in [0,1]]) 優劣 結論&#xff1a;代碼一寫法更好 解釋&#xff1a; 在 Python 中&#xff0c;any() 函數可以接受一個可迭代對象作為參數&#xff0c;并返回 True 如果可迭代對象…

詳解 Java 泛型:核心概念與實用示例

詳解 Java 泛型&#xff1a;核心概念與實用示例 Java 泛型&#xff08;Generics&#xff09;是Java SE 5引入的一項特性&#xff0c;旨在提高代碼的可重用性和類型安全性。通過泛型&#xff0c;開發者可以編寫一個通用的類、接口或方法&#xff0c;可以與多種類型一起工作&…

汽車電子學習【車載網絡CAN/LIN】

車載網絡CAN/LIN知識總結 STM32F1開發板測試 STM32測試程序 /** CAN 通信報文內容設置*/ void CAN_SetMsg(void) { #if CAN_STDTxMessage.StdId 0x12;TxMessage.IDE CAN_ID_STD; #elseTxMessage.ExtId 0x1314; //使用的擴展IDTxMessage.IDE CAN_ID_EXT; //擴展模式 #…

C++進程間通信 消息隊列

C進程間通信 消息隊列 消息隊列概述消息隊列代碼示例1. 創建和發送消息的程序&#xff08;sender.cpp&#xff09;2. 接收消息的程序&#xff08;receiver.cpp&#xff09; 代碼解釋運行步驟運行結果 消息隊列概述 消息隊列是一種進程間通信機制&#xff0c;允許一個或多個進程…

Django 做migrations時出錯,解決方案

在做migrations的時候&#xff0c;偶爾會出現出錯。 在已有數據的表中新增字段時&#xff0c;會彈出下面的信息 運行這個命令時 python manage.py makemigrationsTracking file by folder pattern: migrations It is impossible to add a non-nullable field ‘example’ to …