Script 脚本所有编译器属性详解

本文介绍了Unity中较少见但非常有用的脚本特性,包括自定义组件菜单、上下文菜单、编辑模式执行等功能,帮助开发者更好地管理和调试脚本。
不常用但很实用的一些知识点:
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://tecna.iteye.com/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值