Unity常用[xxx]用法 特性

来源:互联网 发布:阿里数据库在哪里 编辑:程序博客网 时间:2024/06/11 07:06

标记字段

[Space]
  可以与上面形成一个空隙,可以带参数[Space(30)]
[Header(“XXX”)]
  在Inspector面板上给定义的字段的上一行加段描述,可以将属性隔离开,形成分组的感觉
[Tooltip(“XXX”)]
  在Inspector面板上鼠标移上定义的字段弹出描述
[Range(min, max)]
  限制数值变量的取值范围并以滑动条显示在Inspector中
[SerializeField]
  在Inspector版面中显示非public属性,并且序列化
[NonSerialized]
  在Inspector版面中隐藏public属性,不执行序列化
[HideInInspector]
  使属性在Inspector中隐藏,但是还是可序列化,想赋值可以通过写程序赋值序列化
[System.Serializable]
  使自定义的类能进行序列化,即当做一个public成员的时候可以在Inspector显示
[ContextMenuItem(“显示的方法名”,”方法”)]
  标记字段,给字段右键菜单段添加一个方法

标记类/方法

[RequireComponent(typeof(ClassName))]
  将被标记的类拖到(或者AddComponent)GameObject上时,自动再给你加上“ClassName”这个类
[ExecuteInEditMode]
  在编辑界面让你的功能(类)起作用
[AddComponentMenu(“XXX/XX/XXX”)]
  让Component菜单下出现你自定义的类,位置是“XXX/XX/XXX”
[CustomEditor(typeof(ClassName))]
  为一个组件制作一个自定义编辑器
[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 菜单下新建一个自定义子菜单,用于新建自定义资源

NetWork

[Command]
  由客户端发起,运行在服务器上,方法名必须以Cmd开头
  出于安全考虑,命令只能从玩家控制的物体上发出
[ClientRpc]
  由服务器发起,运行在客户端上,方法名必须以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]
只执行在客户端
Network
[NetworkSettings(channel = 0, sendInterval = 0.333f)]
  对组件进行配置
[ClientRpc(channel = 1)]
  对方法进行配置,这里仅以 ClientRpc 为例
  默认情况下,命令是通过0号通道(默认的可靠传输通道)进行传输的
  channel 即通信通道, sendInterval 为发送间隔时间

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