Hola a todos, este post tiene como objetivo el hacer una introducción a
ambos de los lenguajes más usados cuando estamos programando en el motor de
juegos Unity3D, todos sabemos (y si no ahora si lo sabemos) que Unity nos
permite manipular código en tres lenguajes diferentes de programación: Boo (la
cual es una referencia a Python), C# y Javascript (conocido también como
Unityscript).
En este pos como dijimos antes, solo vamos a ver ambos de los lenguajes más
populares, C# y Javascript, así como se ha visto en diferentes foros, sitios
web y así, esos son los más usados.
Primero que todo vamos a hablar sobre Javascript, cuando hablamos de
Javascript o Unityscript, no nos estamos refiriendo a el mismo lenguaje web
exactamente, pero no vamos a detenernos mucho a reflexionar sobre esto, dicho
esto, cuando apenas están usando Unity, esta puede ser su mejor opción para
empezar, por qué? Les dejo unos puntos del por qué deberían usar Javascript
cuando están apenas empezando:
1)
Es más flexible: si están más relacionados en un ambiente de programación, saben
que hay diferentes tipos de variables para diferentes usos, en Javascript
cuando declaran una variable puedes o no declarar el tipo de variable que
estamos usando, entonces a como el código se va extendiendo, Unity, va a descifrar
por sí mismo para nosotros, así que si estamos haciendo algo mal, Unity, no va
a ser una molestia e incluso var a averiguar la forma correcta de arreglar
cualquier cosa que esté mal.
2)
Es un poco más fácil de entender y manejar: Ya que no es tan estricto (como
en el caso de C#) podemos seguir una línea más entendible en nuestro código, a
esto se le llama Tipado Dinámico, el único problema es que podría correr un
poquito más lento ya que Unity tiene que descifrar dinámicamente todas las
cosas que dejamos en blanco.
3)
Más soporte en la Guía de codificación: Cuando vemos la guía o referencia
de código que viene con Unity, todo bien ejemplificado con Javascript como predeterminado
(coincidencia?) pero podemos cambiarlo a ya sea C# o Boo, pero cuando nos
adentramos más profundamente en la referencia podemos notar que hay algunas
cosas que solo vienen documentadas en Javascript.
Ahora vamos con C#, ok?
C# es un lenguaje muy conocido más que todo en software como el Visual
Studio, donde lo usamos en plataforma Microsoft, es prácticamente la misma cosa
y es más fácil de usar cuando queremos usar las librerías MSDN (para las
personas que están más acostumbradas a estos ambientes), si estamos más
involucrados en la programación previamente podremos usar como mejor opción C#,
vamos a ver algunos puntos:
1)
Menos flexible pero más características: Con C# podemos manipular mucho más
datos que en Javascript (cosa que se ha estado mejorando últimamente)
y podemos usar características más llamativas usando esto como un puente para
comunicar algún tipo de dato externo en el cual no se podría usando Javascript.
2)
Más estricto pero más exacto: Como C# es más estricto, y tenemos que
escribir todas los tipos de variables y funciones, no hay oportunidades para el
error, todo error de escritura o errores funcionales en el código se nos van a
advertir antes de que empecemos a correr nuestro código, por ejemplo, cuando
intentamos convertir un tipo de variable a otro y lo hacemos mal, nos va a dar
un mensaje en la consola diciéndonos que es lo que estamos haciendo mal.
3)
Más acceso al System tools: Este punto es más para personas que están ya
involucradas con la programación, podemos tener acceso a características más
avanzadas, como se había dicho antes, para comunicarnos con cosas externas a Unity.
Bien ahora que hemos visto ambas con algunas pocas características, algunos
de ustedes se preguntaran cosas como es C# más estricto que Javascript y cosas
como declaraciones y cosas así, vamos a ver unos ejemplos:
Lo primero es que podemos ver en la ventana de C# (arriba) que hay una “Clase”
escrita y visible ahí y que en la ventana de
JS (abajo) no está, eso es porque Unity automáticamente crea una clase
escondida usando el mismo nombre del script, al contrario de C# donde tenemos
que declarar dicha clase, eso nos puede dar una mala pasada para mucho de los
nuevos usuarios por que por eso, no podemos usar un script que tenga un nombre
diferente que el nombre de la clase que declaramos dentro (así que olvidémonos de
copiar y pegar un script entero sin recibir ningún error ;) ).
Otro ejemplo es en las funciones que vemos ahí, podemos notar que en C#
tenemos primero que escribir el tipo de valor retornado por la función, por
ejemplo vacío o void (significa que no nos regresa ningún valor) o el de Bool, después
de esto escribimos el nombre de la función (y lo mismo para el parámetro de
adentro). Pasa exactamente lo mismo con las variables, pero en Javascript
podemos ver que para crear una variable solamente tenemos que escribir la
palabra “var” y no es necesario escribir el tipo de variable que estamos
declarando (como lo hemos hecho con la variable “started”).
Otra diferencia es que en Javascript el tipo de variable predeterminado es
una variable “pública”, eso significa que podemos ver el valor de la variable
en el inspector de Unity y usarlas mediante otros scripts, para hacerla privada
(que solo sea usada en este script y esconderla del inspector) tenemos que
escribir “private var”, al contrario de C# donde el predeterminado es una
variable privada en vez de pública, y tenemos que escribir la palabra “pública”
seguido del tipo de valor que estamos usando.
Entonces para terminar este post, hagámonos una pregunta: Debería elegir
Javascript o C# como lenguaje de programación?
Bien, no hay una respuesta correcta para esta pregunta, pero lo que puedo
sugerir es que si solo están empezando en todo esto de la programación,
Javascript, puede ser mucho más fácil para empezar, y no significa que no
puedan empezar con C# solo es una sugerencia y mi punto de vista para facilitar
más las cosas. Y si ya tienen el conocimiento o están más adentrados en esto de
la programación y quieren lograr efectos más avanzados y llamativos, sugiero
que intenten con C# pero la mejor práctica que pueden realizar es tomar un
script y traducirlo de un lenguaje a otro, como si fuera de Ingles a Español y
viceversa.
Bien, espero que esto haya sido de ayuda para ustedes y puedan encontrar su
camino para empezar a programar en Unity3D, sigan visitando este blog para encontrar
más ayuda (esperemos) en otros tipos y guas para ustedes.
~ Sycmasters