Unity:インスペクターでInterfaceを可視化する、SerializeReferenceの使い方(Inspector、神機能?、unity2019.3)

最終更新日



はじめに

たっつー
たっつー

こんにちは、のんびりエンジニアのたっつーです。
Twitter(@kingyo222)で Unity情報 を発信しているのでよければフォローしてください!

 

先日に、Unity 2019.3 の正式版がリリースされましたね。
そこで一番注目していた機能をさっそく使ってみます。

SerializeReferenceの使い方

使い方は簡単です。

インターフェスを定義して、特定のスクリプトのフィールドに宣言して「 SerializeReference 」を付けてやりましょう。

インターフェスの定義

インターフェスと、実装クラス3つを今回はサンプルで書いてみました。

  • IData がインターフェース
  • DataA が実装クラス1
  • DataB が実装クラス2
  • DataC が実装クラス3
    interface IData
    {
    }

    enum DataType
    {
        User,
        Address,
        Tel
    }

    class DataA : IData
    {
        public DataType type = DataType.User;
        public int age;
        public string firstName;
        public string lastName;
    }

    class DataB : IData
    {
        public DataType type = DataType.Address;
        public string zipCode;
        public string address;
    }

    class DataC : IData
    {
        public DataType type = DataType.Tel;
        public string tel;
    }

SerializeReferenceを使う

次に、特定のスクリプトに

  • IDataの宣言を行いましょう。
    ※ここではよくあるパターンでリスト型にしました。
  • 上記宣言に「SerializeReference」のアトリビュートを付けましょう。

以下が使用例になります。

public class SampleObject : MonoBehaviour
{
    [SerializeReference]
    List<IData> list = new List<IData>();

    void Start()
    {
        list.Add(new DataA() { age = 17, firstName = "unity", lastName = "taro" });
        list.Add(new DataB() { zipCode = "111-1111", address ="unity japan" });
        list.Add(new DataC() { tel = "2019.3" });
    }
}

実行確認

これで準備は完了です、さっそく実行してみましょう。

こんな感じで、それぞれの実装クラス(DataA、DataB、DataC)が表示されたかと思います。

めっちゃ便利な機能ですね。
Unity2019.3の神機能でした。

その他にも便利機能があるので以下確認してみてください。

便利機能一覧

以下に、他にもある便利機能のリンクを載せますのでぜひご参照ください。






よければ、SNSにシェアをお願いします!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

コメントする