はじめまして、Unityのエディタ拡張において、特定の編集項目が大量に出力されて困っています。
実現したいこと
Unityのエディタ拡張を利用して、ある条件下においてUnityEventの編集項目をインスペクター上に表示させたい。
<理想>
発生している問題
UnityEventの編集項目がインスペクター上に大量出力されてしまう。
<問題>
該当のソースコード
該当箇所は59行目となります。
C#
1using System;2using System.Collections;3using System.Collections.Generic;4using UnityEngine;5using UnityEngine.Events;6using UnityEngine.UI;7 8#if UNITY_EDITOR9 using UnityEditor;10#endif11 12 public class InteractObject : MonoBehaviour 13 {14 // Enum(InteractType)15 public GameManager.InteractType interactType;16 //Unityイベント interactTypeがcheckの場合。17 [SerializeField]18 public UnityEvent _event;19 20 public GameManager.InteractType GetInteractType()21 {22 return interactType;23 }24 }25 26#if UNITY_EDITOR27 [CustomEditor(typeof(InteractObject))]28 public class EditorInteractObject : Editor 29 {30 string[] interacts;31 string[] icons;32 33 public override void OnInspectorGUI()34 {35 serializedObject.Update();36 37 InteractObject myEvent = (InteractObject) target;38 39 interacts = new string[ Enum.GetValues(typeof(GameManager.InteractType)).Length];40 41 //Enumの値をString配列に保管。42 int i = 0;43 foreach(var en in Enum.GetValues(typeof(GameManager.InteractType))){44 45 interacts[i] = Enum.GetName(typeof(GameManager.InteractType), en);46 i++;47 }48 //Enum編集項目を表示49 myEvent.interactType = (GameManager.InteractType)EditorGUILayout.Popup("対象", (int)myEvent.interactType, interacts);50 51 ・・・省略・・・ 52 53 //InteractTypeがCheckだったら54 if(myEvent.GetInteractType() == GameManager.InteractType.Check){55 var customEvent = serializedObject.FindProperty("_event");56 57 //UniryEvent編集項目を表示58 EditorGUILayout.PropertyField(customEvent);59 }60 61 serializedObject.ApplyModifiedProperties();62 }63 }64#endif65
恐れ入りますが、よろしくお願いします。
0 コメント