天天看點

[Unity3D]Script 腳本所有編譯器屬性詳解

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反序列化怎麼辦-.-)

繼續閱讀