Noticias

¡RECUERDA QUE SI ERES UN NUEVO USUARIO, DEBES PRESENTARTE PARA PODER PUBLICAR MENSAJES! | TENEMOS CANAL OFICIAL DE TELEGRAM: t.me/unity3dspain

Duda Hacer de enums

Iniciado por KevinLastra, Mayo 14, 2017, 12:25:10 PM

Tema anterior - Siguiente tema
Mayo 14, 2017, 12:25:10 PM Ultima modificación: Mayo 15, 2017, 08:05:01 AM por pioj
Hola a todos tengo una pregunta, hay de alguna manera hacer que si se selecciona alguna opcion de un enum se abra otro enum en el editor,
 

public enum item{arma,armadura,medicina}
public item item_;
//osea cuando digamos ago click en la opcion armadura dentro del enum item.
//aparesca otro enum partes de armadura y yo pueda escoger entre esas partes.
public enum PartesDeArmadura{cabeza,pecho}
public PartesDeArmadura partes;

 
 
 
pero que ese enum solo exista cuando item sea armadura, si item no es igual a armadura el enum partesdearmadura no aparesca en el menu.
 
 
 
Porfavor diganme si es posible y si es posible me podrian decir como se hace Grasias.

Para poder tener un control más global del inspector, lo lógico es usar un CustomEditor.
 
Para ello, si imaginamos que tienes una clase Testing, deberías crear otra para el Editor que la controlara.
 
Aquí te dejo una posibilidad:
 

public class Testing : MonoBehaviour {
    public enum Items { Armas, Armaduras, Medicinas};
    public enum Armas { Arma1, Arma2, Arma3};
    public enum Armaduras { Armaduras1, Armaduras2, Armaduras3 };
    public enum Medicinas { Medicinas1, Medicinas2, Medicinas3 };
    public Items items;
    public Armaduras armaduras;
    public Medicinas medicinas;
    public Armas armas;
    void Update()
    {
           
    }
}
[CustomEditor(typeof(Testing))]
public class TestingEditor : Editor
{
    SerializedProperty item, armaduras, armas, medicinas;
    private void OnEnable()
    {
        item = serializedObject.FindProperty("items");
        armaduras = serializedObject.FindProperty("armaduras");
        armas = serializedObject.FindProperty("armas");
        medicinas = serializedObject.FindProperty("medicinas");
    }
    public override void OnInspectorGUI()
    {
        Testing testing = (Testing)target;
        EditorGUILayout.PropertyField(item);  
        switch(testing.items)
        {
            case Testing.Items.Armaduras:
                EditorGUILayout.PropertyField(armaduras);
                break;
            case Testing.Items.Armas:
                EditorGUILayout.PropertyField(armas);
                break;
            case Testing.Items.Medicinas:
                EditorGUILayout.PropertyField(medicinas);
                break;
        }
        serializedObject.ApplyModifiedProperties();
    }
}

 
Visita https://unity3d.com/es/learn/tutorials/topics/interface-essentials/building-custom-inspector para más información sobre los CustomEditor.
 
Un saludo.

Gracias @Harsel me has ayudado un monton :)

Etiquetas: