Cómo hacer que las variables cambien según el tipo de enumeración que se muestra en el compilador

Primero, cree un nuevo script y cuélguelo en cualquier objeto. El código del script de prueba es el siguiente:

public class Test: MonoBehaviour
{
    
    
    public enum TestType
    {
    
    
        type1,
        type2,
        type3,
    }

    public TestType type;
    public int type_01_Int;
    public string type_02_String;
    public List<bool> type_03_List;
}

En este momento, aparecerá la siguiente situación en el compilador:
inserte la descripción de la imagen aquí

Cree otro script llamado TestEditor, el código específico es el siguiente:

[CustomEditor(typeof(Test))]
public class TestEditor: Editor
{
    
    
    private SerializedObject test;
    private SerializedProperty type, type_01_Int, type_02_String, type_03_List;

    private void OnEnable()
    {
    
    
        test = new SerializedObject(target);
        type = test.FindProperty("type");
        type_01_Int = test.FindProperty("type_01_Int");
        type_02_String = test.FindProperty("type_02_String");
        type_03_List = test.FindProperty("type_03_List");
    }

    public override void OnInspectorGUI()
    {
    
    
        base.OnInspectorGUI();

        // 更新test脚本
        test.Update();

        EditorGUILayout.PropertyField(type);
        if (type.enumValueIndex == 0)
        {
    
    
            EditorGUILayout.PropertyField(type_01_Int);
        }
        else if (type.enumValueIndex == 1)
        {
    
    
            EditorGUILayout.PropertyField(type_02_String);
        }
        else if (type.enumValueIndex == 2)
        {
    
    
            EditorGUILayout.PropertyField(type_03_List);
        }

        // 将该脚本变量应用
        test.ApplyModifiedProperties();
    }
}

No es necesario colgar el script en el objeto.

En este momento, vuelva a mirar la pantalla del compilador y cambiará a la siguiente pantalla:

inserte la descripción de la imagen aquí

En este punto podemos ver que la parte superior es la visualización de la variable del primer script, y la parte inferior es la visualización del control del segundo script.
El uso de este método puede lograr la gestión clasificada de las variables del compilador, que no es redundante y, naturalmente, no necesita la visualización de la parte anterior. Solo se necesita el segundo script para controlar la parte de visualización, por lo que solo es necesario eliminar las variables. en el primer script de la compilación, simplemente muéstrelo en el navegador, modifique el primer script de la siguiente manera:

public class ChangeInspectorAccordingTheType : MonoBehaviour
{
    
    
    public enum TestType
    {
    
    
        type1,
        type2,
        type3,
    }

    [HideInInspector]
    public TestType type;
    [HideInInspector]
    public int type_01_Int;
    [HideInInspector]
    public string type_02_String;
    [HideInInspector]
    public List<bool> type_03_List;
}

Al mismo tiempo, simplemente comente una línea de código que actualice el script de prueba en TestEditor.

Como se muestra en la imagen:

inserte la descripción de la imagen aquí

En este punto, nuestro objetivo se ha logrado y podemos cambiar el tipo de enumeración a voluntad para ver el efecto.

Supongo que te gusta

Origin blog.csdn.net/weixin_44081533/article/details/118612824
Recomendado
Clasificación