[Unity3D]Script 脚本全部编译器属性具体解释
Script属性是基于IDE的一系列编译器属性
JS中用@script 属性方法()訪问,c#中用[属性方法()]訪问。
一共就仅仅有9种属性訪问方式:
· AddComponentMenu 在Component菜单中加入新的菜单项
· ContextMenu 在当前脚本的组件中加入右键菜单内容
· ExecuteInEditMode 让当前脚本能够在执行模式中实时更新改动
· HideInInspector 是变量在检測时不被显示,可是会被实例化?
· NonSerialized 标记一个变量不会被序列化?
· RPC 被给予@RPC (javascript) 或者 [RPC] 属性 (C#)的不论什么方法能够通过Unity Networking(网络)被远程调用。这种方法必须在发送和接收部分都存在。
· 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反序列化怎么办-.-)