找回密碼
 注冊帳號

掃一掃,訪問微社區

開果 Unity常用[xxx]用法 特性

13
回復
873
查看
打印 上一主題 下一主題
[ 復制鏈接 ]

6

主題

10

帖子

96

積分

Rank: 9Rank: 9Rank: 9

UID
327626
好友
1
蠻牛幣
62
威望
0
注冊時間
2019-7-19
在線時間
68 小時
最后登錄
2019-8-16

馬上注冊,結交更多好友,享用更多功能,讓你輕松玩轉社區。

您需要 登錄 才可以下載或查看,沒有帳號?注冊帳號

x
本帖最后由 開果 于 2019-7-27 08:53 編輯

大家好我是匠人團隊的開果



今天寫一下Unity常用[xxx]用法 特性



UnityEngine命名空間下
標記字段
[size=9.7541pt][Space]
可以與上面形成一個空隙,可以帶參數[Space(30)]
[size=9.7541pt][Header(“XXX”)]
在Inspector面板上給定義的字段的上一行加段描述,可以將屬性隔離開,形成分組的感覺
[Tooltip(“XXX”)]
在Inspector面板上鼠標移上定義的字段彈出描述
[Range(min, max)]
限制數值變量的取值范圍并以滑動條顯示在Inspector中
[HideInInspector]
使屬性在Inspector中隱藏,但是還是可序列化,想賦值可以通過寫程序賦值序列化
[System.Serializable]
使自定義的類能進行序列化,即當做一個public成員的時候可以在Inspector顯示
[FormerlySerializedAs(“XXX”)]
該屬性可以令變量以另外的名稱進行序列化,并且在變量自身修改名稱的時候,不會丟失之前的序列化的值
[ContextMenuItem(“顯示的方法名”,”方法
標記字段,給字段右鍵菜單段添加一個方法
[MultilineAttribute]
在string類型上使用,可以在Editor上輸入多行文字
[TextAreaAttribute]
該屬性可以把string在Inspector上的編輯區變成一個TextArea
[NotConvertedAttribute]
在變量上使用,可以指定該變量在build的時候,不要轉換為目標平臺的類型
[NotFlashValidatedAttribute]
在變量上使用,在Flash平臺build的時候,對該變量不進行類型檢查。.0中已經移除了這個屬性[NotRenamedAttribute]
禁止對變量和方法進行重命名。Unity5.0中已經移除了這個屬性
標記類/方法
[RequireComponent(typeof(ClassName))]
將被標記的類拖到(或者AddComponent)GameObject上時,自動再給你加上“ClassName”這個類
[ExecuteInEditMode]
在編輯界面讓你的功能(類)(非Play模式)起作用
[AddComponentMenu(“XXX/XX/XXX”)]
讓Component菜單下出現你自定義的類,位置是“XXX/XX/XXX”
[CustomEditor(typeof(ClassName))]
聲明一個Class為自定義Editor的Class,可以制作一個自定義編輯器
[MenuItem(“一級菜單名/二級菜單名 _全局快捷鍵
標記函數:在菜單中出現選項欄,執行對應功能。注:對應的函數必須是static
[MenuItem(“一級菜單名/二級菜單名
第三個參數決定菜單的優先級。間隔超過10,就另開一組,用下劃線分隔
第二個參數是true則是是給該菜單項添加驗證,分別標記兩個函數,true標記的函數作為false 標記的函數能
否啟用并執行的驗證,菜單名,優先級要相同
GameObject菜單與Hierarchy面板右鍵菜單一樣,優先級在10左右。
Assets菜單與project面板右鍵菜單一樣
菜單名 + _快捷鍵,給菜單指定單一快捷鍵
菜單名 + %快捷鍵,給菜單指定組合快捷鍵 %-Ctrl #-Shift &-Alt

[ContextMenu(“菜單選項名”)] / [MenuItem(“CONTEXT/組建名/菜單名

標記函數:在Inspector面板,右擊包含這條標記的腳本,出現“菜單名”的菜單選項。
注:對應的函數必須是static
標記的函數可以添加 MenuCommand cmd 參數,cmd.context轉換為當前組建類型后操作
[CreateAssetMenu(menuName = “MySubMenue/Create XXX “)]
標記類,可以給project面板下的Creat 菜單下新建一個自定義子菜單,用于新建自定義資源
[AssemblyIsEditor]
匯編級屬性,使用該屬性的Class會被認為是EditorClass。具體用法不明
[DisallowMultipleComponent]
對一個MonoBehaviour的子類使用這個屬性,那么在同一個GameObject上面,最多只能添加一個該Class的
實例。嘗試添加多個的時候,會出現提示
[ImageEffffectOpaque]
在OnRenderImage上使用,可以讓渲染順序在非透明物體之后,透明物體之前
[ImageEffffectTransformsToLDR]
渲染從從HDR變為LDR 具體使用方法不明
[RuntimeInitializeOnLoadMethodAttribute]
此屬性僅在Unity5上可用。在游戲啟動時,會自動調用添加了該屬性的方法
[SelectionBaseAttribute]
當一個GameObject含有使用了該屬性的Component的時候,在SceneView中選擇該GameObject,
Hierarchy上面會自動選中該GameObject的Parent
[SharedBetweenAnimatorsAttribute]
用于StateMachineBehaviour上,不同的Animator將共享這一個StateMachineBehaviour的實例,可以減少
內存占用
[UnityAPICompatibilityVersionAttribute]
用來聲明API的版本兼容性
[CallbackOrderAttribute]
定義Callback的順序
[UnityAPICompatibilityVersionAttribute]
用來聲明API的版本兼容性
[CanEditMultipleObjects]
Editor同時編輯多個Component的功能
[CustomPreview(typeof(GameObject))]
將一個class標記為指定類型的自定義預覽
[CustomPropertyDrawer]
標記自定義PropertyDrawer時候使用。當自己創建一個PropertyDrawer或者DecoratorDrawer的時候,使用
該屬性來標記
[DrawGizmo (GizmoType.Selected | GizmoType.Active)]
以在Scene視圖中顯示自定義的Gizmo,Gizmo的圖片需要放入Assets/Gizmo目錄中
[InitializeOnLoad]
在Class上使用,可以在Unity啟動的時候,運行Editor腳本。需要該Class擁有靜態的構造函數。
[InitializeOnLoadMethod]
在Method上使用,是InitializeOnLoad的Method版本。Method必須是static的
[PreferenceItem (“My Preferences”)]使用該屬性可以定制Unity的Preference界面
[OnOpenAssetAttribute()]
在打開一個Asset后被調用
[PostProcessBuildAttribute()]
該屬性是在build完成后,被調用的callback。同時具有多個的時候,可以指定先后順序
[PostProcessSceneAttribute()]
使用該屬性的函數,在scene被build之前,會被調用。具體使用方法和PostProcessBuildAttribute類似
System命名空間下
[SerializeField]
在Inspector版面中顯示非public屬性,并且序列化
[NonSerialized]
在Inspector版面中隱藏public屬性,不執行序列化
UnityEditor命名空間下
[CallbackOrder]
所有帶order(順序)回調屬性的特性基類。
[CanEditMultipleObjects]
使自定義編輯器支持同編輯多個對象,一般配合CustomEditor使用類。
[CustomEditor]
要自定義編輯器就要加這個特性。
[CustomPreview ]
添加自定義類型的preview在監視板。
[CustomPropertyDrawer]
自定義屬性渲染,如果要自定義PropertyDrawer或 DecoratorDrawer,要加上這個特性
[DrawGizmo]
自定義Gizmo渲染方法任何組件,方法可以定義在任意類而且不用添加到組件,但必須為靜態。
[InitializeOnLoad]
當Unity工程裝載時,會自動調用一個類來初始化,這個類必須有靜態構造函數。
[InitializeOnLoadMethod]
同上,只不過這個是調用靜方法。[MenuItem]
添加菜單項,必須是靜態方法。第二個參數若為true,則會先判斷改方法是否返回true,若是,則可以使用,若為
false,這按鈕是不可用的(灰色的)。更多用法看官網教程這里。
[PreferenceItem]
給Preference窗口添加菜單項,調用的也是靜態方法。
[Callbacks.DidReloadScripts]
腳本更改或者刪減時會回調一次 標記的函數
NetWork
[Command]
由客戶端發起,運行在服務器上,方法名必須以Cmd開頭
出于安全考慮,命令只能從玩家控制的物體上發出
[ClientRpc]/[RPC]
由服務器發起,運行在客戶端上,方法名必須以Rpc開頭
可以從任何帶有NetworkIdentity并被派生出來的物體上發出
[SyncVar]
同步變量,從服務器同步到客戶端上
同步變量的狀態在OnStartClient()之前就被應用到物體上了
同步變量可以是基礎類型,如整數,字符串和浮點數。也可以是Unity內置數據類型,如Vector3和用戶自定義
的結構體,但是對結構體類型的同步變量,如果只有幾個字段的數值有變化,整個結構體都會被發送。每個
NetworkBehaviour腳本可以有最多32個同步變量,包括同步列表
[SyncVar(hook = “Function”)]
同步變量還可以指定函數,使用hook,客戶端調用
Function函數有一個 同步變量類型 的參數,參數就是該同步變量的最新值
public void OnChangeHealth(int newHealth){}
[Server]
只執行在服務器端但是不能標識一些特殊函數(可以在這里調用Rpc類函數)
[ServerCallback]
只執行在服務器端,并使一些特殊函數(eg:Update)不報錯
若在此函數中改變了帶有[SyncVar]的變量,客戶端不同步
使用ServerCallback時,將Update中的重要語句摘出來寫入Rpc函數中并調用
[Client][ClientCallback]
只執行在客戶端
[NetworkSettings(channel = 0, sendInterval = 0.333f)]
對組件進行配置
[ClientRpc(channel = 1)]
對方法進行配置,這里僅以 ClientRpc 為例
默認情況下,命令是通過0號通道(默認的可靠傳輸通道)進行傳輸的
channel 即通信通道, sendInterval 為發送間隔時間
帶有NetworkIdentity的組件在運行之前不能是隱藏的,否則同步會受影響,在代碼Start函數中置為SetActive =
false,或者因為網絡問題一開始隱藏的物體在后續同步中都沒有問題




好了 后面幾篇可能都是出Socket 一個簡單的類庫,和框架,還有游戲案例


u3d萌新QQ群844087555 歡迎進來灌水=。=



點評

謝謝大佬的分享  發表于 2019-7-26 09:21
參與人數 2鮮花 +4 收起 理由
拿走不謝 + 2 很給力!
maxcs2012 + 2 贊一個!

查看全部評分總評分 : 鮮花 +4

回復

使用道具 舉報

5熟悉之中
747/1000
排名
4197
昨日變化

5

主題

88

帖子

747

積分

Rank: 5Rank: 5

UID
271244
好友
1
蠻牛幣
2900
威望
0
注冊時間
2018-3-7
在線時間
304 小時
最后登錄
2019-8-16
沙發
2019-7-25 18:54:26 只看該作者
好多沒有見過的,收藏了?
回復 支持 反對

使用道具 舉報

3偶爾光臨
201/300
排名
11988
昨日變化

0

主題

22

帖子

201

積分

Rank: 3Rank: 3Rank: 3

UID
179424
好友
0
蠻牛幣
1537
威望
0
注冊時間
2016-10-30
在線時間
99 小時
最后登錄
2019-8-16
板凳
2019-7-26 08:52:03 只看該作者
學習了~
回復

使用道具 舉報

5熟悉之中
665/1000
排名
5899
昨日變化

0

主題

316

帖子

665

積分

Rank: 5Rank: 5

UID
11484
好友
0
蠻牛幣
48
威望
0
注冊時間
2013-12-31
在線時間
113 小時
最后登錄
2019-8-16
地板
2019-7-26 09:06:52 只看該作者
學習了~
回復

使用道具 舉報

7日久生情
1631/5000
排名
1516
昨日變化

0

主題

270

帖子

1631

積分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
151586
好友
0
蠻牛幣
1944
威望
0
注冊時間
2016-6-11
在線時間
523 小時
最后登錄
2019-8-14
QQ
5#
2019-7-26 10:30:35 只看該作者
6666666666666666666
回復 支持 反對

使用道具 舉報

5熟悉之中
868/1000
排名
3865
昨日變化

17

主題

160

帖子

868

積分

Rank: 5Rank: 5

UID
213816
好友
9
蠻牛幣
1333
威望
0
注冊時間
2017-3-22
在線時間
295 小時
最后登錄
2019-8-15
6#
2019-7-26 10:57:05 只看該作者
6666666666666666666666
回復 支持 反對

使用道具 舉報

3偶爾光臨
152/300
排名
31432
昨日變化

9

主題

35

帖子

152

積分

Rank: 3Rank: 3Rank: 3

UID
311234
好友
1
蠻牛幣
503
威望
0
注冊時間
2019-1-9
在線時間
98 小時
最后登錄
2019-8-16
7#
2019-7-26 11:21:45 只看該作者
偷偷的學一下!!!
回復

使用道具 舉報

5熟悉之中
719/1000
排名
4720
昨日變化

1

主題

53

帖子

719

積分

Rank: 5Rank: 5

UID
222228
好友
0
蠻牛幣
1794
威望
0
注冊時間
2017-5-15
在線時間
355 小時
最后登錄
2019-8-16
8#
2019-7-26 14:06:26 只看該作者
這個群怎么搜不到呢
回復 支持 反對

使用道具 舉報

6

主題

10

帖子

96

積分

Rank: 9Rank: 9Rank: 9

UID
327626
好友
1
蠻牛幣
62
威望
0
注冊時間
2019-7-19
在線時間
68 小時
最后登錄
2019-8-16
9#
樓主 2019-7-26 14:15:23 只看該作者

少寫了個5
回復 支持 反對

使用道具 舉報

6

主題

10

帖子

96

積分

Rank: 9Rank: 9Rank: 9

UID
327626
好友
1
蠻牛幣
62
威望
0
注冊時間
2019-7-19
在線時間
68 小時
最后登錄
2019-8-16
10#
樓主 2019-7-26 14:16:51 只看該作者

844087555
回復 支持 反對

使用道具 舉報

6蠻牛粉絲
1331/1500
排名
4197
昨日變化

0

主題

167

帖子

1331

積分

Rank: 6Rank: 6Rank: 6

UID
42059
好友
0
蠻牛幣
75
威望
0
注冊時間
2014-8-26
在線時間
814 小時
最后登錄
2019-8-16
11#
2019-7-26 21:07:47 只看該作者
說句感謝,都太輕了,謝謝
回復 支持 反對

使用道具 舉報

3偶爾光臨
199/300
排名
22153
昨日變化

0

主題

68

帖子

199

積分

Rank: 3Rank: 3Rank: 3

UID
133679
好友
0
蠻牛幣
247
威望
0
注冊時間
2016-1-6
在線時間
109 小時
最后登錄
2019-8-16
12#
2019-7-29 17:21:21 只看該作者
這樣的總結不錯
回復

使用道具 舉報

4四處流浪
429/500
排名
26985
昨日變化

0

主題

167

帖子

429

積分

Rank: 4

UID
45969
好友
0
蠻牛幣
298
威望
0
注冊時間
2014-9-21
在線時間
248 小時
最后登錄
2019-8-16
13#
2019-7-30 15:17:56 只看該作者
66666666666666666666666666腦子進水
回復 支持 反對

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 注冊帳號

本版積分規則

捕鱼王怎么进不去 捕鱼达人千炮版官方版 北京pk赛车直播开奖视频 重庆时时彩杀一位 足球单双有规律吗 竞彩足球手机版 腾讯时时彩官网开奖 三式投注什么意思 广东时时一注多少钱 麻将二八杠生死门口诀 腾讯分分彩组选包胆怎么看 765彩票 安徽时时网站 欢乐生肖开奖历史走势图 赌龙虎技巧 云南时时几点开奖 星罗欢乐斗地主捕鱼版