- Home /
Question by
Drandalf · Nov 25, 2014 at 08:25 PM ·
editor-scripting
How to change settings on editor using Enum with an array?
Hi and thanks for your time. I'm trying to make an event system, and try to show different options of configuration depending on an Enum type of variable, and i'm using an array to make many events as we need. This is the code of my event class and Enum Type.
using UnityEngine;
using System.Collections;
public class EventManager : MonoBehaviour
{
public Evento[] Eventos;
}
[System.Serializable]
public class Evento
{
public enum EventTypes
{
Spawn,
Presentation,
Boss,
Killzone
}
public string Name;
public EventTypes EventType;
public GameObject BossPrefab;
public Transform BossSpawnPosition;
public GameObject[] Spawners;
public Transform[] SpawnersPositions;
public int KillsNeed;
}
And this is the code in the Assets/Editor for the inspector
using UnityEditor;
using UnityEngine;
[CustomEditor(typeof(Evento)), CanEditMultipleObjects]
public class EventsEditor : Editor {
public SerializedProperty
EventType_Prop,
BossPrefab_Prop,
BossSpawnPosition_Prob,
Spawners_Prob,
SpawnersPositions_Prob,
KillsNeed_Prob
,EventTypes_Prob,
Evento_Prob;
void OnEnable () {
// Setup the SerializedProperties
EventType_Prop = serializedObject.FindProperty ("EventType");
BossPrefab_Prop = serializedObject.FindProperty ("BossPrefab");
BossSpawnPosition_Prob = serializedObject.FindProperty ("BossSpawnPosition");
Spawners_Prob = serializedObject.FindProperty ("Spawners");
SpawnersPositions_Prob = serializedObject.FindProperty ("SpawnersPositions");
KillsNeed_Prob = serializedObject.FindProperty ("KillsNeed");
Evento_Prob = serializedObject.FindProperty ("Evento");
EventTypes_Prob = serializedObject.FindProperty ("EventTypes");
}
public override void OnInspectorGUI() {
serializedObject.Update ();
EditorGUILayout.PropertyField( EventType_Prop );
Evento.EventTypes et = (Evento.EventTypes)EventType_Prop.enumValueIndex;
switch( et ) {
case Evento.EventTypes.Boss:
EditorGUILayout.PropertyField( BossPrefab_Prop, new GUIContent("BossPrefab"));
EditorGUILayout.PropertyField(BossSpawnPosition_Prob, new GUIContent("BossSpawnPosition"));
break;
case Evento.EventTypes.Killzone:
EditorGUILayout.PropertyField( Spawners_Prob, new GUIContent("Spawners"));
EditorGUILayout.PropertyField( SpawnersPositions_Prob, new GUIContent("SpawnersPositions"));
EditorGUILayout.PropertyField(KillsNeed_Prob, new GUIContent("KillsNeed"));
break;
case Evento.EventTypes.Presentation:
/*EditorGUILayout.PropertyField( controllable_Prop, new GUIContent("controllable") );
EditorGUILayout.IntSlider ( valForC_Prop, 0, 100, new GUIContent("valForC") );*/
break;
case Evento.EventTypes.Spawn:
EditorGUILayout.PropertyField( Spawners_Prob, new GUIContent("Spawners"));
EditorGUILayout.PropertyField( SpawnersPositions_Prob, new GUIContent("SpawnersPositions"));
break;
}
serializedObject.ApplyModifiedProperties ();
}
}
I'm kinda new on editing the inspector and sorry if there any other question like this but i don't find any answer to fit me. Thanks for your time.
PD: is in c# btw, thanks.
Comment