【Odin】リストの中身やクラスのフィールドが検索可能になる「Searchable」属性【Unity】

Odinで追加される「Searchable」属性を使用することで、リストの中身やクラスのフィールドが検索できるようになります。

スポンサーリンク

使い方

リストに使用する方法

使い方は、string型のリストまたは配列に [Searchable] 属性をつけるだけです。

using System.Collections.Generic;
using Sirenix.OdinInspector;
using UnityEngine;

public class OdinSample : MonoBehaviour
{
    [Searchable]
    public List<string> items = new List<string>();
}

任意クラス[構造体]のリストにもつけられます

検索に適合するかどうかの判定を実装するには、クラスに「ISearchFilterable」を実装して、「FilterOptions」に「SearchFilterOptions.ISearchFilterableInterface」を指定します。

using System;
using System.Collections.Generic;
using Sirenix.OdinInspector;
using UnityEngine;

public class OdinSample : MonoBehaviour
{
    [Searchable(FilterOptions = SearchFilterOptions.ISearchFilterableInterface)]
    public List<Member> members = new List<Member>();

    [Serializable]
    public class Member : ISearchFilterable
    {
        public string name;
        public int age;
        
        public bool IsMatch(string searchString)
        {
            return name.IndexOf(searchString, StringComparison.OrdinalIgnoreCase) != -1;
        }
    }
}

クラスに使用する方法

クラス[構造体]に対して使うと、フィールドを検索できるようになります

using System;
using Sirenix.OdinInspector;
using UnityEngine;

public class OdinSample : MonoBehaviour
{
    [Searchable] public Enemy enemy;
    
    [Serializable]
    public class Enemy
    {
        public string name;
        public int health;
        public int attack;
        public int defence;
    }
}

また、クラス[構造体]自体にもつけられます

using System;
using Sirenix.OdinInspector;
using UnityEngine;

public class OdinSample : MonoBehaviour
{
    public Enemy enemy;
    
    [Serializable, Searchable]
    public class Enemy
    {
        public string name;
        public int health;
        public int attack;
        public int defence;
    }
}

もちろん、MonoBehaviourにもつけられます

using Sirenix.OdinInspector;
using UnityEngine;

[Searchable]
public class OdinSample : MonoBehaviour
{
    public string name;
    public int health;
    public int attack;
    public int defence;
}

さいごに

要素の数が多いリストや、フィールドの数が多い Scriptable Object などに使うと便利かなと思います。

Odinではほかにもたくさんの属性が追加されるので、詳しく知りたい人は公式ドキュメントを見るとよいでしょう。

100+ attributes for Unity

参考

Searchable Attribute for Unity with Odin Inspector
Adds a search filter that can search the children of the field or type on which it is applied. Note that this does not currently work when directly applied to d...

アセットストア

Odin Inspector and Serializer | Utilities Tools | Unity Asset Store
Use the Odin Inspector and Serializer from Sirenix on your next project. Find this utility tool & more on the Unity Asset Store.

コメント

タイトルとURLをコピーしました