Unity常用[xxx]用法 特性

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_36848370/article/details/82501092

标记字段

[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显示 
[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类似

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] 
只执行在客户端 
Network 
[NetworkSettings(channel = 0, sendInterval = 0.333f)] 
  对组件进行配置 
[ClientRpc(channel = 1)] 
  对方法进行配置,这里仅以 ClientRpc 为例 
  默认情况下,命令是通过0号通道(默认的可靠传输通道)进行传输的 
  channel 即通信通道, sendInterval 为发送间隔时间

猜你喜欢

转载自blog.csdn.net/qq_36848370/article/details/82501092