unity 属性合集
二、常用修饰符 在Unity中,属性修饰符可以用于控制序列化行为、编辑器显示和其他功能。以下是一些常用的Unity属性修饰符及其含义:
[HideInInspector] 此属性修饰符可以隐藏一个字段或属性,使其在Inspector窗口中不可见。
[Range(min, max)] 限制一个数值字段或属性的可接受值范围。在Inspector中,这个字段会显示为一个滑动条或输入字段,限制在指定的最小值和最大值之间。
[Tooltip("提示文本")] 为Inspector中的字段或属性添加工具提示。当用户将鼠标悬停在字段上时,会显示提示文本。
[Multiline(n)] 将字符串字段或属性在Inspector中显示为多行文本区域。可以指定行数,例如[Multiline(3)]将显示一个3行的文本区域。
[ SerializeField ] 使私有或受保护的字段在Inspector中可见和可序列化。
[Header("标题文本")] 在Inspector中添加一个标题,用于分隔和组织字段。
[Space] 在Inspector中添加一些空间,用于分隔字段,也可以[Space(50)]分隔的更远。
[ContextMenuItem("菜单项文本", "方法名")] 在Inspector中的字段旁边添加一个上下文菜单项,当点击时,会调用指定方法。
[TextArea(3, 10)] 与[Multiline]类似,但它还允许指定文本区域的最小和最大行数。超过最大行数,会出现滚动条,但[Multiline]不会出现。
[HelpURL("URL")] 为脚本添加一个帮助链接,点击时会在浏览器中打开指定的URL。 这些属性修饰符可以在Unity编辑器中提供更好的用户体验,并帮助组织和管理脚本中的数据。 只修饰类,一般会默认跳转手册文档
[ContextMenu ("名称")] 在Inspector面板中脚本Script的上下文菜单中添加一条指令,当点击该指令时,执行对应函数。需要注意的是修饰符只能用于非静态函数。
[CreateAssetMenu(fileName = "xxxx", menuName = "xxx/xxx", order = 0)] 参数说明: fileName:生成asset文件的文件名; menuName:在Assets/Create上子菜单的名字; order: 表示在 Assets/Create 下的位置顺序。
这个修饰符可以通过编辑器创建自定义资产。通常用于那些继承自ScriptableObject的类,它可以让开发者轻松地创建和管理配置文件、数据容器或其他可序列化的资源。
[ColorUsage(bool, bool, float, float, float, float)] 在Unity中,[ColorUsage]属性用于指定一个Color类型的字段如何在编辑器中显示和编辑。这个属性允许你限制颜色的编辑范围,例如,可以指定最小的亮度、饱和度或者Alpha值。这对于那些需要特定颜色范围的应用场景非常有用,比如光照颜色、材质颜色等。
第一个参数true表示是否允许HDR(高动态范围)颜色。 第二个参数true表示是否允许颜色选择器显示Alpha通道。 第三个参数0f是颜色的最小亮度值。 第四个参数8f是颜色的最大亮度值。 第五个参数0.1f是颜色的最小饱和度值。 第六个参数3f是颜色的最大饱和度值。
[AddComponentMenu("xxx/xxx")] 该属性是一个用于自定义脚本的特性,它允许你为脚本定义一个自定义的菜单路径,以便在编辑器中通过Add Component菜单添加该组件时能够找到它。这个特性对于组织复杂的工程或者为非程序员用户提供易于理解的组件非常有用。
[DisallowMultipleComponent] 防止在同一GameObject上添加同一组件的多个实例。
下面是一些不是很常见的,但是也要了解知道。
[Delayed] 当应用于属性时,延迟更新属性值,直到用户完成输入。这通常用于那些需要用户输入但不需要即时反映的场合,比如在Inspector中输入一个值后,不需要立即看到结果,而是等到用户完成所有输入后再更新。
比如在这段脚本中,health字段在Inspector中会有一个延迟更新的行为。当你开始在Inspector中编辑health的值时,Unity不会立即应用这个新值,而是等到你完成输入(比如按下回车键或点击其他字段)后才会更新。
这个特性对于防止在用户输入过程中频繁触发的事件或计算非常有用。例如,如果你有一个复杂的计算依赖于health的值,你不想在用户每输入一个数字时就执行这个计算,而是等到用户输入完整个数值后再执行。
[ExecuteInEditMode] 允许脚本在编辑模式下运行,而不仅仅是播放模式。
[FormerlySerializedAs("旧字段名")] 当字段名称更改时,用于保持序列化数据的兼容性。
[PropertyDrawer(typeof(MyPropertyDrawer))] 自定义字段在Inspector中的显示方式,通过指定一个实现了PropertyDrawer类的类型。
[RequireComponent(typeof(ComponentType))] 自动将指定的组件添加到GameObject上,如果它尚未存在。