文章目录
- 菜单Menu
- 检视面板
- 变量
- 脚本
- 特殊
- 未总结
- AssemblyIsEditorAssembly
- BeforeRenderOrderAttribute
- CustomGridBrushAttribute
- ExcludeFromObjectFactoryAttribute
- ExcludeFromPresetAttribute
- GradientUsageAttribute
- GUITargetAttribute
- IconAttribute
- ImageEffectAfterScale
- ImageEffectAllowedInSceneView
- ImageEffectOpaque
- ImageEffectTransformsToLDR
- ImageEffectUsesCommandBuffer
- PreferBinarySerialization
- SharedBetweenAnimatorsAttribute
- UnityAPICompatibilityVersionAttribute
菜单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
{
}
未绑定脚本
绑定脚本