【转】Unity3D中脚本编译器属性访问针对c#和JS的不同访问方式

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反序列化怎么办-.-)
    • 转自http://blog.163.com/kingmax_res/blog/static/77282442201031712215404/
posted @ 2014-08-18 16:37  yurong3000  阅读(497)  评论(0编辑  收藏  举报