Contenido del curso
Dibujando en el editor
Prácticando en el editor
Herramientas de Editor
- 12

Cómo crear PropertyDrawers en Unity
19:28 min - 13

Crea una base de datos RPG con Scriptable Objects
08:17 min - 14

Serialized properties
10:21 min - 15

Optimizando nuestro custom editor
14:21 min - 16

Guardar y cargar data de herramientas: json, scriptable objects, txt y csv
13:37 min - 17

Crea una Editor Window con AssetDatabase
09:58 min - 18

Scroll view con botones en Unity Editor
07:58 min - 19

Editor windows: agregando funcionalidades
13:39 min
Cierre del curso
Menús contextuales en el Inspector de Unity
Resumen
Crear un menú contextual en Unity te permite ejecutar funciones rápidas desde el Inspector sin escribir lógica adicional dentro del juego. Si trabajas con componentes propios, este recurso te ahorra tiempo cuando necesitas instanciar objetos, resetear valores o probar comportamientos directamente desde el editor.
Esta guía te muestra cómo usar los atributos ContextMenu y ContextMenuItem en C# para extender Unity, con ejemplos prácticos como instanciar una esfera o reiniciar la vida de un personaje.
Qué es el atributo ContextMenu en Unity
El atributo ContextMenu agrega una opción al menú que aparece al hacer clic derecho sobre un componente del Inspector. Es ideal para invocar métodos sin necesidad de un botón visible.
¿Qué hace el atributo ContextMenu? Convierte un método de tu script en una opción seleccionable desde el menú de tres puntos del componente en Unity. No requiere parámetros y funciona con métodos públicos o privados.
Cómo instanciar una esfera con ContextMenu
Dentro de tu clase, declara un método y colócale el atributo encima. El método puede llamar a ObjectCreatePrimitive para generar una esfera, asignarle posición [0,0,0] y enfocarla en la escena.
El flujo básico es así:
- Crear la primitiva con
ObjectCreatePrimitive(PrimitiveType.Sphere). - Asignar la posición en el mundo a cero.
- Usar la clase
Selectionpara marcar el objeto activo. - Llamar a
SceneView.lastActiveSceneView.FrameSelected()para hacer zoom.
Para que Selection y SceneView funcionen necesitas importar la librería del editor con using UnityEditor;. Este detalle es clave porque sin esa referencia el compilador marcará error.
Dónde aparece la opción en el Inspector
Una vez guardado el script, ve al GameObject que tenga el componente, haz clic en los tres puntos del componente o clic derecho sobre él. Verás la opción con el nombre que asignaste, por ejemplo Spawn Sphere. Al pulsarla, Unity ejecuta el método y selecciona la esfera creada automáticamente.
Para qué sirve ContextMenuItem en propiedades
Mientras ContextMenu actúa sobre el componente completo, ContextMenuItem se aplica directamente sobre una variable del Inspector. Esto te permite ejecutar funciones específicas asociadas a un campo concreto.
¿Cuál es la diferencia entre ContextMenu y ContextMenuItem?
ContextMenuagrega opciones al menú general del componente.ContextMenuItemagrega opciones al hacer clic derecho sobre una propiedad específica, como una variable de vida o velocidad.
Cómo resetear una propiedad de vida
Imagina que tienes una variable life y quieres devolverla a 100 con un clic. Primero crea el método que ejecuta la lógica:
- Define un método llamado
ResetLifeque asignelife = 100. - Sobre la variable
life, agrega el atributoContextMenuItemcon dos parámetros: el texto visible y el nombre del método. - Usa la palabra clave
nameof(ResetLife)en lugar de escribir el nombre como string. Así, si renombras el método, Visual Studio actualiza la referencia automáticamente y evitas errores silenciosos.
En el editor, haz clic derecho sobre el campo Life y aparecerá la opción Reset Life. Al seleccionarla, el valor regresa a 100 sin tocar el resto del componente.
Cuándo conviene usar menús contextuales
Estos atributos brillan cuando necesitas acelerar tareas repetitivas durante el desarrollo. Algunos casos donde resultan útiles:
- Generar objetos de prueba en escena con un solo clic.
- Restaurar valores por defecto de propiedades específicas.
- Ejecutar validaciones o limpiezas sin correr el juego.
- Probar funciones de un componente sin crear botones temporales.
¿Necesito que el método sea público o estático? No. El método puede ser público o privado, y no requiere ser estático. Lo único obligatorio es que pertenezca a la misma clase donde declaras el atributo.
La diferencia con un botón visible en el Inspector es que el menú contextual queda oculto hasta que lo invocas, lo que mantiene la interfaz limpia. Si prefieres que la acción aparezca como un botón permanente, existen otros atributos que cumplen ese rol y veremos cómo configurarlos más adelante.
¿Ya identificaste qué métodos de tus componentes podrían vivir mejor dentro de un menú contextual? Cuéntame en los comentarios qué atajos planeas crear para tu próximo proyecto en Unity.