- Home /
EnumPopup an enum from another class
Okay, I have a HexScript file, that contains an enum. Please note the enum is in the HexScript file, but not in the class itself:
using UnityEngine; using System.Collections; using System.Collections.Generic; using System; public enum TerrainTypes {Open, Water, Grass, Jungle,};
public class HexScript : MonoBehaviour {
....buncha HexScriptCode Here...
} //end HexScriptClass
I have been able to get it so I can select a TerrainType in the inspector, but I need to be able to do so in Editor mode. My best guess so far is something like this:
terrainType = (TerrainTypes)EditorGUILayout.EnumPopup(hex_A.GetComponent().SOMETHING_GOES_HERE);
BTW: I do have the HexScript in angle braces after GetComponent, you just can't see it here.
However, I have been unable to get this to compile. How can I use the enumpopup to select my terrain? If I need to change the enum itself, I am willing to do so.
Answer by perchik · Aug 29, 2013 at 05:42 PM
You have to have some variable that holds the value of the terrain in the HexScript Class.
public class HexScript: MonoBehaviour{
public TerrainTypes myTerrain = TerrainTypes.Water;
Foo(){
if(myTerrain == TerrainTypes.Open){ //do something }
//or
switch(myTarget.myTerrain){
case TerrainTypes.Water:
//do something
break;
case TerrainTypes.Open:
//etc
}
}
Editor script:
public override void OnInspectorGUI()
{
HexScript myTarget = (HexScript)target;
myTarget.myTerrain= (TerrainTypes)EditorGUILayout.EnumPopup(new GUIContent("Terrain Type", "The type of terrain for this Hex"), myTarget.myTerrain);
}
Also on a stylistic note, Microsoft recommends that Enums be singular, so TerrainType instead of TerrainTypes, which makes more sense in code (ie. TerrainType.Water directly says the terrain type is water)