Desarrollo del editor de Unity---resumen

1. Ampliación y desarrollo de la propia interfaz de Unity

1. Ampliación de la interfaz del inspector

Nota: Algunas extensiones de clases heredadas de MonoBehaviour se utilizan para modificar el efecto de visualización de las variables de script en el panel Inspector.

[HideInInspector] Las variables están ocultas en el panel Inspector
[Serializar campo] Las variables se serializan y también se muestran las variables privadas
[No serializado] Las variables no se pueden serializar y no se muestran en el panel Inspector
[Menú de contexto("")]
[ContextMenuItem()]
[Rango (mín., máx.)]
[Encabezamiento("")]

Ejemplo de detalles:

Menú contextual ------------------------------------------------- --------------------------------------------------

    [ContextMenu("DoLogTest")]
    void DoLogTest()
    {         Debug.Log("Soy función DoLogTest");     }


 Elemento de menú contextual-----------

    [ContextMenuItem("Edad aleatoria", "Edad aleatoria")]
    public int Edad;
    void RandomAge()
    {         Age = new System.Random(DateTime.Now.Millisecond).Next(1, 100);     }

    [ContextMenuItem("Nombre aleatorio", "Nombre aleatorio")]
    public string Nombre;
    private void RandomName()
    {         string[] nombres = new string[] { "Jack", "Jim", "Tomas", "Han", "Ann" };         Nombre = nombres[nuevo Sistema.Aleatorio(FechaHora.Ahora.Milisegundo).Siguiente(0, 4)];     }


Rango----------------

   [Rango (0,100)]
   número flotante público;

Oyente----------

     [Header("puede ser capturado")]
    public bool canCatch;

 

2. Expansión de ventanas

Nota:

Opción del menú
ScriptableWizard
EditorVentana

Ejemplo de detalles:

Opción del menú-------------

    [MenuItem("Personalizado/Crear hijo para GameObjects seleccionados", true)]
    static bool ValidateMenuAddChild()
    {         return Selection.activeGameObject != null;     }

EditorWindow------

Devolución de llamada OnGUI()

OnDestroy() Se activa cuando se cierra EditorWindow.
OnFocus() Se activa cuando la ventana recibe el foco.
OnHierarchyChange() Se activa cuando hay un cambio en el panel Jerarquía.
OnInspectorUpdate() se activa a diez fotogramas por segundo para determinar si la interfaz del Inspector ha cambiado.
OnLostFocus() Se activa cuando la ventana pierde el foco.
Update() dispara 100 veces por segundo, en todas las ventanas visibles.
 

Cajones de propiedad--------

Editores personalizados---------

Dos formas de reescribir InspectorGUI

La primera:

El segundo tipo:

Para obtener más información, consulte: extensión del editor de Unity_blog de iningwei-CSDN blog_extensión del editor de unity

3. Expansión de la interfaz de escena

Nota:

menú de clic derecho
menú personalizado
deshabilitar selección
OnSceneGUI
Obtener el tamaño de SceneView
Vista de árbol
artilugios
Manejas

Ejemplo de detalles:

Menú contextual ---------------------------------------------- -- ------------------------------------------------ -- ----------------------------------

4. Expansión de la vista del juego

1. Ampliar el desarrollo de la barra de herramientas y la barra de menú

2. Desarrollo de la expansión de la interfaz del Inspector

5. API común de interfaz de usuario

Editor de uso común API de dibujo de interfaz de usuario
Línea vacía
EditorGUILayout.Separator() Una línea vacía relativamente grande
EditorGUILayout.Space() Una línea vacía relativamente pequeña
GUILayout.Space(10f) Controlable cuántas líneas están vacías
GUILayout.FlexibleSpace() El cálculo automático subyacente Vacío Diseño de área
Diseño
horizontal, vertical
GUILayout.BeginHorizontal() y GUILayout.EndHorizontal() juntos hacen que la GUI interna esté dispuesta horizontalmente. De la misma manera, también existe Vertical.
Área de plegado
Grupo de plegado EditorGUILayout.BeginFoldoutHeaderGroup() y EditorGUILayout.EndFoldoutHeaderGroup()
Plegable EditorGUILayout.Foldout()
Control de interruptores
Interruptor único EditorGUILayout.Toggle, EditorGUILayout.ToggleLeft
grupo de interruptores EditorGUILayout.BeginToggleGroup, EditorGUILayout.EndToggleGroup
Área de desplazamiento
EditorGUILayout.BeginScrollView () y EditorGUILayout .EndScrollView()
campo de tipo
EditorGUILayout.LabelField() campo de etiqueta
EditorGUILayout.IntField() Campo entero
EditorGUILayout.FloatField() Campo de punto flotante
EditorGUILayout.TextField() Campo de texto EditorGUILayout.Vector2Field
() Campo vectorial bidimensional
EditorGUILayout.Vector3Field() Campo vectorial tridimensional
EditorGUILayout.Vector4Field() Cuatro dimensiones campo vectorial
EditorGUI Layout.ColorField () Campo de color
EditorGUILayout.CurveField() Campo de curva (AnimationCurve)

Control deslizante, barra de progreso
EditorGUILayout.Slider(), EditorGUILayout.IntSlider()
EditorGUILayout.MinMaxSlider() Control deslizante doble
EditorGUI.ProgressBar()

Cuadro de diálogo
EditorGUILayout.HelpBox()

Selección de enumeración
EditorGUILayout.EnumPopup Enumeración de selección única
EditorGUILayout.EnumFlagsField Enumeración de selección múltiple
EditorGUILayout.IntPopup y EditorGUILayout.MaskField EditorGUILayout.IntPopup Entero
de selección única
EditorGUILayout.MaskField Configuración de selección múltiple
Algunas notas
EditorGUILayout.DropdownButton No es un botón desplegable, sino un botón que se dispara cuando se presiona el ratón. El botón se activa solo cuando se suelta el mouse.

Supongo que te gusta

Origin blog.csdn.net/qq_38074938/article/details/128931582
Recomendado
Clasificación