Unity常用[xxx]用法 特性

UnityEngine命名空间下

标记字段

[Space]

可以与上面形成一个空隙,可以带参数[Space(30)]

[Header(“XXX”)]

在Inspector面板上给定义的字段的上一行加段描述,可以将属性隔离开,形成分组的感觉

[Tooltip(“XXX”)]

在Inspector面板上鼠标移上定义的字段弹出描述

[Range(min, max)]

限制数值变量的取值范围并以滑动条显示在Inspector中

[HideInInspector]

使属性在Inspector中隐藏,但是还是可序列化,想赋值可以通过写程序赋值序列化

[System.Serializable]

使自定义的类能进行序列化,即当做一个public成员的时候可以在Inspector显示

[FormerlySerializedAs(“XXX”)]

该属性可以令变量以另外的名称进行序列化,并且在变量自身修改名称的时候,不会丢失之前的序列化的值

[ContextMenuItem(“显示的方法名”,”方法”)]

标记字段,给字段右键菜单段添加一个方法

[MultilineAttribute]

在string类型上使用,可以在Editor上输入多行文字

[TextAreaAttribute]

该属性可以把string在Inspector上的编辑区变成一个TextArea

[NotConvertedAttribute]

在变量上使用,可以指定该变量在build的时候,不要转换为目标平台的类型

[NotFlashValidatedAttribute]

在变量上使用,在Flash平台build的时候,对该变量不进行类型检查。Unity5.0中已经移除了这个属性

[NotRenamedAttribute]

禁止对变量和方法进行重命名。Unity5.0中已经移除了这个属性

标记类/方法

[RequireComponent(typeof(ClassName))]

将被标记的类拖到(或者AddComponent)GameObject上时,自动再给你加上“ClassName”这个类

[ExecuteInEditMode]

在编辑界面让你的功能(类)(非Play模式)起作用

[AddComponentMenu(“XXX/XX/XXX”)]

让Component菜单下出现你自定义的类,位置是“XXX/XX/XXX”

[CustomEditor(typeof(ClassName))]

声明一个Class为自定义Editor的Class,可以制作一个自定义编辑器

