编辑器功能
AddComponentMenu-添加组件菜单
将脚本添加到Unity编辑器的菜单中,方便开发者在编辑器中快速添加组件。
示例
using UnityEngine;
[AddComponentMenu("添加组件/FollowTransform")]
public class FollowTransform : MonoBehaviour
{
}
效果
可以在Unity编辑器中选择 Component -> 添加组件->FollowTransform,或者选中模型在Add Component -> 添加工具->跟随模型组件,来将PlayerController脚本添加到游戏对象上。
ColorUsageAttribute-颜色使用属性
对 Color 使用此属性可将 Color Field 和拾色器配置为显示/隐藏 alpha 值,以及将颜色处理为 HDR 颜色还是正常 LDR 颜色。
变量
HDR | 如果设置为 true,则将 Color 处理为 HDR 颜色。 |
---|---|
showAlpha | 如果为 false,则 ColorField 中会隐藏 alpha 栏,并且拾色器中不显示 alpha 值。 |
示例
[ColorUsage(true, true)]
public Color colorWithAlphaHDR;
[ColorUsageAttribute(false, false)]
public Color colorNoAlphaHDR;
ContextMenu-添加脚本快捷菜单
在该附加脚本的 Inspector 中,当用户选择该快捷菜单时, 将执行此函数。
这对于从该脚本自动设置场景数据非常有用。 此函数必须是非静态的。
示例
using UnityEngine;
public class MyScript : MonoBehaviour
{
[ContextMenu("Do Something")]
private void DoSomething()
{
Debug.Log("执行操作");
}
}
效果
ContextMenuItemAttribute-自定义属性快捷菜单
Inspector面板中为方法添加自定义菜单项的属性。通过在方法上使用ContextMenuItemAttribute,可以在Inspector面板中为该方法添加一个自定义菜单项,以便在编辑器中方便地调用该方法。
示例
using UnityEngine;
public class MyScript : MonoBehaviour
{
[ContextMenuItem("myReset", "ResetPosition")]//必须添加在属性自动前
public Vector3 position;
private void ResetPosition()
{
position = Vector3.zero;
}
}
效果
右击position属性字段,可以看见myReset选项,点击运行
ExecuteAlways-始终执行类
使脚本的实例在播放模式期间或编辑时始终执行。
示例
using UnityEngine;
[ExecuteAlways]
public class MyScript : MonoBehaviour
{
private void Start()
{
Debug.Log("执行");
}
}
ExecuteInEditMode-编辑模式执行
使脚本的所有实例都在编辑模式下执行。
示例
using UnityEngine;
[ExecuteInEditMode]
public class MyScript : MonoBehaviour
{
private void Update()
{
if (Input.GetKeyDown(KeyCode.K))
{
Debug.Log("执行");
}
}
}
GradientUsageAttribute-渐变色使用
在渐变上使用此属性来配置GradientField和Gradient Editor,以将颜色处理为HDR颜色或普通LDR颜色。
示例
[GradientUsage(true)] // 使用HDR渐变
public Gradient gradientField;
private void Start()
{
Color color = gradientField.Evaluate(0.1f);
Debug.Log(color);
}
效果
HelpURLAttribute-自定义文档 URL
为类提供自定义文档 URL
示例
using UnityEngine;
using UnityEditor;
[HelpURL("http://example.com/docs/MyComponent.html")]
public class MyComponent
{
}
点击小问号打开链接
HideInInspector-不显示在 Inspector
使变量不显示在 Inspector 中,但进行序列化。
示例
[HideInInspector]
public int p = 5;
MinAttribute-限定最小值
用于使脚本中的 float 或 int 变量受限于特定最小值的属性。
示例
[Min(f)]
public int i;
输入活设定i小于f时,i都默认为f。
RequireComponent-自动添加组件
属性自动将所需的组件添加为依赖项。如果已经有该组件将不会再添加
示例
[RequireComponent(typeof(MeshFilter),typeof(MeshRenderer))]
public class MyScript : MonoBehaviour
{
private void Start()
{
}
}
效果
SerializeField-显示私有字段
用于在私有字段上标记,以便在Inspector面板中显示和编辑私有字段的值。这样可以在不暴露私有字段的情况下,让开发者可以在Unity编辑器中修改这些字段的值。
[SerializeField]
private int myValue;
优化Inspector面板
HeaderAttribute-创建标题
用于自定义Inspector面板的属性。它可以用来在Inspector面板中创建一个标题,并将相关字段分组在一起,以便更好地组织和呈现数据。
示例
[Header("设置")]
public int health;
public int damage;
[Header("外观")]
public Color color;
public Material material;
效果
InspectorNameAttribute-显示自定义名称
对枚举值声明使用此属性可更改 Inspector 中显示的显示名称。
示例
public enum ColorEnum
{
[InspectorName("红")]
red,
[InspectorName("黄")]
yellow,
[InspectorName("蓝")]
blue
}
public class MyScript : MonoBehaviour
{
public ColorEnum colorEnum;
private void Start()
{
Debug.Log(colorEnum);
}
}
效果
MultilineAttribute-多行文本
用于通过多行文本字段编辑字符串的属性。
示例
[MultilineAttribute(5)]//5为设定行数,不填默认为3行
public string str;
效果
NonReorderableAttribute-禁用数组排序功能
在“检查器”窗口中禁用数组或列表的重新排序。
示例
[NonReorderable]
public int[] array;
RangeAttribute-范围设定
用于使脚本中的 float 或 int 变量受限于特定范围的属性。
示例
[Range(1, 6)]
public int integerRange;
[Range(0.2f, 0.8f)]
public float floatRange;
效果
SpaceAttribute-添加间距
可在 Inspector 中添加一些间距。
public int maxHealth = 100;
[Space(100)] // 添加10像素的间距
public int shield = 0;
TextAreaAttribute-文本编辑区域
用于通过高度灵活且可滚动的区域编辑字符串。
可以指定 TextArea 的最小行数和最大行数,该字段将根据文本的大小进行扩展。如果文本大于可用区域,则会显示滚动条。
示例
[TextArea(3,5)]//最小行数3最大行数5
public string str;
效果
TooltipAttribute-字段提示
为 Inspector 窗口中的字段指定工具提示。
示例
[Tooltip("值在0到100之间")]
public int health = 0;
效果