🦑

Unity2020.2で導入される便利になったリストと配列によって何が変わるか

2020/09/17に公開

先日Unity2020.2がベータになり、公式ブログで様々な新機能が紹介されています。

その中で今回は1つだけ、地味だけど待望の機能を紹介しておきます。

配列・リストのデフォルトReorderableList化

今まで配列やリストはインスペクタで順番を変えることはデフォルト状態では出来ませんでした。
(UnityのInternalパッケージを利用したReorderableListクラスを使う必要があった)

Arrays and Lists in the inspector are reorderable, and the attribute [NonReorderable] can disable this function

公式ブログの引用の通り、今回のアプデでデフォルト状態でReorderableList化しました。

サンプルコード

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Sample : MonoBehaviour
{
    public int[] intArray;
    public List<string> stringList;
}

これを適当なGameObjectにくっつけてインスペクタを見てみると、このように見慣れたReorderableListが。


このようにリストの順番の変更、追加・削除がGUI上で簡単に扱うことが出来るようになります。

Unity2020.1以前と同様の挙動をさせる場合

[NonReorderable]を付与するとUnity2020.1以前の配列、リストの挙動に戻ります。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Sample : MonoBehaviour
{
    [NonReorderable] public int[] intArray;
    [NonReorderable] public List<string> stringList;
}

ReorderableなUIがなくなりシンプルな配列、リストのインスペクタに戻ります。

これによって何が良くなるのか?

リストを入れ替えたい要望は開発中によくあるため、シンプルにエンジニア工数の削減に繋がります。UnityEditorのGUIを扱うメンバーと協業する場合にもエンジニアはリストを定義するだけで後はよろしく!っとできます(多少は)。

また、今までInternalなメソッドをコソコソ使っていたわけですが、それが公にUnityが公式サポートしたことも大きいです(もう安心です)。

最後に

すごーく地味な機能ですが要望が沢山あったのだと思います。
今後もこのような地味な機能が改善されていくことを期待します。

Unit2020.2では他にも様々なアプデがされているようなので、チェックしていきたいと思います。

参考サイト

Discussion