[MenuItem(“一级菜单名/二级菜单名 _全局快捷键”]

标记函数:在菜单中出现选项栏,执行对应功能。注:对应的函数必须是static

[MenuItem(“一级菜单名/二级菜单名”,false,1)]

第三个参数决定菜单的优先级。间隔超过10,就另开一组,用下划线分隔

第二个参数是true则是是给该菜单项添加验证,分别标记两个函数,true标记的函数作为false 标记的函数能否启用并执行的验证,菜单名,优先级要相同

GameObject菜单与Hierarchy面板右键菜单一样,优先级在10左右。

Assets菜单与project面板右键菜单一样

菜单名 + _快捷键,给菜单指定单一快捷键

菜单名 + %快捷键,给菜单指定组合快捷键 %-Ctrl #-Shift &-Alt

[ContextMenu(“菜单选项名”)] / [MenuItem(“CONTEXT/组建名/菜单名”)]

标记函数:在Inspector面板,右击包含这条标记的脚本,出现“菜单名”的菜单选项。

注:对应的函数必须是static

标记的函数可以添加 MenuCommand cmd 参数,cmd.context转换为当前组建类型后操作

[CreateAssetMenu(menuName = “MySubMenue/Create XXX “)]

标记类,可以给project面板下的Creat 菜单下新建一个自定义子菜单,用于新建自定义资源

[AssemblyIsEditor]

汇编级属性,使用该属性的Class会被认为是EditorClass。具体用法不明

[DisallowMultipleComponent]

对一个MonoBehaviour的子类使用这个属性,那么在同一个GameObject上面,最多只能添加一个该Class的实例。

尝试添加多个的时候,会出现提示

[ImageEffectOpaque]

在OnRenderImage上使用,可以让渲染顺序在非透明物体之后,透明物体之前

[ImageEffectTransformsToLDR]

渲染从从HDR变为LDR 具体使用方法不明

[RuntimeInitializeOnLoadMethodAttribute]

此属性仅在Unity5上可用。在游戏启动时,会自动调用添加了该属性的方法

[SelectionBaseAttribute]

当一个GameObject含有使用了该属性的Component的时候,在SceneView中选择该GameObject,Hierarchy上面会自动选中该GameObject的Parent

[SharedBetweenAnimatorsAttribute]

用于StateMachineBehaviour上,不同的Animator将共享这一个StateMachineBehaviour的实例,可以减少内存占用

[UnityAPICompatibilityVersionAttribute]

用来声明API的版本兼容性

[CallbackOrderAttribute]

定义Callback的顺序

[UnityAPICompatibilityVersionAttribute]

用来声明API的版本兼容性

[CanEditMultipleObjects]

Editor同时编辑多个Component的功能

[CustomPreview(typeof(GameObject))]

将一个class标记为指定类型的自定义预览

[CustomPropertyDrawer]

标记自定义PropertyDrawer时候使用。当自己创建一个PropertyDrawer或者DecoratorDrawer的时候,使用该属性来标记

[DrawGizmo (GizmoType.Selected | GizmoType.Active)]

以在Scene视图中显示自定义的Gizmo,Gizmo的图片需要放入Assets/Gizmo目录中

[InitializeOnLoad]

在Class上使用,可以在Unity启动的时候,运行Editor脚本。需要该Class拥有静态的构造函数。

[InitializeOnLoadMethod]

在Method上使用,是InitializeOnLoad的Method版本。Method必须是static的

[PreferenceItem (“My Preferences”)]

使用该属性可以定制Unity的Preference界面

[OnOpenAssetAttribute()]

在打开一个Asset后被调用

[PostProcessBuildAttribute()]

该属性是在build完成后,被调用的callback。同时具有多个的时候,可以指定先后顺序

[PostProcessSceneAttribute()]

使用该属性的函数,在scene被build之前,会被调用。具体使用方法和PostProcessBuildAttribute类似

System命名空间下

[SerializeField]

在Inspector版面中显示非public属性,并且序列化

[NonSerialized]

在Inspector版面中隐藏public属性,不执行序列化

UnityEditor命名空间下

[CallbackOrder]

​ 所有带order(顺序)回调属性的特性基类。

[CanEditMultipleObjects]

​ 使自定义编辑器支持同编辑多个对象,一般配合CustomEditor使用类。

[CustomEditor]

​ 要自定义编辑器就要加这个特性。

[CustomPreview ]

​ 添加自定义类型的preview在监视板。

[CustomPropertyDrawer]

​ 自定义属性渲染,如果要自定义PropertyDrawer或 DecoratorDrawer,要加上这个特性

[DrawGizmo]

​ 自定义Gizmo渲染方法任何组件,方法可以定义在任意类而且不用添加到组件,但必须为静态。

[InitializeOnLoad]

​ 当Unity工程装载时,会自动调用一个类来初始化,这个类必须有静态构造函数。

[InitializeOnLoadMethod]

​ 同上,只不过这个是调用静方法。

[MenuItem]

​ 添加菜单项,必须是静态方法。第二个参数若为true,则会先判断改方法是否返回true,若是,则可以使用,若为false,这按钮是不可用的(灰色的)。更多用法看官网教程这里。

[PreferenceItem]

​ 给Preference窗口添加菜单项,调用的也是静态方法。

[Callbacks.DidReloadScripts]

​ 脚本更改或者删减时会回调一次 标记的函数

NetWork

[Command]

由客户端发起,运行在服务器上,方法名必须以Cmd开头

出于安全考虑,命令只能从玩家控制的物体上发出

[ClientRpc]/[RPC]

由服务器发起,运行在客户端上,方法名必须以Rpc开头

可以从任何带有NetworkIdentity并被派生出来的物体上发出

[SyncVar]

同步变量,从服务器同步到客户端上

同步变量的状态在OnStartClient()之前就被应用到物体上了

同步变量可以是基础类型,如整数,字符串和浮点数。也可以是Unity内置数据类型,如Vector3和用户自定义的结构体,但是对结构体类型的同步变量,如果只有几个字段的数值有变化,整个结构体都会被发送。每个NetworkBehaviour脚本可以有最多32个同步变量,包括同步列表

[SyncVar(hook = “Function”)]

同步变量还可以指定函数,使用hook,客户端调用

Function函数有一个 同步变量类型 的参数,参数就是该同步变量的最新值

public void OnChangeHealth(int newHealth){}

[Server]

只执行在服务器端但是不能标识一些特殊函数(可以在这里调用Rpc类函数)

[ServerCallback]

只执行在服务器端,并使一些特殊函数(eg:Update)不报错

若在此函数中改变了带有[SyncVar]的变量,客户端不同步

使用ServerCallback时,将Update中的重要语句摘出来写入Rpc函数中并调用

[Client]

[ClientCallback]

只执行在客户端

[NetworkSettings(channel = 0, sendInterval = 0.333f)]

对组件进行配置

[ClientRpc(channel = 1)]

对方法进行配置,这里仅以 ClientRpc 为例

默认情况下,命令是通过0号通道(默认的可靠传输通道)进行传输的

channel 即通信通道, sendInterval 为发送间隔时间

带有NetworkIdentity的组件在运行之前不能是隐藏的,否则同步会受影响,在代码Start函数中置为SetActive = false,或者因为网络问题一开始隐藏的物体在后续同步中都没有问题

u3d萌新QQ群844087555 欢迎进来灌水=。=

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,384评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,845评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,148评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,640评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,731评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,712评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,703评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,473评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,915评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,227评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,384评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,063评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,706评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,302评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,531评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,321评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,248评论 2 352

推荐阅读更多精彩内容