Odin Inspector 系列教程 --- Asset Selector Attribute

Asset Selector Attribute 特性用于:在对象字段旁边添加一个小按钮,该按钮将向用户显示资产下拉列表,以便从属性中进行选择。

7643202-3da23b0dfa8f4f41.gif
【AssetSelector】添加到对应的字段上即可
7643202-2db4e6157d117b0a.gif
    [AssetSelector]
    public Material AnyAllMaterials;
    [AssetSelector]
    public Material[] ListOfAllMaterials;
【FlattenTreeView】是否开启树状图
7643202-5b2225b53db85411.gif
    [PropertySpace(40)]
    [AssetSelector(FlattenTreeView = false)]//默认树状显示
    public PhysicMaterial TreeView;
    [AssetSelector(FlattenTreeView = true)]//非默认树状显示
    public PhysicMaterial NoTreeView;
【Paths】单路径或多路径查找
7643202-f1f1acb2b7c4a381.gif
    [PropertySpace(40)]
    [AssetSelector(Paths = "Assets/TutorialAsset/ExampleScriptableObjects")]
    public ScriptableObject ScriptableObjectsFromFolder;
    [AssetSelector(Paths = "Assets/TutorialAsset/ExampleScriptableObjects|Assets/Plugins/Sirenix/Odin Inspector")]
    public ScriptableObject ScriptableObjectsFromMultipleFolders;
【Filter】自定义过滤条件
7643202-4b3a60e9b2e04b33.gif
    [PropertySpace(40)]
    [AssetSelector(Filter = "New Animation t:AnimationClip l:自定义标签")]
    public UnityEngine.Object AssetDatabaseSearchFilters;
【DisableListAddButtonBehaviour】开启后加号不会出现树形下拉条以弹窗形式出现
7643202-8574301340851ac9.gif
    [Title("辅助性功能")]
    [AssetSelector(DisableListAddButtonBehaviour = true)] //开启后加号不会出现树形下拉条以弹窗形式出现
    public List<GameObject> DisableListAddButtonBehaviour;
【DrawDropdownForListElements】控制已经添加的Item是否含有下拉列表
7643202-fa6491d70b270787.gif
    [PropertySpace(40)]
    [AssetSelector(DrawDropdownForListElements = false)]
    public List<GameObject> DisableListElementBehaviour_False;
    [AssetSelector(DrawDropdownForListElements = true)]
    public List<GameObject> DisableListElementBehaviour_True;
【ExcludeExistingValuesInList】去除已经含有的Item
7643202-c7c40a1b9bb92fb5.gif
    [PropertySpace(40)]
    [AssetSelector(ExcludeExistingValuesInList = true)]
    public List<GameObject> ExcludeExistingValuesInList_True;
    [AssetSelector(ExcludeExistingValuesInList = false)]
    public List<GameObject> ExcludeExistingValuesInList_False;
【IsUniqueList】开启列表勾选模式(这个关键字在Odin的很多特性中都有)
7643202-58aabc50b4591a5d.gif
    [PropertySpace(40)]
    [AssetSelector(IsUniqueList = true)]
    public List<GameObject> DisableUniqueListBehaviour_True;
    [AssetSelector(IsUniqueList = false)]
    public List<GameObject> DisableUniqueListBehaviour_False;
【ExpandAllMenuItems】下拉列表是否强制展开
7643202-b026077a98ad9798.gif
    [PropertySpace(40)]
    [AssetSelector(ExpandAllMenuItems = true)]//下拉条是否展开
    public List<GameObject> ExpandAllMenuItems_True;
    [AssetSelector(ExpandAllMenuItems = false)]
    public List<GameObject> ExpandAllMenuItems_False;
【DropdownTitle】下拉列表标题
7643202-4f9449858b072422.gif
    [PropertySpace(40)]
    [AssetSelector(DropdownTitle = "最定义下拉列表标题")]
    public List<GameObject> CustomDropdownTitle;
完整示例代码
using UnityEngine;

using Sirenix.OdinInspector;
using System;
using System.Collections.Generic;
public class AssetSelectorAttributeExample : MonoBehaviour
{
    [AssetSelector]
    public Material AnyAllMaterials;
    [AssetSelector]
    public Material[] ListOfAllMaterials;

    [PropertySpace(40)]
    [AssetSelector(FlattenTreeView = false)]//默认树状显示
    public PhysicMaterial TreeView;
    [AssetSelector(FlattenTreeView = true)]//非默认树状显示
    public PhysicMaterial NoTreeView;


    [PropertySpace(40)]
    [AssetSelector(Paths = "Assets/TutorialAsset/ExampleScriptableObjects")]
    public ScriptableObject ScriptableObjectsFromFolder;
    [AssetSelector(Paths = "Assets/TutorialAsset/ExampleScriptableObjects|Assets/Plugins/Sirenix/Odin Inspector")]
    public ScriptableObject ScriptableObjectsFromMultipleFolders;

    [PropertySpace(40)]
    [AssetSelector(Filter = "New Animation t:AnimationClip l:自定义标签")]
    public UnityEngine.Object AssetDatabaseSearchFilters;

    [Title("辅助性功能")]
    [AssetSelector(DisableListAddButtonBehaviour = true)] //开启后加号不会出现树形下拉条以弹窗形式出现
    public List<GameObject> DisableListAddButtonBehaviour;

    [PropertySpace(40)]
    [AssetSelector(DrawDropdownForListElements = false)]
    public List<GameObject> DisableListElementBehaviour_False;
    [AssetSelector(DrawDropdownForListElements = true)]
    public List<GameObject> DisableListElementBehaviour_True;

    [PropertySpace(40)]
    [AssetSelector(ExcludeExistingValuesInList = true)]
    public List<GameObject> ExcludeExistingValuesInList_True;
    [AssetSelector(ExcludeExistingValuesInList = false)]
    public List<GameObject> ExcludeExistingValuesInList_False;

    [PropertySpace(40)]
    [AssetSelector(IsUniqueList = true)]
    public List<GameObject> DisableUniqueListBehaviour_True;
    [AssetSelector(IsUniqueList = false)]
    public List<GameObject> DisableUniqueListBehaviour_False;

    [PropertySpace(40)]
    [AssetSelector(ExpandAllMenuItems = true)]//下拉条是否展开
    public List<GameObject> ExpandAllMenuItems_True;
    [AssetSelector(ExpandAllMenuItems = false)]
    public List<GameObject> ExpandAllMenuItems_False;

    [PropertySpace(40)]
    [AssetSelector(DropdownTitle = "最定义下拉列表标题")]
    public List<GameObject> CustomDropdownTitle;
}

更多教程内容详见:革命性Unity 编辑器扩展工具 --- Odin Inspector 系列教程

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值