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反序列化怎么办-.-)