Conviene haber comprendido Delegados, eventos y callbacks.
Avanza en orden. Cada lección está redactada para Palta es Cool, utiliza ejemplos propios y termina con una actividad cuya respuesta puedes desplegar.
Ubícate antes de avanzar
Al terminar deberías poder relacionar Código y validación con ScriptableObject y resolver un caso nuevo.
Reserva entre 75 y 120 minutos o divide el laboratorio en dos sesiones.
Instala Unity Hub, una versión LTS compatible y un IDE con integración para C#. Conserva un proyecto de laboratorio separado.
Abrir la guía de herramientas →Diagnóstico rápido: ¿cómo se relacionan Código y validación y ScriptableObject? +
No necesitas acertar todavía. Escribe una hipótesis de dos líneas y compárala con tu respuesta al finalizar; si puedes corregirla y justificar el cambio, hubo aprendizaje.
Aprende el tema paso a paso
Construirás límites que reduzcan recompilación, dependencias y errores al crecer el proyecto, sin convertir la arquitectura en ceremonia.
- Convenciones, documentación y validación reducen costo de cambio
- ScriptableObject comparte configuración, no estado accidental
- Namespaces y Assembly Definitions vuelven explícitas las dependencias
Convenciones, documentación y validación reducen costo de cambio
Nombres consistentes, orden de miembros y una responsabilidad por archivo facilitan navegar. Los comentarios explican decisiones; la documentación XML describe APIs públicas. Helpers deben agruparse por dominio y ser preferentemente puros.
Una guía corta y aplicada supera reglas extensas ignoradas.
OnValidate detecta referencias y rangos cerca del origen.
Una utilidad sin dominio suele convertirse en cajón de sastre.
¿Qué debe explicar un comentario que el código no puede decir por sí solo?
Mostrar respuesta +
La razón de una decisión, una restricción externa, una unidad inesperada o el costo aceptado; no una traducción literal de la instrucción.
ScriptableObject comparte configuración, no estado accidental
Un ScriptableObject es un asset serializado que puede alimentar varios prefabs. Funciona bien para definiciones de armas, items o reglas. El estado temporal de una partida no debería escribirse sin intención en el asset compartido.
El asset representa datos persistentes de diseño.
La instancia representa estado mutable durante el juego.
Clonar o copiar evita contaminar configuración compartida.
¿Qué problema aparece al guardar vidaActual de un enemigo dentro del asset compartido?
Mostrar respuesta +
Todas las instancias podrían compartir o persistir ese cambio. La vida actual pertenece a cada enemigo; el asset debería contener configuración como vida máxima.
Namespaces y Assembly Definitions vuelven explícitas las dependencias
Namespaces evitan colisiones y expresan módulos. Assembly Definitions separan compilación de runtime, editor y tests, reducen recompilación y bloquean dependencias indebidas. La compilación condicional debe probarse en cada variante.
Carpeta y namespace pueden alinearse sin ser lo mismo.
Runtime nunca debe depender del ensamblado Editor.
No fragmentes ensamblados sin una frontera real.
¿Qué beneficio ofrece una Assembly Definition además de compilar menos?
Mostrar respuesta +
Hace visibles y verificables las dependencias entre módulos, evitando que cualquier script acceda accidentalmente a cualquier otro.
Tu recorrido en tres ideas
- Convenciones, documentación y validación reducen costo de cambio
- ScriptableObject comparte configuración, no estado accidental
- Namespaces y Assembly Definitions vuelven explícitas las dependencias
Separa un módulo de armas en cuatro fronteras
Une datos configurables, estado de instancia, namespaces, ensamblados, validación y pruebas.
El sistema mezcla datos, munición actual, Inspector, efectos visuales y utilidades de Editor en un solo script.
Procedimiento
- Dibuja dependencias y distingue configuración, runtime, presentación y editor.
- Crea namespaces y ensamblados mínimos para Runtime, Editor y Tests.
- Migra en pasos pequeños y verifica prefabs, assets y compilación.
Evidencia mínima
- Diagrama antes y después.
- Runtime no referencia UnityEditor.
- Dos armas comparten configuración sin compartir munición actual.
Mostrar razonamiento modelo +
ArmaData conserva valores persistentes; ArmaRuntime posee estado; la vista reacciona; Editor mejora autoría; Tests referencia Runtime. Las fronteras existen por razones de cambio, no por cantidad de carpetas.
Para ir más lejos¿Qué ensamblado debería conocer una integración exclusiva de Android?
Comprueba que puedes usarlo
Antes de continuar, revisa estos tropiezos frecuentes y resuelve un caso sin copiar los ejemplos.
Convertir Helper en un cajón de sastre que conoce todo el proyecto.
Guardar estado temporal de una partida dentro de un ScriptableObject compartido.
Ahora hazlo sin guía
Organiza un módulo de combate con runtime, datos ScriptableObject, editor y tests separados por namespaces y ensamblados.
Mostrar pauta de corrección +
- Las dependencias avanzan en una dirección y runtime no referencia Editor.
- Configuración persistente y estado de instancia están separados.
- Las fronteras reducen acoplamiento sin fragmentar el proyecto arbitrariamente.
