Unity 特性

菜单Menu

AddComponentMenuConstructor

从Component菜单下添加设置的脚本(可以设置路径))

AddComponentMenu-AddComponentMenu - Unity 脚本 API

using UnityEngine;

[AddComponentMenu("Test")]
public class Test : MonoBehaviour
{
    
    
}

在这里插入图片描述


CreateAssetMenuAttribute/CreateAssetMenu

在Assets>Create中实现一个路径,创建ScriptableObject的文件储存在项目中(需要继承自ScriptableObject )
UnityEngine.CreateAssetMenuAttribute - Unity 脚本 API

using UnityEngine;

[CreateAssetMenu(fileName="Test",menuName = "Test",order=1)]
public class Test : ScriptableObject
{
    
    
    public string playerBiography = "";
}

在这里插入图片描述

检视面板

ContextMenu

在Inspector面板上,执行此特性绑定的方法函数。(此函数必须是非静态的)

UnityEngine.ContextMenu - Unity 脚本 API

using UnityEngine;

public class Test : MonoBehaviour
{
    
    
    [ContextMenu("Do Something")]
    void DoSomething()
    {
    
    
        Debug.Log("Perform operation");
    }
}

在这里插入图片描述


HeaderAttribute

给脚本变量在Inspector面板中显示标题

UnityEngine.HeaderAttribute - Unity 脚本 API

using UnityEngine;

public class Test : MonoBehaviour
{
    
    
    [Header("Health Settings")]
    public int health = 0;
}

在这里插入图片描述


HideInInspector

使变量不显示在 Inspector 中,但进行序列化。

UnityEngine.HideInInspector - Unity 脚本 API

using UnityEngine;

public class Test : MonoBehaviour
{
    
    
    [HideInInspector]
    public int health = 0;
}

InspectorNameAttribute

对枚举值声明使用此属性可更改 Inspector 中显示的显示名称。

UnityEngine.InspectorNameAttribute - Unity 脚本 API

using UnityEngine;

public class Test : MonoBehaviour
{
    
    
    public Mode Modes;
}

public enum Mode
{
    
    
    Auto = 0,
    [InspectorName("竖排")]
    SP = 1,
    [InspectorName("横排")]
    HP = 2,
}

在这里插入图片描述


MinAttribute

用于使脚本中的 float 或 int 变量受限于特定最小值的属性。

UnityEngine.MinAttribute - Unity 脚本 API

using UnityEngine;

public class Test : MonoBehaviour
{
    
    
    [Min(0)]
    public float minFloat;
}


MultilineAttribute

编辑器中多文本显示

UnityEngine.MultilineAttribute - Unity 脚本 API

using UnityEngine;

public class Test : MonoBehaviour
{
    
    
    [Multiline(10)]//默认为3行
    public string minFloat;
}

在这里插入图片描述


NonReorderableAttribute

带有该属性的数组或者列表在编辑器内不能进行重新排列

UnityEngine.NonReorderableAttribute - Unity 脚本 API

using UnityEngine;

public class Test : MonoBehaviour
{
    
    
    [NonReorderableAttribute]
    public int[] array;
}

在这里插入图片描述


RangeAttribute

用于使脚本中的 float 或 int 变量受限于特定范围的属性。

使用此属性时,float 或 int 会在 Inspector 中显示为滑动条而不是默认数字字段。

UnityEngine.RangeAttribute - Unity 脚本 API

using UnityEngine;

public class Test : MonoBehaviour
{
    
    
    [Range(1, 6)]
    public int integerRange;
}

在这里插入图片描述


RequireComponent

RequireComponent 属性自动将所需的组件添加为依赖项。(绑定该脚本时会自动添加设置的依赖项,并且该依赖不能删除)

UnityEngine.RequireComponent - Unity 脚本 API

using UnityEngine;

[RequireComponent(typeof(Rigidbody))]
public class Test : MonoBehaviour
{
    
    
}

在这里插入图片描述


SpaceAttribute

在Inspector中添加间距

UnityEngine.SpaceAttribute - Unity 脚本 API

using UnityEngine;

public class Test : MonoBehaviour
{
    
    
    public int maxHealth = 100;
    
    [Space(10)]//中间十个间距
    
    public int shield = 0;
}

在这里插入图片描述


TextAreaAttribute

可以指定 TextArea 的最小行数和最大行数,该字段将根据文本的大小进行扩展。如果文本大于可用区域,则会显示滚动条。

UnityEngine.TextAreaAttribute - Unity 脚本 API

using UnityEngine;

public class Test : MonoBehaviour
{
    
    
    [TextArea(0,10)]
    public string MyTextArea;
}

在这里插入图片描述


TooltipAttribute

为 Inspector 窗口中的字段指定工具提示。

UnityEngine.TooltipAttribute - Unity 脚本 API

using UnityEngine;

public class Test : MonoBehaviour
{
    
    
    [Tooltip("提示")]
    int health = 0;
}

在这里插入图片描述

变量

ColorUsageAttribute/ColorUsage

给颜色赋值属性(1.可以设置是否显示Alpha通道,2.可以设置是否为HDR颜色)

