Unity3D脚本属性

Unity3D的脚本属性用法:

// JavaScript
@script AddComponentMenu ("Transform/Follow Transform")
// CSharp
[AddComponentMenu("Transform/Follow Transform")]


以下是具体说明(部分无关紧要的不翻译):

AddComponentMenu(函数)

允许你从其他的"Components"菜单途径添加脚本(如果不使用AddComponentMenu那么你只能从Components->Scripts下添加)。注意需restart起效。

ContextMenu

允许为脚本增加一组命令,该属性标记在函数上,而且必须是non-static函数。
假设你为一个脚本move增加了一个ContextMenu属性的方法Do somethine,该方法作用是Debug.Log。这个move脚本attach在一个user身上。那么你选中user时,在inspector面板中对move component右击,就会发现一组命令,点击打印。
这个属性一个有用之处是自动初始化。

ImageEffectOpaque 

Any Image Effect with this attribute will be rendered after opaque geometry but before transparent geometry.

This allows for effects which extensively use the depth buffer (SSAO ect) to only affect opaque pixels. This Attribute can be used to reduce the amount of visual artifacts in a scene with post processing.

ImageEffectTransformsToLDR 

When using HDR rendering it can sometime be desirable to switch to LDR rendering during ImageEffect rendering.

Using this Attribute on an image effect will cause the destination buffer to be an LDR buffer, and switch the rest of the Image Effect pipeline into LDR mode. It is the responsibility of the Image Effect that this Attribute is associated to ensure that the output is in the LDR range.

ExecuteInEditMode

默认脚本组件仅在play mode下执行。增加这组属性后,脚本的callback functions在eidtor下亦可执行。注意,调用频率不同于 Play Mode:
Update只发生在Scene中的一些东西变更。
OnGUI只发生在Game View收获到一组事件。
OnRenderObject以及其他渲染事件只发生在Scene View or Game View 的 repaint 中。

HideInInspector

设置一个变量,不显示在inspector面板,但是  be serialized。

NonSerialized

让一个变量不要 serialized,这样的话你可以保持一个公共变量,但是不显示在inspector面板且不尝试 serialize(即你改动之,下次开启的话仍然是你申明的初始值)。

NotConvertedAttribute 

Instructs the build pipeline not to convert a type or member to the target platform。

NotRenamedAttribute 

Prevent name mangling of constructors, methods, fields and properties.

When applied to a type prevents all its members of being renamed.

It can be used to provide stable member names for access from handwritten ActionScript code or to provide .net stubs for ActionScript types when combined with NotRenamedAttribute 

RPC 

制定一个函数RPC属性,这个方法可以通过Unity Networking来远程访问。该函数必须eixst on both sending and recieving party

RequireComponent 

指明自动增加对应的依赖component。例如:
[RequireComponent (typeof (Rigidbody))]
public class PlayerScript : MonoBehaviour {
void FixedUpdate() {
rigidbody.AddForce(Vector3.up);
}
}

Serializable 

申明这个属性的class,其内部属性可以通过inspector面板访问到。例如:Vector3这样的东东。

SerializeField 

申明一个private变量需要序列化(serialize),正常情况下你不应该需要到这个属性。
注意,serialize是指当你在inspector面板改动一个值时,unity editor会自动记录你的变更。这样你重新开启工程时,unity构建世界时自动使用你上次的值。
posted @ 2012-04-17 16:59  渡蓝  阅读(645)  评论(0编辑  收藏  举报