• Unity常用[xxxxx]用法


    标记字段
    [Space]
      可以与上面形成一个空隙,可以带参数[Space(30)]
    [Header(“XXX”)]
      在Inspector面板上给定义的字段的上一行加段描述,可以将属性隔离开,形成分组的感觉
    [Tooltip(“XXX”)]
      给一个变量添加这个属性后,在Inspector面板将鼠标悬停在该变量上可以显示提示
    [Range(min, max)]`
      限制数值变量的取值范围并以滑动条显示在Inspector中
    [Min(min)]
      限制一个 float,int 类型的变量的最小值(测试2018,2019不能正常使用,据说2020修复了这个bug)
    [SerializeField]
      强制序列化一个私有的变量,使其可以在Inspector面板显示,很多UI都会对private的组件进行强制序列化
    [NonSerialized]
      在Inspector版面中隐藏public属性,不执行序列化
    [HideInInspector]
      使属性在Inspector中隐藏,但是还是可序列化,想赋值可以通过写程序赋值序列化
    [System.Serializable]
      使自定义的类能进行序列化,即当做一个public成员的时候可以在Inspector显示
    [InspectorName(“枚举A”)]
      标记枚举类型的枚举值,可以使枚举值在Inspector上显示的名字改变
    [FormerlySerializedAs(“XXX”)]
      使变量以另外的名称进行序列化,并且在变量自身修改名称的时候,不会丢失之前的序列化的值
    [ContextMenuItem(“显示的方法名”,“方法”)]
      标记字段,在Inspector面板上给字段右键段添加一个菜单,不能是静态函数
    [Multiline]
      添加在string类型的变量上,可以在Inspector面板上显示一个多行文本框
    [TextArea]
      该属性可以把string在Inspector面板上变为一个带有滚动条的文本域
    [NotConverted]
      在变量上使用,可以指定该变量在build的时候,不要转换为目标平台的类型
    [NotFlashValidated]
      在变量上使用,在Flash平台build的时候,对该变量不进行类型检查。Unity5.0中已经移除了这个属性 
    [NotRenamed]
      禁止对变量和方法进行重命名。Unity5.0中已经移除了这个属性
    [ColorUsage(false, true, 0f, 8f, 1f, 1f)]
      第一个参数:是否启用 Alpha 通道
      第二个参数:是否启用 HDR 模式,启用后多四个参数为 最小/最大亮度,最小/最大曝光度
    [GradientUsage]
      给一个 Gradient 类型的变量添加这个属性用来设置是否为 HDR 渐变模式
    [Delayed]
      标记int/float/string类型的变量,在Inspector面板修改变量值时,只有按下Enter键 或 鼠标失去焦点后值才会改变

    标记类/方法
    [RequireComponent(typeof(ClassName))]
      将被标记的类拖到(或者AddComponent)GameObject上时,自动再给你加上“ClassName”这个类,如果已经存在该组件不会重复添加,且不能移除该组件
    [ExecuteAlways]
       添加这个属性后脚本无论是在 Edit Mode 还是 Play Mode 都会执行。(每次切换状态时要运行一次)
    [ExecuteInEditMode]
      在编辑界面让你的功能(类)(非Play模式)起作用
      添加这个属性后的脚本可以在EditMode下执行,要注意的是有些函数的执行方式与PlayMode不同:
      Update :编辑器中某个组件发生变化(如在编辑器中修改数值)=> 触发
      OnGUI :当 GameView 收到一个 Event 时 => 触发
    [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 菜单下新建一个自定义子菜单,用于新建自定义资源
    [PreferBinarySerialization]
      只能用于 ScriptableObject 的派生类,使用二进制进行序列化。这个属性可以提升大量数据资源文件的读写性能。可以搭配 CreateAssetMenu 属性一起使用
    [SerializeReference]
      序列化时共享相同的对象数据,可以用来减少序列化的内容
    [GUITarget(0)]
      标记OnGUI()函数,控制对应的 OnGUI 在哪个 Display 显示
    [HelpURL(“http://www.baidu.com”)]
      标记一个类提供一个帮助文档的URL,点击后可以跳转到该网址(与自带组件点击小树效果相同)
    [AssemblyIsEditor]
      汇编级属性,使用该属性的Class会被认为是EditorClass。具体用法不明
    [DisallowMultipleComponent]
      对一个MonoBehaviour的子类使用这个属性,那么在同一个GameObject上面,最多只能添加一个该Class的实例。尝试添加多个的时候,会出现提示
    [ImageEffectOpaque]
      在OnRenderImage上使用,可以让渲染顺序在非透明物体之后,透明物体之前
    [ImageEffectTransformsToLDR]
      渲染从从HDR变为LDR 具体使用方法不明
    [RuntimeInitializeOnLoadMethod]
      此属性仅在Unity5上可用。在游戏启动时(runtime),会自动调用添加了该属性的方法(Awake之后)。要注意的是使用这个属性的方法的调用顺序是不确定的,同时要求方法为静态
    [SelectionBase]
      当一个GameObject含有使用了该属性的Component的时候,在SceneView中选择该GameObject,Hierarchy上面会自动选中该GameObject的Parent
    [SharedBetweenAnimators]
      用于StateMachineBehaviour上,指定该StateMachineBehavior只实例化一次,不同的Animator将共享这一个StateMachineBehaviour的实例,可以减少内存占用
    [UnityAPICompatibilityVersion]
      用来声明API的版本兼容性
    [CallbackOrderAttribute]
      定义Callback的顺序
    [UnityAPICompatibilityVersion]
      用来声明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界面
    [OnOpenAsset()]
      在打开一个Asset后被调用
    [PostProcessBuild()]
      该属性是在build完成后,被调用的callback。同时具有多个的时候,可以指定先后顺序
    [PostProcessScene()]
      使用该属性的函数,在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]
    只执行在客户端

    [NetworkSettings(channel = 0, sendInterval = 0.333f)]
      对组件进行配置
    [ClientRpc(channel = 1)]
      对方法进行配置,这里仅以 ClientRpc 为例
      默认情况下,命令是通过0号通道(默认的可靠传输通道)进行传输的
      channel 即通信通道, sendInterval 为发送间隔时间

    带有NetworkIdentity的组件在运行之前不能是隐藏的,否则同步会受影响,在代码Start函数中置为SetActive = false,或者因为网络问题一开始隐藏的物体在后续同步中都没有问题
    ————————————————
    版权声明:本文为CSDN博主「第五君」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/FifthGently/article/details/78363364

  • 相关阅读:
    sbt commands
    SBT Assembly
    There is no setter for property named 可能产生的原因!
    JSP页面分页显示数据
    CentOS7配置FTP服务器增强版~(零基础学会FTP配置)
    Windows下将程序打包为安装包(最为简易的方式)
    Linux多线程编程详细解析----条件变量 pthread_cond_t
    在Linux中使用线程
    关于verilog中语句可不可综合
    32位先行进位加法器的实现
  • 原文地址:https://www.cnblogs.com/RainZZY/p/15627566.html
Copyright © 2020-2023  润新知