リストの要素(Element)に名前を付ける
調べれば何でも解決する。先輩達に感謝…。
「この記事は最終更新日から3年以上が経過しています。」というアラートが出てますが全然問題ありませんでした。
手順は次のとおり。
1.Editorフォルダを作成(これを作らないとUNITYの中身を書き換えられない)
2.そのフォルダ内にC#スクリプトを作成、「NamedArrayDrawer」と名付けて、中身は次のコードをコピペ。
using UnityEngine;
using UnityEditor;
[CustomPropertyDrawer(typeof(NamedArrayAttribute))]
public class NamedArrayDrawer : PropertyDrawer
{
public override void OnGUI(Rect rect, SerializedProperty property, GUIContent label)
{
try
{
int pos = int.Parse(property.propertyPath.Split('[', ']')[1]);
EditorGUI.PropertyField(rect, property, new GUIContent(((NamedArrayAttribute)attribute).names[pos]));
}
catch
{
EditorGUI.PropertyField(rect, property, label);
}
}
}/* Your code... */
3.どこでもいいのでC#スクリプトを作成、「NamedArrayAttribute」と名付けて、中身は次のコードをコピペ。
using UnityEngine;
public class NamedArrayAttribute : PropertyAttribute
{
public readonly string[] names;
public NamedArrayAttribute(string[] names) { this.names = names; }
}
4.リストを作るときに、次のように書く
[NamedArrayAttribute(new string[] { "Element0の名前", "Element1の名前","なんでもいれてOK","どんだけ入れてもOK"})]
public リストの型[] リスト名;
//または
[NamedArrayAttribute(new string[] { "Element0の名前", "Element1の名前","なんでもいれてOK","どんだけ入れてもOK"})]
public リストの型[] リスト名 = new リストの型[];
完成です。
解決!