Usted puede crear cualquier número de ventanas personalizadas en su aplicación. Estas se comportan igual que el Inspector, Escena o cualquier otra integrada. Esta es una gran manera de agregar una interfaz de usuario a un sub-sistema para su juego.
Hacer una ventana del editor personalizada implica los siguientes pasos sencillos:
Con el fin de hacer su Ventana de Editor, su script debe ser almacenada adentro de una carpeta llamada “Editor”. Haga una clase en este script que derive de la Ventana del Editor. Luego escriba sus controles GUI en la función OnGUI interior.
//JS Example
class MyWindow extends EditorWindow {
function OnGUI () {
// The actual window code goes here
}
}
//C# Example
using UnityEngine;
using UnityEditor;
using System.Collections;
public class Example : EditorWindow
{
void OnGUI () {
// The actual window code goes here
}
}
MyWindow.js - colocada en una carpeta llamada ‘Editor’ dentro su proyecto.
Con el fin de mostrar la ventana en la pantalla, haga un elemento del menú que lo muestra. Esto es hecho creando una función que es activada por la propiedad MenuItem.
El comportamiento por defecto en Unity es en reciclar ventanas (entonces seleccionando el item del menú nuevamente va a mostrar unas ventanas existentes. Esto es hecho usando la función EditorWindow.GetWindow De esta manera:
//JS Example
class MyWindow extends EditorWindow{
@MenuItem ("Window/My Window")
static function ShowWindow () {
EditorWindow.GetWindow (MyWindow);
}
function OnGUI () {
// The actual window code goes here
}
}
//C# Example
using UnityEngine;
using UnityEditor;
using System.Collections;
class MyWindow : EditorWindow {
[MenuItem ("Window/My Window")]
public static void ShowWindow () {
EditorWindow.GetWindow(typeof(MyWindow));
}
void OnGUI () {
// The actual window code goes here
}
}
Mostrando el MyWindow
Esto creará una ventana de editor estándar, acoplable que guarda su posición entre las invocaciones, puede ser utilizado en diseños personalizados, etc. Para tener más control sobre qué es creado, usted puede usar GetWindowWithRect
Los contenidos actuales de la ventana son renderizados al implementar la función OnGUI. Usted puede utilizar las mismas clases UnityGUI que usted usa para el GUI dentro del juego (GUI and GUILayout). Adicionalmente, nosotros proporcionamos algunos controles GUI adicionales, ubicados solamente en las clases del editor EditorGUI y EditorGUILayout. Estas clases se suman a los controles que ya están disponibles en las clases normales, por lo que se pueden mezclar y combinar a voluntad.
El siguiente código C# le muestra cómo usted puede agregar elementos GUI a su Ventana de Editor Personalizada:
//C# Example
using UnityEditor;
using UnityEngine;
public class MyWindow : EditorWindow
{
string myString = "Hello World";
bool groupEnabled;
bool myBool = true;
float myFloat = 1.23f;
// Add menu item named "My Window" to the Window menu
[MenuItem("Window/My Window")]
public static void ShowWindow()
{
//Show existing window instance. If one doesn't exist, make one.
EditorWindow.GetWindow(typeof(MyWindow));
}
void OnGUI()
{
GUILayout.Label ("Base Settings", EditorStyles.boldLabel);
myString = EditorGUILayout.TextField ("Text Field", myString);
groupEnabled = EditorGUILayout.BeginToggleGroup ("Optional Settings", groupEnabled);
myBool = EditorGUILayout.Toggle ("Toggle", myBool);
myFloat = EditorGUILayout.Slider ("Slider", myFloat, -3, 3);
EditorGUILayout.EndToggleGroup ();
}
}
Este ejemplo resulta en una ventana que tiene este aspecto:
Para más información, eche un vistazo al ejemplo y la documentación en EditorWindow page.