Unity 3D – Cómo hacer un cuadro de selección como el de un RTS

Una vez tenemos nuestro script, guardamos el código y volvemos a Unity. Seleccionamos el objeto GameLogic en el Hierarchy y arrastramos el GameLogicScript al Inspector.

Vamos a comprobar que nuestro proyecto funciona. Esto es algo que tenemos que acostumbrarnos a hacer a menudo. Le damos al Play y… ¡tachán! Nos peta. Si habéis seguido mis pasos deberíais ver el error «ArgumentException: The prefab you want to instantiate is null.» en vuestra Console, y por supuesto, no han aparecido los cazas.

No es nada grave, pero es algo con lo que deberemos estar SIEMPRE atentos. Todos los prefab que queramos instanciar deben ir en la carpeta «Resources». Aunque no nos la cree automáticamente, ni existan indicios de que deba ser así, Unity 3D reserva este nombre de carpeta para los Prefab. Así que la solución está en mover nuestro «FighterObject» a «Resources» y crear una carpeta «Models» donde guardaremos el modelo de la carpeta «Fighter». Y ahora podemos cargarnos la carpeta GameObjects, porque éstos van a estar en «Resources».

¿Por qué os he hecho cometer este error? Porque esto es importante que os lo grabéis a fuego, y la mejor manera de aprender es equivocándoos. O eso, o que soy un paquete. Eso… nunca lo sabréis ¡muajajajaja!

Hacemos un «Clear» en la «Console» para borrar los mensajes de error anteriores y volvemos a darle al Play. ¡Ahora sí!

Sin embargo se nos ve el molesto icono de la luz. No os preocupéis, esto en el juego no se verá. Sin embargo, es importante que empecemos a manejar las capas de visibilidad, que nos ayudarán bastante en proyectos más complejos para ver qué elementos tenemos en nuestra escena.

Le damos de nuevo al icono del Play para detener la ejecución (recordemos que los cambios que hagamos mientras está lanzado el juego no se quedan guardados una vez lo paremos) y en el Inspector del «Directional light», vamos a hacer click sobre el menú desplegable de «Layer -> Add Layer…». Comprobamos que las 7 primeras están reservadas por la aplicación. En el 8, vamos a haer click a la derecha para crear una capa que llamaremos «Lights». Volvemos a hacer click en el «Directional light» y vemos que ahora podemos elegir «Layer -> Lights». Vamos a seleccionar el «Spotlight» y vamos a meterlo también en «Layer -> Lights».

Ahora que hemos creado esta nueva capa de visibilidad, nos vamos al desplegable que hay arriba a la derecha y deseleccionamos «Lights». Las capas seleccionadas son las que veremos, y las demás permanecerán invisibles. Si en algún momento no veis algo que se suponía debería estar ahí, seguramente sea que la capa en la que se encuentra no está marcada en Layers.

Unity 3D – Cómo hacer un cuadro de selección como el de un RTS comentarios en «4»

  1. Me encants está sección *O* ,antes daba un poco de programación,nada del otro mundo pero ya se me ha olvidado casi todo T^T

      1. Sí, la verdad es que este tutorial me ha quedado un poquito bastante denso.

        Espero que con el código fuente, por lo menos la gente pueda trastear y ver cómo está todo si se pierden en algún punto del tutorial y no les sale ;).

  2. Buenas, estaba trasteando y me he quedado un poco colgado en la primera parte con el script, me da un error en la linea 14
    «GameObject fighter = Resources.Load(“FighterObject”)»
    Podrias poner de nuevo la fuente de ejemplo para ver como está la jerarquia y despejar mis dudas? Porque da error.
    Gracias

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *