Johanna Apure Canónico
Tengo dudas acerca de algunos términos como: Instantiate, Vector3, Quaternion.identity
Aunque se que lo entenderé con la practica, ya he pasado por esto cuando aprendía a programar para los navegadores.
Construir la mecánica principal de un juego tipo match en Unity empieza por crear una cuadrícula dinámica desde código C#. Aquí aprendes a programar un script Board que genere filas y columnas usando prefabs, ideal si estás dando tus primeros pasos en desarrollo de videojuegos 2D.
¿Cómo organizar los scripts y crear la clase Board en Unity?
Antes de escribir código conviene ordenar el proyecto. Una estructura clara te ahorra horas de búsqueda más adelante.
Dentro de la ventana de Project, crea una carpeta llamada Scripts con clic derecho, Create Folder. Ahí vivirán todos los archivos de lógica del juego. Dentro de esa carpeta, genera un nuevo script de C# llamado Board, que será el responsable de manejar la cuadrícula [00:14].
Al abrirlo en Visual Studio, lo primero es declarar las propiedades que definen el tablero:
public int width para guardar el ancho.public int height para guardar el alto.public GameObject tileObject como referencia al objeto que ocupará cada espacio vacío [00:48].¿Para qué sirve declarar variables como public en Unity? Hacerlas public las expone en el Inspector, así puedes modificar valores como el tamaño del tablero sin tocar el código.
¿Cómo conectar el script Board con un GameObject vacío?
De vuelta en Unity, crea un empty GameObject en la jerarquía y nómbralo Board. Desde el Inspector, agrégale el componente Board que acabas de programar y asigna valores iniciales: 5 de ancho y 5 de alto [01:35].
El siguiente paso es preparar el tile visual. En la carpeta de Sprites tienes el asset Empty. Arrástralo a la escena para que Unity lo cree como GameObject con su Sprite Renderer configurado por defecto.
¿Cómo convertir un GameObject en prefab reutilizable?
Los prefabs son plantillas que permiten instanciar copias idénticas en tiempo de ejecución. Para crearlo:
Prefabs en Assets.Empty desde la jerarquía hacia esa carpeta.Empty original de la escena, porque será el script Board quien lo genere dinámicamente [02:30].Board y arrastra el prefab al campo TileObject del Inspector.¿Cómo programar la función SetupBoard con dos for loops?
La generación de la cuadrícula vive en una función llamada SetupBoard, invocada desde Start() para que se ejecute al iniciar el juego.
Un truco práctico de productividad: escribe el nombre de la función antes de existir. Visual Studio marcará el error con el linter, y al hacer hover sobre el nombre te ofrecerá la opción de generar el método automáticamente [03:25]. Borra el throw new NotImplementedException que aparece por defecto y empieza a implementar la lógica.
La estrategia es usar dos for loops anidados: uno recorre el ancho (X) y otro el alto (Y).
csharp void SetupBoard() { for (int x = 0; x < width; x++) { for (int y = 0; y < height; y++) { var o = Instantiate(tileObject, new Vector3(x, y, -5), Quaternion.identity); o.transform.parent = transform; } } }
¿Qué hace Instantiate y por qué usar Quaternion.identity?
La función Instantiate crea una nueva instancia del prefab en el escenario y devuelve una referencia al GameObject generado. Recibe tres argumentos clave:
tileObject.Vector3, usando las coordenadas X e Y del loop y un Z fijo en -5 para controlar la profundidad.Quaternion.identity significa sin rotación aplicada [04:45].Después de instanciar, asignar o.transform.parent = transform agrupa cada tile dentro del objeto Board en la jerarquía, manteniendo todo organizado.
¿Qué es un prefab en Unity? Es un GameObject reutilizable guardado como asset. Te permite instanciar copias idénticas en runtime sin recrearlas manualmente.
¿Cómo probar la cuadrícula y qué pasa si cambias el tamaño?
Guarda el script y vuelve a Unity. Con el objeto Board configurado en 5x5 y el prefab referenciado, presiona Play. La cuadrícula aparece generada dinámicamente.
Lo divertido es jugar con los valores: cambia el tablero a 12 por 5 y vuelve a darle play. Verás cómo el script responde sin tocar una línea de código adicional, gracias a que las variables width y height están expuestas en el Inspector.
El resultado tiene un detalle por resolver: la cámara no alcanza a ver la cuadrícula completa en pantalla. Ese ajuste de la vista de juego es el siguiente paso natural para que tu tablero se vea bien sin importar su tamaño.
¿Qué tamaño de cuadrícula vas a probar primero en tu proyecto? Cuéntame en los comentarios.
Johanna Apure Canónico
Tengo dudas acerca de algunos términos como: Instantiate, Vector3, Quaternion.identity
Aunque se que lo entenderé con la practica, ya he pasado por esto cuando aprendía a programar para los navegadores.
José Arturo Guamán Pachacama
cual extensión usas en visual code para usar unity y c#
David Santiago Herrera Reales
Por si al hacer create empty no les sale la opcion Board para añadir el script al nuevo elemento, entonces tiene que ponerle el MonoBehaviour a la funcion en el visual estudio y les quedaria asi todo el codigo:
using UnityEngine; public class Board: MonoBehaviour { public int width; public int height; public GameObject tileObject; }
Juan Carlos Huaman Navarro
no aparece el linter en mi VS , saben como se solucina eso?
Platzi
Es posible que debas instalar una extensión de linter específica para C# en Visual Studio Code. Verifica las extensiones sugeridas por el IDE y asegúrate de tener instalada la correcta.
Brandon Fonseca
Para trabajar con Unity en Visual Studio Code, es recomendable instalar la extensión "C#". Esta extensión proporciona soporte para el lenguaje C#, incluyendo resaltado de sintaxis, IntelliSense y depuración, lo que facilita la programación de scripts para tu juego en Unity. Además, asegúrate de tener instalada la extensión "Unity Debugger" para una experiencia de depuración más completa.
Recuerda que la combinación de estas herramientas puede mejorar significativamente tu flujo de trabajo en el desarrollo de videojuegos.
cristian guerrero
creo que nos saltamos muchos pasos sin explicar en programacion