OOIII/

Unity3D Script脚本编译器属性详解

Script属性是基于IDE的一系列编译器属性。JS中用@script 属性方法()访问,c#中用[属性方法()]访问。

AddComponentMenu:在Component菜单中添加新的菜单项。

用法:

@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; }

用处:将一个类序列化。