###前提・実現したいこと
下記のクラスのTestEditor内で、MonoBehaviourを継承していないクラスのリストの最後尾に、編集した新しい値を追加するために、MyClassをSerializedPropertyに変換したいです。
###該当のソースコード
1.カスタムクラス
[System.Serializable] public class MyClass { public AudioClip audioClip; public float floatVal; }
2.インスペクタ拡張のターゲットクラス
public class Test : MonoBehaviour { [SerializeField] private List<MyClass> myClassList = new List<MyClass>(); }
3.インスペクタ拡張用クラス
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEditor; [CustomEditor(typeof(Test))] public class TestEditor : Editor { private SerializedObject serializedObj; private SerializedProperty listProp; void OnEnable() { serializedObj = new SerializedObject(target); listProp = serializedObj.FindProperty("myClassList"); } /// <summary> /// リストに要素を追加 /// </summary> /// <param name="_addItem">追加する要素</param> void AddListItem(MyClass _addItem) { listProp.arraySize++; //配列の最後の要素を書き換え(ここをどうやるか分からないです) //listProp.GetArrayElementAtIndex(listProp.arraySize - 1) = _addItem; } /// <summary> /// インスペクタ拡張 /// </summary> public override void OnInspectorGUI() { base.OnInspectorGUI(); //ボタンを押した時、リストに新しく要素を追加する if (GUILayout.Button("AddListItem")) { MyClass item = new MyClass(); AddListItem(item); } } }
3のクラスの配列の最後の要素を書き換える所をどうすればいいのかわかりません、方法を教えていただきたいです。よろしくお願い致します。
###補足情報(言語/FW/ツール等のバージョンなど)
Unityのバージョン:Unity 2017.1.0.p5
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/09/16 00:52