[Unity3D]Script 脚本所有编译器属性详解

Script属性是基于IDE的一系列编译器属性
JS中用@script 属性方法()访问,c#中用[属性方法()]访问。
一共就只有9种属性访问方式:

    • AddComponentMenu    在Component菜单中添加新的菜单项
    • ContextMenu      在当前脚本的组件中添加右键菜单内容
    • ExecuteInEditMode    让当前脚本可以在运行模式中实时更新修改
    • HideInInspector        是变量在检测时不被显示,但是会被实例化?
    • NonSerialized       标记一个变量不会被序列化?
    • 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状态
        -------------------------------------------------------------------------------------------

        -------------------------------------------------------------------------------------------
        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反序列化怎么办-.-)
        --------------------------------------------------------------
        目前一些不懂的会在以后用到后再完善

posted on 2017-12-08 01:24  火多多  阅读(417)  评论(0)    收藏  举报

导航