#ReorderableListって?
Animatorとかで見かける並べ替えできるやつです。
最近まで名前を知らなかった...
基本的にはEditor拡張でEditorWindowやComponentの描画を書き換えて
ReorderableListが使われることが多いイメージ。
ただそれだと毎回自作クラスとかを拡張して書いてあげる必要があって、
Editor拡張わかる人しかゴリゴリ使えない!!
**List<T>**使う感覚でサクッと使えればみんな幸せ。
という事で色々参考にしながら作りました。
CustomReorderalbeList
#環境
- Unity 2018.3.8f1
- MacOS 10.13.6
-
CustomReorderableList 1.0.0
- 1.0.1:折りたたみ対応。
#使い方
UnityPackageをインポート。
[ReorderableList]
をつけてpublicでL***
の型を指定して終わり。
privateでも使えますがInspectorに表示しないならList<T>を使ったほうが気持ちいいです。
// Ex.
[ReorderableList]
public LString m_string; // string型
[ReorderableList]
public LBool m_bool; // bool型
スクリプト内でもListとだいたい同じように使えます。
m_string.Add("new Text");
foreach (var item in m_string) {}
#もっと使い方
Systemで使えるfloat
やbyte
などはL***
で使えるようにしてあります。
UnityEngineで使えるのはGameObject
やVector3
くらいしか設定していません。
ジェネリックのクラスはUnityのInspectorで表示されないようで、
あらかじめ継承したクラスを用意してあげなきゃみたいです。
UnityのComponentを全部用意するのは大変なので必要に応じて追加してください。
各クラスはPackageの中にあるReorderList.cs
の下の方にあります。
/* 省略 */
// UnityEngine
[System.Serializable] public class LGameObject : ReorderList<GameObject> { }
[System.Serializable] public class LTransform : ReorderList<Transform> { }
[System.Serializable] public class LVector2 : ReorderList<Vector2> { }
[System.Serializable] public class LVector3 : ReorderList<Vector3> { }
// 追加 TextComponentをReorderableListで使えるようにする
[System.Serializable] public class LText : ReorderList<UnityEngine.UI.Text> {}
#参考にした記事