Scripts" 菜单栏.using U..._application.onbeforerender">
当前位置:   article > 正文

unity 编辑器属性_application.onbeforerender

application.onbeforerender

Attribute API 分为unityeditor和unityengine 两种,二者有相似之处,也有不同之处,下面是详细介绍:

UnityEngine Attribute API

1.AddComponentMenu

 添加到类的上面,功能就是把该脚本添加到Component下拉菜单下的任何地方,而不仅仅是 "Component->Scripts" 菜单栏.

  1. using UnityEngine;
  2. [AddComponentMenu("Transform/Follow Transform")]
  3. public class FollowTransform : MonoBehaviour
  4. {
  5. }
componentOrder该组件在 component menu的显示顺序,是低还是高

2.BeforeRenderOrder 属性

添加到方法上面,用来自定义Application.onBeforeRender事件注册方法的执行顺序,它执行注册事件的顺序是从低到高,如果没有该属性,默认order为0

比如:

        [BeforeRenderOrder(1)]
        public void BeforeRender()
        {
            Debug.Log(1110);
        }
        [BeforeRenderOrder(0)]
        public void BeforeRenders()
        {
            Debug.Log(1111);
        }

            Application.onBeforeRender += BeforeRender;
            Application.onBeforeRender += BeforeRenders;

会先执行BeforeRenders方法,因为它的顺序比较靠前

3.ColorUsage属性

添加到color字段上面,用来指示是否显示alpha通道,以及颜色的模式是HDR还是LDR颜色

4.ContextMenu 属性

添加到非静态方法上面,给该脚本组件在属性面板上右键显示该方法,通常用来自动为脚本设置初始化数据

  1. using UnityEngine;
  2. public class ContextTesting : MonoBehaviour
  3. {
  4. /// Add a context menu named "Do Something" in the inspector
  5. /// of the attached script.
  6. [ContextMenu("Do Something")]
  7. void DoSomething()
  8. {
  9. Debug.Log("Perform operation");
  10. }
  11. }

5.ContextMenuItem属性

添加到字段上面,为该字段右键执行一个方法,有两个参数,第一个表示右键显示的名字,第二个是要调用的方法名

  1. using UnityEngine;
  2. public class Example : MonoBehaviour
  3. {
  4. [ContextMenuItem("Reset", "ResetBiography")]
  5. [Multiline(8)]
  6. string playerBiography = "";
  7. void ResetBiography()
  8. {
  9. playerBiography = "";
  10. }
  11. }

6.CreateAssetMenu属性

写在继承自ScriptableObject类型的类上面,用来在创建该脚本的实例并以.asset文件存储,第一个是创建的.asset的名字,第二个是在Assets/Create自菜单的路径,比如“transform”,那它就在Assets/Create/transform路径下,第三个是显示顺序

定义如下:


 

7.Delayed 属性

写在字段上面,作用是在属性面板上如果修改了该数值或者该文本,不会立即生效,当你按下enter键后者鼠标点击其它地方的时候才生效

8.DisallowMultipleComponent 属性

写在继承自monobehavior的类上面,不允许该脚本在同一个物体上添加多个,就像image组件一样,一个物体不能同时挂载两个

9.ExcludeFromObjectFactory属性

写在类上面,把该脚本组件以及继承它的脚本,不能用ObjectFactory创建出来

 9.1 ObjectFactory 对象工厂,属于editor命名空间

 在Editor下创建 UnityEngine.Object 对象,这个过程已经被注册了undo操作,所以是可以撤销的

  Static Methods

AddComponentCreates a new component and adds it to the specified GameObject.
CreateGameObjectCreates a new GameObject.
CreateInstanceCreate a new instance of the given type.
CreatePrimitiveCreates a GameObject primitive.

  Events

componentWasAdded每次使用对象工厂创建物体时的触发事件

10.ExcludeFromPresets属性

写在类上面,这样改脚本组件就不能创建预设了

 一个有预设按钮,一个没有预设按钮

11.ExecuteAlways 属性

添加到类上面,表示该脚本一直执行,不管是在运行时还是在editor模式下,默认脚本只在运行时执行

12.GradientUsage属性

写在Gradient 字段上面,用来表示该渐变色是HDR还是正常的LDR颜色模式

Gradient 类和Color对应,用来表示一个渐变色

13.Range 属性

添加到float或者int类型的字段上,以一个slider的形式,限制一个float或者int数字,在一个范围

14.RequireComponent 属性

 写在类上,当该脚本组件添加的时候,require的组件自动添加上去

