Unity Editor 基礎篇:Build-In Attribute
Attributes屬性:
屬於U3D的RunTimeClass,所以要加上名稱空間: using UnityEngine; using System.Collections;
1.AddComponentMenu AddComponentMenu 屬性允許將一個指令碼新增到 Component 選單中,然後你便可以通過 Component ->(你設定的名字)為一個選中的遊戲物件建立該指令碼,如下所示:
[AddComponentMenu("Learning/People")]public class People : MonoBehaviour {}
2.RequireComponent() RequireComponent()屬性會自動幫你新增你需要的元件,如果已經存在則不再重複新增,且不能移除,如下所示:
[AddComponentMenu("Learning/People")][RequireComponent(typeof(Rigidbody))]public class People : MonoBehaviour {}
提示:經過測試,我發現一個問題,如果指令碼已經掛在物體身上,然後再修改指令碼,為新增 RequireComponent 屬性的話,完全不起作用,因此建議大家在用此屬性的時候要注意。
3.ContextMenu()、ContextMenuItem() ContextMenu()屬性允許新增一個命令到該元件上,你可以通過右鍵或者點選設定圖示來呼叫到它(一般用於函式),且是在非執行狀態下執行該函式; ContextMenuItem()屬性允許新增一個命令到該變數上,可通過右擊變數來呼叫對應方法 如下所示:
[AddComponentMenu("Learning/People")][RequireComponent(typeof(Rigidbody))]
public class People : MonoBehaviour {
public string name;
public int age;
[ContextMenu("OutputInfo")]
void OutputInfo()
{ print(name+"|"+age); }}
public class People : MonoBehaviour {
[ContextMenuItem("右擊時顯示名", "OutputInfo")]
public int age;
public string name="Hia";
void OutputInfo()
{
print(name+"|"+age); }
}
4.HelpURL() HelpURL()提供一個自定義的文件連結,點選元件上的文件圖示既能開啟到你指定的連結,如下所示:
[HelpURL("http://www.baidu.com")]
public class People : MonoBehaviour
{
public string name;
public int age;
}
提示:填寫連結時,一定要寫上 http:// 或者 https://,否則將無任何反應。
5.InitializeOnLoad 啟動事件監聽 [InitializeOnLoad] :在啟動Unity的時候執行編輯器指令碼**
6.Range()、Multiline()、header() Range()屬性用於將一個值指定在一定的範圍內,並在Inspector皮膚中為其新增滑塊; Multiline()屬性用於給 string 型別新增多行輸入; header()屬性用於新增屬性的標題,具體操作如下所示:
public class People : MonoBehaviour {
[Header("BaseInfo")] [Multiline(5)]
public string name;
[Range(-2,2)]
public int age;
}
簡單的分解一下:
1/ 第9行,我們使用了 [Header(“BaseInfo”)] 為其設定了標題(為“BaseInfo”),如上圖所示。 2/ 第10行,我們使用了 [Multiline(5)] 為其 name 屬性新增了5行輸入,如上圖所示,明顯輸入框變大了。 3/ 第12行,我們使用了 [Range(-2,2)] 為其 age 屬性指定了一個(-2,2)的範圍,並且為其新增了一個滑塊,如上圖所示。
7.Tooltip()、Space() Tooptip()屬性用於在 Inspector 皮膚中,當滑鼠停留在設定了Tooptip()的屬性新增指定的提示; Space()用於為在 Inspector 皮膚兩屬性之間新增指定的距離,如下所示:
public class People : MonoBehaviour {
[Header("BaseInfo")] [Multiline(5)]
public string name;
[Range(-2, 2)]
public int age;
[Space(100)] [Tooltip("用於設定性別!")]
public string sex;
}
**8.Serializable、SerializeField **1/ Serializable這個屬性可以讓子類(繼承類)的變數屬性顯示在檢視皮膚中,也能序列化它。(JS的話完全不需要這個屬性。)
[System.Serializable]
public class Boy{
public int stength;
}
public class People : MonoBehaviour
{
public Boy bb;
}
2/ SerializeField 序列化域(強制序列化):可以將私有變數序列化,將U3D的內建變數序列化等。
[SerializeField, Range(-2, 2)]
private int age;
當然公有變數也可以在皮膚隱藏: [HideInInspector] 皮膚隱藏 [NonSerialized] 不被序列化(不被序列化且不在皮膚顯示)
Unity可以序列化的型別如下:
文末:再次宣告請尊重樓主版權: http://mp.weixin.qq.com/s/g7nClmQGPwU2o4yyBm6LcQ
相關文章
- Unity基礎——InputUnity
- Unity基礎——.meta檔案Unity
- 洞明 Unity ECS 基礎概念Unity
- UNITY指令碼基礎感悟:速度;Unity指令碼
- 基礎篇
- 【基礎篇索引】索引基礎(四)索引
- 【基礎篇索引】索引基礎(三)索引
- 【基礎篇索引】索引基礎(二)索引
- 【基礎篇索引】索引基礎(一)索引
- Unity基礎-指令碼生命週期Unity指令碼
- Unity3D 基礎自學學習筆記(二) Unity3D 基礎控制元件Unity3D筆記控制元件
- vuex - 基礎篇Vue
- Docker|基礎篇Docker
- Maven——基礎篇Maven
- Git——基礎篇Git
- Hbase基礎篇
- Java基礎篇Java
- redis基礎篇Redis
- Websocket 基礎篇Web
- postfix基礎篇
- EMC 基礎篇
- Python基礎篇-Python基礎01Python
- 爬蟲基礎篇爬蟲
- React基礎篇1React
- React基礎篇2React
- 初探TypeScript 基礎篇TypeScript
- Sass/Scss 基礎篇CSS
- Nginx-基礎篇Nginx
- JAVA精髓(基礎篇)Java
- Python基礎篇Python
- CSS基礎篇(一)CSS
- ORACLE ASM 基礎篇OracleASM
- Docker-基礎篇Docker
- JS 基礎篇(代理模式)JS模式
- 【JAVA】【面試】【基礎篇】- 集合Java面試
- PowerShell 筆記 - 基礎篇筆記
- vue系列基礎篇(一)Vue
- Java基礎-面相物件篇Java物件