前言:Odin是一款功能十分强大的Unity第三方插件,可以让程序员从繁琐的GUI开发中解放出来,从而大大提高开发效率。以下介绍的所有关于Odin的章节都是基于3.0.6个人版,读者可以根据自己实际需求进行选择性的阅览。
AssetListAttribute:资源列表定制特性。具有以下特性: 1.使用范围:可以用在单个Unity类型或者单个Unity类型作为元素的列表、数组类型的对象字段上。 2.主要作用:用来选择、过滤、包含或排除资源列表中的资源。 3.包含字段:如下所示: 3.1.Path:不指定时,就从Assets目录下进行查找资源;否则就从指定的Assets子目录下面进行查找资源。 3.2.AutoPopulate:为true时,就将查找到的资源自动填充到指定的列表或者数组类型对象字段里面;否则就不自动填充。 3.3.LayerNames:按照指定的层级名称来查找资源。 3.4.Tags:按照指定的标签名称来查找资源。其中标签名称可以有多个,每个标签名称之间按照逗号分隔。 3.5.AssetNamePrefix:按照指定的前缀名称来查找资源。 3.6.CustomFilterMethod:按照自定义的函数来查找资源。其中当函数返回true时,表示传入该函数的资源是满足条件的资源,需要被保留下来;否则就要舍弃。
AssetSelectorAttribute:资源选择器定制特性。具有以下特性: 1.使用范围:可以用在所有Unity类型的对象字段上。 2.主要作用:在对象字段旁边添加一个小按钮,点击该按钮就会弹出资源列表,从而方便用户选择一个资源来赋值给对象字段。 3.包含字段:如下所示: 3.1.SearchInFolders:不指定时,就从Assets目录下进行查找资源;否则就从指定的Assets开头的目录下面进行查找资源,其中指定的目录可以有多个,每个目录之间按照逗号分割。 3.2.FlattenTreeView:当该字段值true时,点击小按钮弹出的资源列表将会以平铺的方式进行展示。当该字段值false时,点击小按钮弹出的资源列表将会以树状的结构进行展示。 3.3.Filter:该字段值将会以参数形式传递给AssetDatabase.FindAssets函数,用来获取资源列表。 3.4.DropdownTitle:当该字段值为null或者""时,资源列表就不显示标题;否则资源列表就显示标题且标题内容为该字段值。 3.5.DropdownWidth:当该字段值大于0时,资源列表的宽度就等于该字段值乘以2。当该字段值小于等于0时,资源列表的宽度就自动调整。 3.6.DropdownHeight:当该字段值小于0时,资源列表就不显示;当该字段值等于0时,资源列表的高度就按照元素的个数进行自动调整;当该字段值大于0时,资源列表的高度就等于该字段值。 3.7.ExpandAllMenuItems:该字段值只有在资源列表按照树状结构进行展示时才有效。当该字段值为true时,每次打开资源列表都会自动展开条目;否则就按照最近的展开方式来显示条目。 3.8.DisableListAddButtonBehaviour:该字段只有在对象字段为列表或者数组类型时才有效。网上其他博主说点击加号按钮时,如果该字段值为true,就会以弹框形式显示资源列表;否则就会以树状结构形式显示资源列表。但是我在测试时发现,不论字段值为true还是false,一直都是以弹框形式显示资源列表,可能是我的姿势不对,也有可能是当前版本存在BUG。 3.9.DrawDropdownForListElements:该字段只有在对象字段为列表或者数组类型时才有效。当该字段值为true时,对象字段存储的每个元素都会显示小按钮;否则对象字段存储的每个元素都不会显示小按钮。 3.10.IsUniqueList:该字段只有在对象字段为列表或者数组类型时才有效。网上其他博主说点击加号按钮打开资源列表时,如果该字段值为true,就不能添加重复的条目;否则就可以添加重复的条目。但是我在测试时发现,不论字段值为true还是false,一直都是以弹框形式显示资源列表并且可以重复添加相同的条目,可能是我的姿势不对,也有可能是当前版本存在BUG。 3.11.ExcludeExistingValuesInList:该字段只有在对象字段为列表或者数组类型时才有效。当该字段值为true时,点击小按钮打开资源列表,此时已经选择的条目就会从资源列表中移除;否则已经选择的条目就不会从资源列表中移除。 4.包含属性:如下所示: 4.1.Paths:不指定时,就从Assets目录下进行查找资源;否则就从指定的Assets开头的目录下面进行查找资源,其中指定的目录可以有多个,每个目录之间按照竖线分割。 5.注意事项:如下所示: 5.1.SearchInFolders字段和Paths属性同时被应用时,此时就会按照右边成员替换左边成员方式进行设置。
AssetsOnlyAttribute:项目资源定制特性。具有以下特性: 1.使用范围:可以用在所有Unity类型的对象字段上。 2.主要作用:用来指定对象字段的数值是来自于场景中的资源,而不是来自于场景中的对象。
ChildGameObjectsOnlyAttribute:子游戏对象定制特性。具有以下特性: 1.使用范围:可以用在Component和GameObject类型的对象字段上。 2.主要作用:在对象字段旁边添加一个小按钮,点击该按钮就会弹出子游戏对象列表,从而方便用户选择一个子游戏对象来赋值给对象字段。 3.包含字段:如下所示: 3.1.IncludeSelf:该字段值为true时,就会从根游戏对象(指的是挂载该脚本的游戏对象)处开始查找;否则就从根游戏对象的子节点处进行查找。 3.2.IncludeInactive:该字段值为true时,查找的子游戏对象就不仅包含未激活的游戏对象,而且还包含已激活的游戏对象;否则查找的子游戏对象就只包含已激活的游戏对象。
ColorPaletteAttribute:调色板定制特性。具有以下特性: 1.使用范围:可以用在Color类型的对象字段上。 2.主要作用:在对象字段旁边添加一个默认调色板。用户可以从默认调色板中选择一个颜色值进行显示;也可以选择一个预定义调色板,然后从该调色板预定义的一组颜色值里面选择一个颜色值进行显示。 3.构造函数:如下所示: 3.1.无参构造函数:显示一组预定义的调色板。用户可以选择其中的一个调色板,然后从该调色板预定义的一组颜色值里面选择一个颜色值。 3.2.有参构造函数:显示一个指定名称的预定义调色板。如果不存在该调色板,就提醒用户创建该调色板;否则用户就可以从该调色板预定义的一组颜色值里面选择一个颜色值。 3.包含字段:如下所示: 3.1.PaletteName:该字段值等价于有参构造函数的参数值。其中字段值和参数值都同时支持成员引用和属性表达式。 3.2.ShowAlpha:当不显示预定义调色板时,如果该字段值为true,那么选择的颜色值就会显示Alpha分量值;否则就不会显示Alpha分量值。当显示预定义调色板时,只有在预定义调色板显示Alpha并且该字段值为true时,选择的颜色值就会显示Alpha分量值;否则就不会显示Alpha分量值。 4.注意事项:如下所示: 4.1.可以在Tools -> Odin Inspector -> Preferences -> Color Palettes面板当中查看或者编辑预定义调色板。 4.2.从默认调色板中得到的颜色值并不会同步更新到预定义调色板里面。 4.3.可以通过Sirenix.OdinInspector.Editor.ColorPaletteManager.Instance.ColorPalettes来获取所有的预定义调色板,供用户在脚本里面进行编辑。
ValueDropdownAttribute:下拉列表定制特性。具有以下特性: 1.使用范围:可以用在非字典类型的对象字段上。 2.主要作用:创建一个带有可配置选项的下拉列表来供用户进行选择。 3.包含字段:如下所示: 3.1.AppendNextDrawer:该字段只有在对象字段为不为列表或者数组类型时才有效。当为true时,就会在对象字段旁边添加一个小按钮以及一个输入框,点击该小按钮就会弹出小型下拉列表;当为false时,就会在对象字段旁边添加一个宽型下拉列表。 3.2.DisableGUIInAppendedDrawer:该字段只有在对象字段为不为列表或者数组类型且AppendNextDrawer字段值为true时才有效。当该字段值为true时,输入框就不可以进行编辑;否则输入框就可以进行编辑。 3.3.DoubleClickToConfirm:当为true时,双击条目来关闭下拉列表;否则单击条目来关闭下拉列表。 3.4.DisableListAddButtonBehaviour:该字段只有在对象字段为列表或者数组类型时才有效。当该字段值为true时,点击加号按钮就会直接添加一个默认条目;否则点击加号按钮就会弹出下拉列表供用户添加或者删除一个选项条目。 3.5.DrawDropdownForListElements:该字段只有在对象字段为列表或者数组类型时才有效。当该字段值为true时,对象字段存储的每个元素都会显示成一个没有被占用数值组成的宽型下拉列表;否则对象字段存储的每个元素都会显示成一个可编辑的输入框。 3.6.DropdownHeight:当该字段值小于0时,下拉列表就不显示;当该字段值等于0时,下拉列表的高度就按照元素的个数进行自动调整;当该字段值大于0时,下拉列表的高度就等于该字段值。 3.7.DropdownWidth:当该字段值大于0时,下拉列表的宽度就等于该字段值乘以2。当该字段值小于等于0时,如果对象字段为列表或者数组类型,那么下拉列表的宽度就固定为800;否则下拉列表的宽度就自动调整。 3.8.DropdownTitle:当该字段值为null或者""时,下拉列表就不显示标题;否则下拉列表就显示标题且标题内容为该字段值。 3.9.ValuesGetter:该字段值用来替换构造函数中传入的参数值,并且具有和该参数值一样的作用:指明下拉列表的数据源是由哪个列表或者数组类型的变量来提供;或者是由哪个返回列表或者数组类型的函数来提供。 3.10.IsUniqueList:该字段只有在对象字段为列表或者数组类型时才有效。当该字段值为true时,点击添加按钮打开下拉列表,此时不能添加重复的条目;否则就可以添加重复的条目。 3.11.ExcludeExistingValuesInList:该字段只有在对象字段为列表或者数组类型时才有效。当该字段值为true时,点击添加按钮打开下拉列表,此时已经选择的条目就会从下拉列表中移除;否则已经选择的条目就不会从下拉列表中移除。 3.12.FlattenTreeView:该字段值为false时,下拉列表中的条目会按照树形结构进行展示;否则就按照平铺方式进行展示。 3.13.ExpandAllMenuItems:该字段值只有在下拉列表按照树状结构进行展示时才有效。当该字段值为true时,每次打开下拉列表都会自动展开条目;否则就按照最近的展开方式来显示条目。 3.14.HideChildProperties:当该字段值为true时,对象字段的所有子属性会被隐藏起来;否则就会显示出来。 3.15.NumberOfItemsBeforeEnablingSearch:当该字段值大于等于0且下拉列表的条目个数大于等于该字段值时,就会在下拉列表的上方显示搜索框;否则就会在下拉列表的上方不显示搜索框。 3.16.SortDropdownItems:当该字段值为true时,就会对下拉列表的条目进行排序;否则就不会对下拉列表的条目进行排序。 4.自定义下拉列表条目:如下所示: 4.1.ValueDropdownItem:该类型表示下拉列表条目。其中Text字段表示条目名称;Value字段表示条目数值。 4.2.ValueDropdownList:由ValueDropdownItem类型所组成的列表类型。通常与ValueDropdownAttribute定制特性一起使用,从而自定义每个下拉列表条目。
|