最近UnityのEditor拡張でSerializeObjectとSerializePropertyが味方になった。変数名の文字列で取得するのはネックなものの、privateな変数まで取得できることが良い。
今回必要に迫られたのは、SerializeReference属性の付いたフィールドに、Editor側からインスタンスを突っ込む必要があるからだった。ただ属性がついてるからといって、外部からインスタンスを差し込んで、EditorGUIUtility.SetDirty()を呼んでやれば保存されるというわけでもないらしい。
SerializeReference属性のついた変数に対して、Editor側からインスタンスを注入し、なおかつシリアライズ情報が保存されるには、serializeProperty.managedReferenceValueに対してインスタンスを入れなければならなかった。
SerializePropertyを見直した。
それはそうと、ReorderListが痒いところに手が届かない感じで不便。初期化もデフォルトじゃいけないのも面倒。しかも要素の描画方法が訳わからん。Rectをこね繰り回しても何も映らないことがしばしばあり、なんならRectをこね繰り回すのさえ嫌だと俺は駄々をこねた。
要素の追加にプルダウン形式でオプションをつけたり何だり出来るのは素晴らしいものの、扱うのにかなり癖がある。このじゃじゃ馬が。