CustomReorderableList.cs 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. // Magica Cloth.
  2. // Copyright (c) MagicaSoft, 2020-2022.
  3. // https://magicasoft.jp
  4. using UnityEditor;
  5. using UnityEditorInternal;
  6. namespace MagicaCloth
  7. {
  8. /// <summary>
  9. /// オブジェクト参照リストインスペクタ表示クラス
  10. /// </summary>
  11. public class CustomReorderableList : ReorderableList
  12. {
  13. public CustomReorderableList(SerializedObject serializedObject, SerializedProperty elements, string title)
  14. : base(serializedObject, elements, true, false, true, true)
  15. {
  16. // 要素の描画コールバック登録
  17. drawElementCallback = (rect, index, isActive, isFocused) =>
  18. {
  19. var element = elements.GetArrayElementAtIndex(index);
  20. rect.height -= 4;
  21. rect.y += 2;
  22. EditorGUI.PropertyField(rect, element);
  23. };
  24. // ヘッダ名表示
  25. drawHeaderCallback = (rect) =>
  26. EditorGUI.LabelField(rect, title);
  27. //EditorGUI.LabelField(rect, elements.displayName);
  28. // +ボタンの追加方法設定
  29. onAddCallback += (list) =>
  30. {
  31. //要素を追加
  32. elements.arraySize++;
  33. //最後の要素を選択状態にする
  34. list.index = elements.arraySize - 1;
  35. //追加した要素にnullを追加する
  36. var element = elements.GetArrayElementAtIndex(list.index);
  37. element.objectReferenceValue = null;
  38. };
  39. }
  40. }
  41. }