Script屬性是基于IDE的一系列編譯器屬性
JS中用@script 屬性方法()通路,c#中用[屬性方法()]通路。
一共就隻有9種屬性通路方式:
- AddComponentMenu 在Component菜單中添加新的菜單項
- ContextMenu 在目前腳本的元件中添加右鍵菜單内容
- ExecuteInEditMode 讓目前腳本可以在運作模式中實時更新修改
- HideInInspector 是變量在檢測時不被顯示,但是會被執行個體化?
- NonSerialized 标記一個變量不會被序列化?
- RPC ?
- RenderBeforeQueues 附加一個自定義渲染 在整個引擎渲染隊列之前
- RequireComponent 強制添加一個元件,(限定一定要有某個元件)
-
Serializable 序列化一個類---------------------------------------------------------------------------------------------------------------------------------------------------------------
AddComponentMenu
用法:
@script AddComponentMenu ("Transform/Follow Transform")
class FollowTransform : MonoBehaviour
{
}用處:
可以自己開發元件類,在菜單裡往GameObject裡添加元件執行個體。
------------------------------------------------------------------------------------
ContextMenu
用法:
@ContextMenu ("Update Waypoints")
function UpdateWaypoints()
{
}
用處:
使用目前腳本時候可以用右鍵菜單觸發開發環境中運作的函數
----------------------------------------------------------------------------------------
ExecuteInEditMode
用法:
@script ExecuteInEditMode()用處:
使目前腳本可以在運作中實時更新修改,每幀都會重新導入腳本,可以友善調試使用。
----------------------------------------------------------------------------------------
HideInInspector 用法:
@HideInInspector
var p = 5;用處:
是變量在檢測時不被顯示,但是會被執行個體化??
具體用處不詳,猜測為在腳本外部變量設定的時候不會被顯示,但是會被作用到
-------------------------------------------------------------------------------------------
NonSerialized
用處:
标記一個變量不會被序列化。
具體用處不詳,我了解為不會被外部改變但是可以保持public狀态
-------------------------------------------------------------------------------------------
RPC
什麼鬼東西-.- RPC火箭筒?還是标記他用RPC協定傳輸?反正官網什麼都沒寫。
-------------------------------------------------------------------------------------------
RenderBeforeQueues
用法:
@RenderBeforeQueues(1000, 2000)
function OnRenderObject (queue : int) {
// do some custom rendering...
}用處:
在引擎渲染之前添加一個自定義的渲染
具體用法不詳,裡頭能用什麼東西渲染我也不清楚,還有那個參數我也沒搞明白,以後用到再說吧
--------------------------------------------------------------------------------------------
RequireComponent
用法:
js:
@Script RequireComponent(Rigidbody)
c#:
[RequireComponent (typeof (Rigidbody))]
用處:
強制添加一個元件到這個object上,如果存在,則該元件不允許被删除。
-------------------------------------------------------------------------------------------
Serializable
用法:
js繼承Object類預設就是會被序列化
class Test extends System.Object
{
var p = 5;
var c = Color.white;
}
var test = Test ();
// C# Example
[System.Serializable]
class Test
{
public int p = 5;
public Color c = Color.white;
}用處:
将一個類序列化,(别告訴我不懂什麼叫序列化,就是把一個類按一個格式枚舉,可以用于儲存檔案或者網絡傳輸,但是不知道U3d反序列化怎麼辦-.-)