找回密码
 注册帐号

扫一扫,访问微社区

开果 Unity常用[xxx]用法 特性

14
回复
977
查看
打印 上一主题 下一主题
[ 复制链接 ]

8

主题

12

帖子

114

积分

Rank: 9Rank: 9Rank: 9

UID
327626
好友
1
蛮牛币
78
威望
0
注册时间
2019-7-19
在线时间
82 小时
最后登录
2019-8-24

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册帐号

x
本帖最后由 开果 于 2019-7-27 08:53 编辑

大家好我是匠人团队的开果



今天写一下Unity常用[xxx]用法 特性



UnityEngine命名空间下
标记字段
[size=9.7541pt][Space]
可以与上面形成一个空隙,可以带参数[Space(30)]
[size=9.7541pt][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的时候,对该变量不进行类型检查。.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(“一级菜单名/二级菜单名
第三个参数决定菜单的优先级。间隔超过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的
实例。尝试添加多个的时候,会出现提示
[ImageEffffectOpaque]
在OnRenderImage上使用,可以让渲染顺序在非透明物体之后,透明物体之前
[ImageEffffectTransformsToLDR]
渲染从从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,或者因为网络问题一开始隐藏的物体在后续同步中都没有问题




好了 后面几篇可能都是出Socket 一个简单的类库,和框架,还有游戏案例


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



点评

谢谢大佬的分享  发表于 2019-7-26 09:21
参与人数 2鲜花 +4 收起 理由
拿走不谢 + 2 很给力!
maxcs2012 + 2 赞一个!

查看全部评分总评分 : 鲜花 +4

回复

使用道具 举报

5熟悉之中
757/1000
排名
4197
昨日变化

5

主题

88

帖子

757

积分

Rank: 5Rank: 5

UID
271244
好友
1
蛮牛币
2982
威望
0
注册时间
2018-3-7
在线时间
314 小时
最后登录
2019-8-24
沙发
2019-7-25 18:54:26 只看该作者
好多没有见过的,收藏了⭐
回复 支持 反对

使用道具 举报

3偶尔光临
202/300
排名
11988
昨日变化

0

主题

22

帖子

202

积分

Rank: 3Rank: 3Rank: 3

UID
179424
好友
0
蛮牛币
1555
威望
0
注册时间
2016-10-30
在线时间
100 小时
最后登录
2019-8-20
板凳
2019-7-26 08:52:03 只看该作者
学习了~
回复

使用道具 举报

5熟悉之中
674/1000
排名
5900
昨日变化

0

主题

321

帖子

674

积分

Rank: 5Rank: 5

UID
11484
好友
0
蛮牛币
45
威望
0
注册时间
2013-12-31
在线时间
117 小时
最后登录
2019-8-24
地板
2019-7-26 09:06:52 只看该作者
学习了~
回复

使用道具 举报

7日久生情
1636/5000
排名
1516
昨日变化

0

主题

272

帖子

1636

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
151586
好友
0
蛮牛币
1920
威望
0
注册时间
2016-6-11
在线时间
526 小时
最后登录
2019-8-23
QQ
5#
2019-7-26 10:30:35 只看该作者
6666666666666666666
回复 支持 反对

使用道具 举报

5熟悉之中
870/1000
排名
3865
昨日变化

17

主题

160

帖子

870

积分

Rank: 5Rank: 5

UID
213816
好友
9
蛮牛币
1364
威望
0
注册时间
2017-3-22
在线时间
297 小时
最后登录
2019-8-23
6#
2019-7-26 10:57:05 只看该作者
6666666666666666666666
回复 支持 反对

使用道具 举报

3偶尔光临
163/300
排名
31432
昨日变化

9

主题

36

帖子

163

积分

Rank: 3Rank: 3Rank: 3

UID
311234
好友
1
蛮牛币
536
威望
0
注册时间
2019-1-9
在线时间
108 小时
最后登录
2019-8-23
7#
2019-7-26 11:21:45 只看该作者
偷偷的学一下!!!
回复

使用道具 举报

5熟悉之中
722/1000
排名
4720
昨日变化

1

主题

53

帖子

722

积分

Rank: 5Rank: 5

UID
222228
好友
0
蛮牛币
1834
威望
0
注册时间
2017-5-15
在线时间
358 小时
最后登录
2019-8-23
8#
2019-7-26 14:06:26 只看该作者
这个群怎么搜不到呢
回复 支持 反对

使用道具 举报

8

主题

12

帖子

114

积分

Rank: 9Rank: 9Rank: 9

UID
327626
好友
1
蛮牛币
78
威望
0
注册时间
2019-7-19
在线时间
82 小时
最后登录
2019-8-24
9#
楼主 2019-7-26 14:15:23 只看该作者

少写了个5
回复 支持 反对

使用道具 举报

8

主题

12

帖子

114

积分

Rank: 9Rank: 9Rank: 9

UID
327626
好友
1
蛮牛币
78
威望
0
注册时间
2019-7-19
在线时间
82 小时
最后登录
2019-8-24
10#
楼主 2019-7-26 14:16:51 只看该作者

844087555
回复 支持 反对

使用道具 举报

6蛮牛粉丝
1336/1500
排名
4197
昨日变化

0

主题

167

帖子

1336

积分

Rank: 6Rank: 6Rank: 6

UID
42059
好友
0
蛮牛币
70
威望
0
注册时间
2014-8-26
在线时间
819 小时
最后登录
2019-8-23
11#
2019-7-26 21:07:47 只看该作者
说句感谢,都太轻了,谢谢
回复 支持 反对

使用道具 举报

3偶尔光临
210/300
排名
22153
昨日变化

0

主题

72

帖子

210

积分

Rank: 3Rank: 3Rank: 3

UID
133679
好友
0
蛮牛币
261
威望
0
注册时间
2016-1-6
在线时间
116 小时
最后登录
2019-8-23
12#
2019-7-29 17:21:21 只看该作者
这样的总结不错
回复

使用道具 举报

4四处流浪
430/500
排名
26985
昨日变化

0

主题

167

帖子

430

积分

Rank: 4

UID
45969
好友
0
蛮牛币
302
威望
0
注册时间
2014-9-21
在线时间
249 小时
最后登录
2019-8-23
13#
2019-7-30 15:17:56 只看该作者
66666666666666666666666666脑子进水
回复 支持 反对

使用道具 举报

6蛮牛粉丝
1116/1500
排名
2867
昨日变化

0

主题

248

帖子

1116

积分

Rank: 6Rank: 6Rank: 6

UID
80761
好友
1
蛮牛币
1732
威望
0
注册时间
2015-3-17
在线时间
354 小时
最后登录
2019-8-23
QQ
14#
前天 17:20 只看该作者
学习了~
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册帐号

本版积分规则