Unity3D Attribute 总结

ABSTRACT

博客园 2015 年文章(西湖盗月,转自 CSDN)。按 UnityEngine / UnityEngine.Serialization / UnityEditor 命名空间逐一盘点 Unity 内置 Attribute 的用途与小示例,覆盖序列化、Inspector 展示、编辑器菜单与回调三大类,是查阅 Attribute 的速查表式剪藏。

核心要点

  • 序列化类:SerializeField(私有变量强制序列化进 Inspector)、FormerlySerializedAs(改名不丢序列化值)、HideInInspector、RequireComponent(自动追加依赖组件且不可移除)、DisallowMultipleComponent。
  • Inspector 展示类:Header、Tooltip、Range、Space、Multiline、TextArea、ContextMenuItem(变量右键菜单)、ContextMenu(组件齿轮菜单)。
  • 执行控制类:ExecuteInEditMode(编辑模式跑 Start/Update/OnGUI,但触发时机与 Play 不同)、RuntimeInitializeOnLoadMethod(启动自动调用,Unity 5+)、SelectionBase(点选自动定位父物体)、AddComponentMenu。
  • 渲染相关:ImageEffectOpaque(OnRenderImage 排在不透明之后透明之前)、ImageEffectTransformsToLDR。
  • 编辑器扩展类(UnityEditor):MenuItem、CustomEditor、CustomPropertyDrawer、CustomPreview、DrawGizmo、InitializeOnLoad(Method)、CanEditMultipleObjects、PreferenceItem(定制 Preferences 页)、CallbackOrder。
  • 构建/资源回调(UnityEditor.Callbacks,均要求 static):OnOpenAsset(按序号链式处理)、PostProcessBuild、PostProcessScene。
  • 已被官方移除:NotFlashValidated、NotRenamed(Unity 5.0 移除);RPC Attribute 属于旧网络系统。
  • 高频用法提示:UI 开发常用 [SerializeField] private 暴露私有组件引用;MenuItem + static 方法是做编辑器扩展的最小入口。

关键实体与概念

SerializeField、FormerlySerializedAs、RequireComponent、ExecuteInEditMode、RuntimeInitializeOnLoadMethod、MenuItem、CustomEditor、CustomPropertyDrawer、DrawGizmo、InitializeOnLoad、OnOpenAsset、PostProcessBuild、PreferenceItem

关联概念

(无合适概念页,留空)

来源回溯

  • 原始文件:raw/gamedev/unity3d-attribute-总结-西湖盗月-博客园.md(evernote/FW-游戏3研发技术 导入)

时效性评估

  • 仍有效:绝大多数 Attribute(SerializeField、Header/Range/Tooltip、MenuItem、CustomEditor 等)至今是日常开发高频用法,语义未变。
  • 已过时:PreferenceItem 已被 SettingsProvider 取代;ExecuteInEditMode 推荐改用 ExecuteAlways;旧 RPC Attribute 随 UNet 一并淘汰;文中 Unity 4.x 特有项仅具考古价值。