Iniciando nuestro custom Editor

Clase 13 de 20Curso de Herramientas de Unity

Resumen

¿Cómo empiezo a crear un Custom Editor en Unity?

¡Es hora de adentrarse en el mundo de los Scriptable Objects y Custom Editors en Unity! Los Scriptable Objects son una poderosa herramienta que te permite almacenar y gestionar datos dentro del editor de Unity de manera eficiente, semejante a un JSON, pero con funcionalidades extendidas. Vamos a crear una base de datos para un juego RPG usando Scriptable Objects y exploraremos cómo expandir sus capacidades para facilitar la gestión de información.

¿Qué es un Scriptable Object y cómo se crea?

Un Scriptable Object es una clase especial en Unity que actúa como contenedor de datos y nos permite crear instancias reutilizables que no dependen de objetos de juego. Para crear nuestro Scriptable Object, no necesitaremos la clase MonoBehaviour. Aquí te mostramos cómo iniciar:

using UnityEngine;

[CreateAssetMenu(fileName = "Item", menuName = "Tools/ScriptableItems")]
public class ItemScriptableObject : ScriptableObject
{
    // Estructura de datos para ítems
    [System.Serializable]
    public struct Item
    {
        public string displayName;
        public ItemType itemType;
        public Sprite icon;
        public int damage;
        public int restoreAmount;
    }

    [SerializeField]
    private Item item;
}

public enum ItemType
{
    Weapon,
    Potion
}

¿Cómo estructurar y serializar datos en un Scriptable Object?

Es esencial estructurar nuestros datos para un fácil acceso y manipulación. En nuestro ejemplo, creamos una estructura Item que contiene atributos como displayName, itemType, icon, damage y restoreAmount. No olvides que para que Unity pueda mostrar estos datos en el inspector, deben ser serializables.

  • DisplayName: Nombre visible del ítem.
  • ItemType: Tipo del ítem, definido por una enumeración (enum).
  • Icon: Imagen que representa el ítem.
  • Damage: Daño del ítem si es un arma.
  • RestoreAmount: Cantidad restaurada por el ítem si es una poción.

Para que Unity reconozca la estructura en el inspector, debe estar marcada con el atributo [System.Serializable].

¿Cómo genero y utilizo Scriptable Objects en Unity?

Después de definir el Scriptable Object y sus datos, podemos generarlo y verlo en Unity. Sigue estos pasos para crear instancias y gestionar tus datos:

  1. Crear un nuevo Scriptable Object:

    • Ve a la carpeta en la que deseas almacenar tu objeto.
    • Haz clic derecho, selecciona CrearToolsScriptableItems. Aparecerá una nueva instancia que puedes personalizar.
  2. Modificar los atributos en el Inspector:

    • Asigna un DisplayName, selecciona un ItemType, elige un Icon y ajusta los valores de Damage o RestoreAmount, según corresponda.
  3. Personaliza tus objetos:

    • Edita y gestiona múltiples instancias de objetos sin necesidad de modificar los assets directamente.
    • Crea una base de datos completa con diversos ítems, adecuándolos a tus necesidades de diseño de juego.

Ahora que dominas la creación de Scriptable Objects y estás a un paso de personalizar más tu editor, te animo a seguir explorando y creando tus propios elementos únicos para tu juego RPG. La flexibilidad y potencia de los Scriptable Objects en Unity te permiten manejar distintos tipos de datos con gran eficiencia y control. ¡Buena suerte en tu viaje creativo!