15.RuntimeInitializeOnLoadMethod属性

添加在静态方法上面,来根据RuntimeInitializeLoadType 来决定该方法执行的顺序,是在Awake方法之后Start之前执行
Note: 标记有 [RuntimeInitializeOnLoadMethod]属性的静态方法之间的相互执行顺序不确定

RuntimeInitializeLoadType 

Properties

AfterSceneLoadAfter Scene is loaded.
BeforeSceneLoadBefore Scene is loaded.
AfterAssembliesLoadedCallback when all assemblies are loaded and preloaded assets are initialized.
BeforeSplashScreenImmediately before the splash screen is shown.
SubsystemRegistrationCallback used for registration of subsystems


16.SelectionBase属性

把这个属性添加到一个类上面,并把该脚本添加到一个物体上面,当你在场景中选中该物体的子物体时,会快速定位到它身上,就比如你点击一个prefab的子物体,它会自动定位到根节点一样,单击一次,会定位到挂有该脚本的物体,单击两次会定位到你点击的物体

17.Header属性

添加到字段上面,和字段没有内在联系,添加一个标头,这也是默认继承自PropertyAttribute的属性,然后通过PropertyDrawer绘制过来的,系统自带的
  

  1. using UnityEngine;
  2. public class Example : MonoBehaviour
  3. {
  4. [Header("Health Settings")]
  5. public int health = 0;
  6. public int maxHealth = 100;
  7. [Header("Shield Settings")]
  8. public int shield = 0;
  9. public int maxShield = 0;
  10. }

18.HelpURL属性

添加到类上面,为一个类提供一个方法说明地址,按住CTRL键可转到连接,点击下面的图表就会转到说明

  1. using UnityEngine;
  2. using UnityEditor;
  3. [HelpURL("http://example.com/docs/MyComponent.html")]
  4. public class MyComponent
  5. {
  6. }


19.HideInInspector

属性在属性面板上隐藏

  1. using UnityEngine;
  2. public class Example : MonoBehaviour
  3. {
  4. [HideInInspector]
  5. public int p = 5;
  6. }

20.InspectorName属性

添加到枚举类型的项上,使用这个属性改变在属性面板中的名字

  1. using UnityEngine;
  2. public enum ModelImporterIndexFormat
  3. {
  4. Auto = 0,
  5. [InspectorName("16 bits")]
  6. UInt16 = 1,
  7. [InspectorName("32 bits")]
  8. UInt32 = 2,
  9. }

21.Min 属性

限定一个float或者int类型的最小值

22.Multiline属性

声明一个可以多行编辑的字符串

23.SerializeField

序列化一个私有字段,在面板上显示出来

24.SharedBetweenAnimators属性

添加到继承自 StateMachineBehaviour 的类上面,只对同一层的动画状态机通用这个脚本,比方说这一层动画有5个state,那么这5个state只要有一个挂载该脚本就可以。比如下面的代码,这五个state只要是进入的时候都会执行OnStateEnter方法

using UnityEngine;

[SharedBetweenAnimators]
public class AttackBehaviour : StateMachineBehaviour
{
    public override void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
    {
        Debug.Log("OnStateEnter");
    }
}

layerIndex是该动画层的索引,及动画状态机的layers属性

25.SpaceAttribute

添加到字段上面,和字段没有内在联系,继承自 PropertyAttribute ,然后通过PropertyDrawer实现的效果,unity自带的,以像素为单位,空出几个格

  1. using UnityEngine;
  2. public class Example : MonoBehaviour
  3. {
  4. int health = 0;
  5. int maxHealth = 100;
  6. [Space(10)] // 10 pixels of spacing here.
  7. int shield = 0;
  8. int maxShield = 0;
  9. }

26.TextArea属性

添加到string上面,实现一个高度可调可以滚动的字符串

你可以声明区域框显示的最小和最大的字符串的行数, minimum and maximum , 文字区域会根据文字的内容自动扩展输入框的大小,超出的部分会有一个滚动条

Note: 最大行是指文本区域显示字符串的行数。用户输入的行数没有上限。

  1. using UnityEngine;
  2. public class TextAreaExample : MonoBehaviour
  3. {
  4. [TextArea]
  5. public string MyTextArea;
  6. }

27.Tooltip属性

添加到字段上面,为一个字段显示一个说明,当鼠标停留在上面的时候

    using UnityEngine;  
    public class Example : MonoBehaviour
    {
        [Tooltip("Health value between 0 and 100.")]
        int health = 0;
    }
 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/786434
推荐阅读
相关标签
  

闽ICP备14008679号