UnityEngine.ColorUsageAttribute - Unity 脚本 API

using UnityEngine;

public class Test : MonoBehaviour
{
    
    
    [ColorUsage(true,true)]//参数1:alpha开关。参数2:hdr开关。
    public Color testColor;
}

在这里插入图片描述


ContextMenuItemAttribute/ContextMenuItem

在当前变量右键设置一个事件,并调用方法。

UnityEngine.ContextMenuItemAttribute - Unity 脚本 API

using UnityEngine;

public class Test : MonoBehaviour
{
    
    
    [Multiline(8)]    
    [ContextMenuItem("Do Something", "ResetBiography")]
    public string playerBiography = "";

    void ResetBiography()
    {
    
    
        playerBiography = "Set";
    }
}

在这里插入图片描述


DelayedAttribute

属性,用于使脚本中的 float、int 或 string 变量被延迟。

当使用此属性时,直到用户按 Enter 键或将焦点从 float、int 或文本字段移开后,该字段才会返回新值。

UnityEngine.DelayedAttribute - Unity 脚本 API

using UnityEngine;

public class Test : MonoBehaviour
{
    
    
    [Delayed]
    public string playerBiography = "";

}

脚本

DisallowMultipleComponent

防止将相同类型(或子类型)的 MonoBehaviour 多次添加到 GameObject。

UnityEngine.DisallowMultipleComponent - Unity 脚本 API

挂在一个以上的脚本会报错
在这里插入图片描述


ExecuteAlways

播放模式、编辑模式、预制体模式下添加此属性,MonoBehaviour 的任何实例都将始终执行其回调函数。

UnityEngine.ExecuteAlways - Unity 脚本 API

using UnityEngine;

[ExecuteAlways]
public class Test : MonoBehaviour
{
    
    
    void Start()
    {
    
    
        if (Application.IsPlaying(gameObject))
        {
    
    
            // Play logic
        }
        else
        {
    
    
            // Editor logic
        }
    }
}

ExecuteInEditMode

编辑器模式下执行回调函数(建议使用ExecuteAlways)


HelpURLAttribute

为该脚本添加一个自定义文档

UnityEngine.HelpURLAttribute - Unity 脚本 API

using UnityEngine;

[HelpURL("http://www.baidu.com")]
public class Test : MonoBehaviour
{
    
    
}

在这里插入图片描述


PropertyAttribute

用于派生自定义属性特性的基类。这可用于为脚本变量创建特性。

自定义特性可以与自定义 PropertyDrawer 类连接,以控制具有该特性的脚本变量如何在 Inspector 中显示。

UnityEngine.PropertyAttribute - Unity 脚本 API


RuntimeInitializeOnLoadMethodAttribute

允许在运行时加载游戏时不通过用户操作 初始化一个运行时类方法。(可以不挂载)

游戏加载后,将调用标记为 [RuntimeInitializeOnLoadMethod] 的 方法。这是在调用 Awake 方法后进行的。

UnityEngine.RuntimeInitializeOnLoadMethodAttribute - Unity 脚本 API

class MyClass
{
    
    
    [RuntimeInitializeOnLoadMethod]
    static void OnRuntimeMethodLoad()
    {
    
    
        Debug.Log("After Scene is loaded and game is running");
    }

    [RuntimeInitializeOnLoadMethod]
    static void OnSecondRuntimeMethodLoad()
    {
    
    
        Debug.Log("SecondMethod After Scene is loaded and game is running.");
    }
}

SerializeField

强制 Unity 对私有字段进行序列化。

当 Unity 对脚本进行序列化时,仅对公共字段进行序列化。 如果还需要 Unity 对私有字段进行序列化, 可以将 SerializeField 属性添加到这些字段。

UnityEngine.SerializeField - Unity 脚本 API

using UnityEngine;

public class Test : MonoBehaviour
{
    
    
    [SerializeField]
    private string test;
}

SerializeReference

序列化引用类型

UnityEngine.SerializeReference - Unity 脚本 API

特殊

SelectionBaseAttribute

在Scene窗口,绑定该特性的脚本在绑定的GameObject上时,在第一次点击该物体的子物体时,会选中绑定该脚本的物体。

UnityEngine.SelectionBaseAttribute - Unity 脚本 API

using UnityEngine;

[SelectionBaseAttribute]
public class Test : MonoBehaviour
{
    
    
}

未绑定脚本在这里插入图片描述

绑定脚本在这里插入图片描述

未总结

AssemblyIsEditorAssembly

BeforeRenderOrderAttribute

CustomGridBrushAttribute

ExcludeFromObjectFactoryAttribute

ExcludeFromPresetAttribute

GradientUsageAttribute

GUITargetAttribute

IconAttribute

ImageEffectAfterScale

ImageEffectAllowedInSceneView

ImageEffectOpaque

ImageEffectTransformsToLDR

ImageEffectUsesCommandBuffer

PreferBinarySerialization

SharedBetweenAnimatorsAttribute

UnityAPICompatibilityVersionAttribute

猜你喜欢

转载自blog.csdn.net/SodasZ/article/details/128386375