Unity插件之Odin 2.inspector使用-TypeSpecificAttributes

Unity插件之Odin 2.inspector使用-TypeSpecificAttributes

简介

Odin定义了很多的属性标签,通过这些属性标签很大程度上增强了编辑器功能,本文将详细介绍如下属性标签:

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

声明

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

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

Unity插件之Odin 2.inspector使用-TypeSpecificAttributes(http://www.liyubin.com/articles/2019/03/26/1553609461234.html)

API详解



EnumToggleButtonsAttribute

简介

EnumToggleButtons属性标签适用于Enum类型,使用此属性标签后,对于Enum类型来说将不再使用下拉列表展示,而是绘制一组水平按钮

对于Flags的Enum类型同样适用

API详解

  • Fields
  • Properties
  • Constructors

示例

Unity插件之Odin 2.inspector使用-TypeSpecificAttributes_第1张图片
Odin-EnumToggleButtonAttribute


EnumPagingAttribute

简介

使用此属性标签后,Enum类型将不再使用默认的下拉列表展示,而是绘制带有next和previous按钮的枚举选择器可以循环遍历枚举属性进行选择

属性标签仅适用于Enum类型,只能是Field或者Property

API详解

  • Fields
  • Properties
  • Constructors

示例

Enum-EnumPaging


MinMaxSliderAttribute

简介

添加此属性后可以绘制一个带有最大值与最小值的限定滑动条,通过滑动条上的两个滑块的滑动来选择需要表示的特定值,两个滑动分别表示两个值

其中Vector2的x表示滑块选择的最小值,y表示滑块选择的最大值

API详解

  • Fields(字段)


    类 型 名 称 说 明
    string MaxMember 指定一个字段、属性或者方法名称,调用后得到滑块选择的最大值
    string MinMember 指定一个字段、属性或者方法名称,调用后得到滑块选择的最小值
    string MinMaxMember 指定一个字段、属性或者方法名称,返回Vector2类型,x表示滑块选择的最小值,y表示滑块选择的最大值
    float MaxValue 滑块表示选择的最大值
    float MinValue 滑块表示选择的最小值
    bool ShowFields 是否绘制float的文本框来显示选择的最大与最小值
  • Properties

  • Constructors

    参 数 描 述
    float minValue, float maxValue, bool showFields = false 具体每个参数含义参照字段描述
    string minMember, float maxValue, bool showFields = false 具体每个参数含义参照字段描述
    float minValue, string maxMember, bool showFields = false 具体每个参数含义参照字段描述
    string minMember, string maxMember, bool showFields = false 具体每个参数含义参照字段描述
    string minMaxMember, bool showFields = false 具体每个参数含义参照字段描述

示例

Unity插件之Odin 2.inspector使用-TypeSpecificAttributes_第2张图片
Odin-MinMaxSliderAttribute


MaxValueAttribute & MinValueAttribute

简介

使用此属性标签可以对值类型进行限定,使用MaxValueAttribue可以限定值能达到的最大值,使用MinValueAttribute可以限定值能达到的最小值

两个标签也可用于Vector2、Vector3、Vector4

API详解

  • Fields

    类 型 名 称 说 明
    double MaxValue/MinValue 限定的最大值或最小值
  • Properties

  • Constructors

示例

public class Health : MonoBehaviour
{
    [MinValue(0), MaxValue(200)]
    public float Speed;
}

PS: 限定Speed的值最大为200,最小为0


PropertyRangeAttribute

简介

使用此属性标签,可以绘制一个滑动条,通过滑块拖动可以选择最大值与最小值之间的值,此标签与Unity的RangeAttribute功能类似,只不过此属性标签可以字段,也可用于属性。

API详解

  • Fields

    类 型 名 称 说 明
    double Min 限定的最小值
    double Max 限定的最大值
    string MinMember 字段、属性或者方法的名称,调用后可以得到限定的最小值
    string MaxMember 字段、属性或者方法的名称,调用后可以得到限定的最大值
  • Properties

  • Constructors

    参 数 描 述
    double min, double max 各个参数的含义参见Fields中说明
    string minMember, double max 各个参数的含义参见Fields中说明
    double min, string maxMember 各个参数的含义参见Fields中说明
    string minMember, string maxMember 各个参数的含义参见Fields中说明

示例



DelayedPropertyAttribute

简介

使用此属性标签后,在编辑过程中时不再触发属性值的变化,直到编译结束才会触发。与Unity内置的DelayedAttribute基本相同,不过此属性标签不仅适用于字段,也适用于属性

API详解

  • Fields

    类 型 名 称 说 明
    float Height 绘制区域的大小
    ObjectFieldAlignment Alignment 对齐的方式
    bool AlignmentHasValue Alignment字段是否赋值过
  • Properties

  • Constructors

    参 数 描 述
    ----
    float height 各个参数的含义参见Fields中说明
    float height,ObjectFieldAlignment alignment 各个参数的含义参见Fields中说明
    ObjectFieldAlignment alignment 各个参数的含义参见Fields中说明

示例



PreviewFieldAttribute

简介

使用此标签可以为UnityEngine.Object绘制一个方形的Object字段,此对象可以通过拖拽到方形区域可以添加或者切换一个值,当点击此区域后可以选择需要的对象,使用Ctrl+Click可以删除此值,将对象设置为空

API详解

  • Fields
  • Properties
  • Constructors

示例

Unity插件之Odin 2.inspector使用-TypeSpecificAttributes_第3张图片
Odin-PreviewFieldAttribute


WrapAttribute

简介

对数值类型在一定范围内进行限定,当超出限定的范围时,会循环使用设定的边界。比如:对于角度的限定,限定为0-360,如果值小于0时,将会重新回到最大值360,当值大于360时,将会回到最小值0

此标签也可用于Vector2,Vector3,Vector4

API详解

  • Fields

    类 型 名 称 说 明
    double Min 限定的最小值
    double Max 限定的最大值
  • Properties

  • Constructors

    参 数 描 述
    double min, double max 各个参数的含义参见Fields中说明

示例

public class MyComponent : MonoBehaviour
{
    [Wrap(0, 360)]
    public float angle;
}


ColorPaletteAttribute

简介

适用于Color的属性标签,可以从定义好的调色板中选择需要使用的颜色值。

对于调色板来说需要预先配置。

API详解

  • Fields

    类 型 名 称 说 明
    string PaletteName 预定义好的调色板的名称
    bool ShowAlpha 设置调色板是否显示Alpha值
  • Properties

  • Constructors

示例

Unity插件之Odin 2.inspector使用-TypeSpecificAttributes_第4张图片
Odin-ColorPalatteAttribute


AssetListAttribute

简介

AssetList属性标签可用于List、Array或者Unity指定的类型,可以筛选符合指定要求的资源

API详解

  • Fields

    类 型 名 称 说 明
    bool AutoPopulate 指定是否自动检查所有的资源
    string Tags 指定资源使用的Tag
    string LayerNames 指定资源所需使用的层(一般可用于GameObject的Layer)
    string AssetNamePrefix 指定资源名称前缀
    string Path 指定资源所在的目录
    string CustomFilterMethod 指定一个方法,用来筛选符合要求的资源,参数为需要判断的资源,返回值为bool,如果返回值为True则表示符合要求
  • Properties

  • Constructors

示例

Unity插件之Odin 2.inspector使用-TypeSpecificAttributes_第5张图片
Odin-AssetListAttribute


InlineEditor & DisableInInlineEditors & HideInInlineEditors

TODO::



ProgressBarAttribute

简介

对于值类型的字段或者属性,使用此标签可以绘制一个进度条来表示

PS:可以自定义进度条的颜色,可用于实现更直观的展示,比如:显示游戏中血量

API详解

  • Fields

    类 型 名 称 说 明
    double Min 设定的最小值
    double Max 设定的最大值
    string MinMember 指定一个方法、属性或者字段名称,调用后可得到最小值
    string MaxMember 指定一个方法、属性或者字段名称,调用后可得到最大值
    float R 颜色的R值,0-1之间的值
    float G 颜色的G值,0-1之间的值
    float B 颜色的B值,0-1之间的值
    int Height 设置进度条的高度,默认是12个像素
    string ColorMember 指定一个方法、属性或者字段名称,用于获得颜色值,可用于动态修改颜色
    string BackgroundColorMember 指定一个方法、属性或者字段名称,用于获得背景颜色值,可用于动态修改背景颜色
    bool Segmented 设置是否分段显示进度
    string CustomValueStringMember 指定一个属性、字段或者方法的名称,使用其返回值来重新定义文本内容
  • Properties

    Get/Set 类 型 名 称 描 述
    Get&Set bool DrawValueLabel 是否绘制值文本框
    Get bool DrawValueLabelHasValue 是否为DrawValueLabel设置了值,如果对此属性进行赋值,将会覆盖掉Odin系统设置中相关的设置,显式使用此值
    Get&Set TextAlignment ValueLabelAlignment 设置值文本框的对齐方式(Left,Center,Right)
    Get bool ValueLabelAlignmentHasValue 是否为ValueLabelAlignment设置了值,如果对此属性进行赋值,将会覆盖掉Odin系统设置中相关的设置,显式使用此值

    PS:Get/Set列表示此属性是否可读或可写;在属性中存在着很多类似于***HasValue的只读属性,其表示对应的属性值是否有设置过值,如果有设置值将会使用设置的值做为当前显示的值,如果没有设置过值将会使用Odin系统设置中相对应的值做为默认值

  • Constructors

    参 数 描 述
    double min, double max, float r = 0.15f, float g = 0.47f, float b = 0.74f 各个参数的含义参见Fields中说明
    string minMember, double max, float r = 0.15f, float g = 0.47f, float b = 0.74f 各个参数的含义参见Fields中说明
    double min, string maxMember, float r = 0.15f, float g = 0.47f, float b = 0.74f 各个参数的含义参见Fields中说明
    string minMember, string maxMember, float r = 0.15f, float g = 0.47f, float b = 0.74f 各个参数的含义参见Fields中说明

示例

Unity插件之Odin 2.inspector使用-TypeSpecificAttributes_第6张图片
Odin-ProgressBarAttribute


FolderPathAttribute

简介

FolderPath属性标签适用于String类型,表示目录路径

PS:默认情况下是相对于Unity项目根目录的

API详解

  • Fields

    类 型 名 称 说 明
    bool AbsolutePath 是否使用绝对路径
    string ParentFolder 父目录,可以是相对于Unity的相对目录,也可以是绝对路径
    bool RequireExistingPath 是否检查路径是否存在,如果为True,当路径不存在时将会显示错误提示
    bool UseBackslashes 是否强制使用斜线,如果需要强制使用斜线的话,设置此值为True,默认使用反斜线代表目录分隔
  • Properties

  • Constructors

示例

Unity插件之Odin 2.inspector使用-TypeSpecificAttributes_第7张图片
Odin-FolderPathAttribute


FilePathAttribute

简介

此属性标签可以限定变量表示文件路径

PS:此属性仅适用于string类型的变量,默认情况下是相对于Unity项目根目录的

API详解

  • Fields

    类 型 名 称 说 明
    bool AbsolutePath 是否使用绝对路径
    string Extensions 文件后缀,使用,分隔不同的后缀,文件后缀前的.是可选的。可以使用$引用其它的变量
    string ParentFolder 父目录,可以是相对于Unity的相对目录,也可以是绝对路径
    bool RequireExistingPath 是否检查路径是否存在,如果为True,当路径不存在时将会显示错误提示
    bool UseBackslashes 是否强制使用斜线,如果需要强制使用斜线的话,设置此值为True,默认使用反斜线代表目录分隔
  • Properties

  • Constructors

示例



ValueDropdownAttribute

简介

ValueDropdown属性标签通过指定的配置,将属性、字段以下拉列表的形式展示,以方便用户从中进行选择

API详解

  • Fields

    类 型 名 称 说 明
    string MemberName 指定一个字段、属性或者方法名称,返回值需要继承自IList,比如:Array、List
    int NumberOfItemsBeforeEnablingSearch 启用搜索的数量,默认是10。如果可选择的值的数量超过10个,将会启用搜索
    bool IsUniqueList 指定IList中的数据是否是唯一的,默认是flase,即可以有重复的值
    bool DrawDropdownForListElements 是否绘制列表中元素子列表,如果为True的话,若绘制元素也是一个列表,将会继续绘制下拉列表
    bool DisableListAddButtonBehaviour 是否禁用添加新元素行为,默认是False
    bool ExcludeExistingValuesInList
    bool ExpandAllMenuItems 是否展示菜单,如果下拉列表使用树结构,是否展开所有内容
    bool AppendNextDrawer 是否是小下拉列表按钮进行绘制,如果为true,将会使用小按钮替换大列表
    bool DisableGUIInAppendedDrawer 是否追加绘制默认的GUI显示方式
    bool DoubleClickToConfirm 是否使用双击表示选择完成,默认情况下点击表示选中,双击表示确认
    bool FlattenTreeView 是否简化树结构
    int DropdownWidth 下拉列表宽度,默认是0
    int DropdownHeight 下拉列表高度,默认是0
    string DropdownTitle 下拉列表标题,默认是null
    bool SortDropdownItems 是否进行排序,默认是False
    bool HideChildProperties 展开时是否绘制所有的子属性,默认是False
  • Properties

  • Constructors

    参 数 描 述
    string memberName 各个参数的含义参见Fields中说明

示例

Unity插件之Odin 2.inspector使用-TypeSpecificAttributes_第8张图片
Odin-ValueDropdownAttribute


ToggleLeftAttribute

简介

ToggleLeft属性标签适用于Bool类型,默认情况下Unity绘制的选择框是在左侧的,此用此标签标可以使用文本在左,选择框在右

API详解

  • Fields
  • Properties
  • Constructors

示例

public class MyComponent : MonoBehaviour
{
    [ToggleLeft]
    public bool MyBoolean;
}


MultiLinePropertyAttribute

简介

MultiLineProperty适用于String类,使用此标签可以使用文本以多行的形式显示

API详解

  • Fields

    类 型 名 称 说 明
    int Lines 文本框显示行数
  • Properties

  • Constructors

    参 数 描 述
    int lines = 3 各个参数的含义参见Fields中说明

示例

public class MyComponent : MonoBehaviour
{
    [MultiLineProperty(10)]
    public string MyString;
}


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