Unity插件之Odin 2.Inspector使用

Unity插件之Odin 2.Inspector使用

简介

项目中加入Odin后,Odin默认会修改配置会使用自己的绘制方式对类及成员进行绘制。Odin中最主要的一方面就是对类及成员的重新制定编辑方式,这一方式的实现更多是通过对类及成员添加属性标签实现的,所以本文中将主要介绍这些属性标签,通过这些属性标签在属性面板中绘制对应的编辑方式

声明

本文中的内容属于个人总结整理而来,个人水平有限,对于部分细节难免有理解错误及遗漏之处,如果您在阅读过程中有所发现,希望您能指正,同时文章中的部分内容也参考了其它大神的文章,如果文章中的内容侵犯了您的权益,表示非常歉意,请您指出,我将尽快修改。

如果您进行转载,请标明出处。

Unity插件之Odin 2.Inspector使用(http://www.liyubin.com/articles/2019/03/26/1553585529615.html)

Unity属性标签

Unity引擎自身已经提供了少量的属性标签,可以实现一些简单的基础功能,由于本文重点并不是讲解Unity中的标签,所以此节中做一些简单的提示,不再做详细的介绍,个人建议开发者还是应该对其有一定的了解,这样才更加方便理解Odin中的属性标签使用。

Unity属性标签常用的有:

  • Range
  • Space
  • Tooltip
  • Delayed
  • TextArea
  • Header
  • HelpJURL
  • Min
  • HideInInspector
  • ......(还有其它,此次不再完全列举)

PS:对于Unity提供的这些标签大多数Odin提供了对应的更加功能强大的替代属性标签

Odin属性标签

Odin插件提供非常丰富的属性标签用于简化编辑器功能的编写,由于属性标签的数量过多,本文无法在一章中介绍清楚,所以会对其标签进行分类整理,在使用中根据提示查找感兴趣的属性标签即可。了方便结合Odin的Demo进行学习,此部分的介绍中也将采用与Demo类似的分类方式

  • Base Editor Changes

    项目中导入Odin成功后,在Odin的默认配置中会对Unity内的一部分类型使用Odin的绘制方式在属性面板中绘制,主要的类型有:

    • Enum类型
    • Array类型
    • List类型
    • Quaternion类
    • Bounds类
    • Vector3/Vector2类
    • Rect类
    • UnityEngine.Object类

除了上述的类型变化外还有其它扩展的一些属性标签:

  • ListDrawerSettings
  • HideReferenceObjectPicker

各部分详细的变化可以参见:Unity插件之Odin 2.Inspector使用-BaseEditorChanges

PS:Odin对于List/Array的扩展是其重要的内容之一。

  • Type Specific Attributes

    Odin对于一些类型提供了对应的属性标签,使用这些属性标签可以很方便重新定义绘制方式,主要的标签有:

    • EnumToggleButtons
    • EnumPaging
    • MinMaxSlider
    • MinValue & MaxValue
    • PropertyRange
    • DelayedProperty
    • PreviewField
    • Wrap
    • ColorPalette
    • AssetList
    • InlineEditor & DisableInInlineEditors & HideInInlineEditors
    • ProgressBar
    • FolderPath & FilePath
    • ValueDropdown
    • ToggleLeft
    • MultiLineProperty

    各属性标签详细的API及说明可以参见:Unity插件之Odin 2.inspector使用-TypeSpecificAttributes

  • Essentials

    Odin对于一些类型提供了对应的属性标签,使用这些属性标签可以很方便重新定义绘制方式,主要的标签有:

    • EnableIf & DisableIf
    • ShowIf & HideIf
    • HideInPlayMode & HideInEditorMode & DisableInPlayMode & DisableInEditorMode
    • Required
    • ReadOnly
    • AssetsOnly
    • SceneObjectsOnly
    • ValidateInput
    • HideInPrefabAssets & HideInPrefabInstances & HideInPrefabs & HideInNonPrefabs & DisableInPrefabAssets & DisableInPrefabInstances & DisableInPrefabs & DisableInNonPrefabs
    • TypeFilter

    各属性标签详细的API及说明可以参见:Unity插件之Odin 2.inspector使用-Essentials

  • Serialization Related

    Unity本身可以对使用的变量进行序列化,但是并不支持任意的类型,甚至对于某些常用的类型也并不支持,比如字典类型、二维数组、代理(delegate)等,对此在项目开发中确实存在着很多的不方便,Odin对这些特殊类型的也进行了支持,通过继承SerializedMonoBehaviour可以对这些数组类型的序列化。本章节中将详细的讨论Odin序列化这些特殊类型的方式及API详解

  • Odin序列化二维数组([,])
  • Odin序列化字典(Dictionary)
  • Odin序列化代理(delegate)
  • ....

本文还将介绍几个属性标签,分别:

  • TableMatrix
  • DictionaryDrawerSettings

详细的使用方式及API可参见:Unity插件之Odin 3.特殊类型序列化

  • Group And Layout

    Odin对于一些类型提供了对应的属性标签,使用这些属性标签可以很方便重新定义绘制方式,主要的标签有:

    • TableList
    • TabGroup
    • HorizontalGroup
    • VerticalGroup
    • FoldoutGroup
    • BoxGroup
    • ToggleGroup
    • InlineProperty
    • TitleGroup

    各属性标签详细的API及说明可以参见:Unity插件之Odin 2.Inspector使用-GroupAndLayout

  • Buttons

    Odin对于一些类型提供了对应的属性标签,使用这些属性标签可以很方便重新定义绘制方式,主要的标签有:

    • Button
    • InlineButton
    • ButtonGroup
    • ResponsiveButtonGroup

    各属性标签详细的API及说明可以参见:Unity插件之Odin 2.inspector使用-Buttons

  • Misc

    Odin对于一些类型提供了对应的属性标签,使用这些属性标签可以很方便重新定义绘制方式,主要的标签有:

    • DisableContextMenu
    • CustomContextMenu
    • OnValueChanged
    • DrawWithUnity

    各属性标签详细的API及说明可以参见:Unity插件之Odin 2.inspector使用-Misc

  • Meta

    Odin对于一些类型提供了对应的属性标签,使用这些属性标签可以很方便重新定义绘制方式,主要的标签有:

    • PropertySpace
    • TypeInfoBox
    • CustomValueDrawer
    • Title
    • DisplayAsString
    • InfoBox
    • DetailedInfoBox
    • PropertyTooltip
    • LabelText
    • SuffixLabel
    • HideLabel
    • OnInspectorGUI
    • GUIColor
    • Indent
    • PropertyOrder
    • HideMonoScript
    • ShowInInspector
    • ShowDrawerChain

    各属性标签详细的API及说明可以参见:Unity插件之Odin 2.inspector使用-Meta

参考资料

  • Odin Inspector Documention

你可能感兴趣的:(Unity插件之Odin 2.Inspector使用)