Entradas Recientes

Mejores Libros para Aprender Unity

Como todo en la vida, nadie nace siendo un experto en nada (a contrario de lo que la gente cree!), todo es puro trabajo duro y disciplina, y si quieres volverte un profesional en unity, no hay camino facil, y no creas que por leer uno o dos libros seras un profesional.

Pero con algo de trabajo duro y mucha constancia podras llegar a serlo, antes de empezar a hablar sobre los libros que me ayudaron a conocer Unity, hablemos sobre como debes leerlos y como debes asimilar sus conocimientos primero.


No, No es una Carrera

Muchas veces creemos que por leer un libro en 2 o 3 dias, habremos asimilado todo su conocimiento y la verdad es que solamente habremos perdido 2 o 3 dias, tomalo con calma leelo poco a poco asimila sus conocimientos, y reflexiona sobre el porque esa linea de codigo debe ir primero que esta otra.


Practica, Practica y Luego Practica un Poco Mas!

Aunque tomes en cuenta el punto anterior, de nada sirve leer 200 pag sobre como programar en Unity, si no practicas, no basta con que veas el codigo en el libro, mientras lees ten abierto Unity y ve probando y jugando con cada pieza de codigo interesante que vez.

Ok Ahora Vamos a por los Libros!!!


Unity Game Development in 24 Hours


Este libro lo calificaria mas a un nivel basico, si no tienes mucha experiencia en Unity o en el campo de la programacion, este puede ser tu punto de entrada en el mundo de la programacion.

Y no te dejes llevar por el nombre, consumir este libro en solo 24 horas sera un gran error.


Puedes conseguirlo aqui(link)






Learning C# by Developing Games With Unity



Ok si ya sabes un poco mas sobre Unity, sabes que es el Hierachy, sabes la diferencia entre la ventana Scene y Game, pero aun no eres un experto programando, este libro te ayudara a empezar tus primeros proyectos, como ya dije asegurate no solo de leer como se hacen, si no hazlos practicalos, añadeles mas cosas, tu propio toque personal equivocate, compartelo con tus amigos y riete un rato de los errores que saldran.

Dado lo anterior calificaria este libro mas como un intermedio bajo.

Puedes conseguirlo aqui(link)






Mastering Unity 2D Game Development



Luego de que empieces a construir tus primeros proyectos, entraras a una etapa en la que te preguntaras, esta sera la mejor manera de hacerlo?, quizas si muevo esto para aca y pongo este pedazo de codigo aqui el codigo quede mas legible, entonces es momento de pasar a algo un poco mas avanzado, en este libro construiras un juego 2D tipo RPG , para leerlo deberas estar ya familiarizado con Unity, y haber ya hecho tus primeros proyectos y tener algunas nociones basicas sobre OOP.

Diria que este libro caeria totalmente en la clasificacion intermedio

Puedes conseguirlo aqui(link)






Mastering Unity Scripting



Este libro ya es un poco mas avanzado, si quieres empezar a leerlo asegurate de saber programar, y de manejar correctamente C#, de ser el caso este libro te enseñara acerca de las mejores practicas, y te recomiendo aproveches mucho la seccion de debuging, si puede llegar a ser aburrido pero es muy util y te ahorrara mucho tiempo cuando busques errores en tu codigo (lo cual sucedera).

Si aun estas iniciando en Unity te recomiendo que guardes tu dinero y mires un poco mas arriba, este libro lo calificaria totalmente como intermedio-avanzado.

Puedes conseguirlo aqui(link)




Unity Shaders and Effects Cookbook



Danger! ok solo bromeo pero si este libro es avanzado, trata unicamende de shaders, no te explicara formalmente como hacer tus shaders pero te dara muchos scripts para que puedas lograr los efectos deseados, y para algunos desarrolladores, es mas que suficiente ver algo de codigo para empezar a entender como funcionan las cosas.
sin duda un libro nivel avanzado.


Puedes conseguirlo aqui(link)



Unity UI Cookbook



Y sin duda llega el momento en el que debes empezar a precuparte por cosas como la Interfaz de Usuario (cosas que aveces no tomamos en cuenta para proyectos personales), Este libro al igual que el anterior solo te brindara scripts pre hechos, pero mira el codigo hazlo practicalo y modificalo, y veras como rapidamente aprenderas.

Puedes conseguirlo aqui(link)








(Bonus) Pro C# 5.0 and the .NET 4.5 Framework

Ok dejame aclarar un par de cosas antes de hablar acerca de este libro, si se que no esta relacionado directamente con Unity (eres muy perspicaz!), y si se que que en unity puedes usar tanto Javascript, como C#, no quiero formar parte de la eterna lucha entre lenguajes, solo te puedo comentar que en mi trabajo como freelancer, jamas he trabajado con otro programador que use Javascript o me han exigido usar Javascript, al contrario me han exigido en muchos casos usar C# (para el cual no tengo ningun problema).

Y cuando quieres entrar al mundo laboral, muchas veces no basta con enviar tu curriculum (para la mayoria de los casos no), el curriculum solo te concreta una entrevista en la cual te haran preguntas complejas acerca de C# y Unity, ejemplo saes que es un Stringbuilder o la diferencia entre String y string? o que es linq? sabes para que se usa IDisposable?, entonces suponiendo que vengas de un nivel medio-avanzado o avanzado, este libro te proveera esas herramientas finales, para conseguir tu trabajo soñado en la industria.


Puedes conseguirlo aqui(link)

Ahora no tienes una escusa, si tu meta es programar juegos y vivir de ello, es momento de ser constante y trabajar fuerte, suerte!!, si te ha parecido interesanto de alguna forma no dudes en compartir.

¿quieres que trate algun tema en especifico dentro del desarrollo de juegos?, solo dejame saber.

Extendiendo el Codigo de Unity

Algo que me ha resultado muy util y practico muchas veces es la capacidad de añadir metodos, a las clases sin necesidad de reescribir el codigo original, algunas veces simplemente queremos realizar tareas comunes o simples en GameObjects o Transform o cualquier otro objecto cosntruido por unity, y ademas quieres que estos metodos sean accesibles desde cualquier script, si eres un poco obsesionado como yo en mantener tu codigo limpio y legible no quedras colocar ese metodo en cualquier script o peor aun ir copiando esa pieza de codigo en todos los scripts que lo necesites (que miedo!!!).

Es aqui donde entra al rescate algo que se conoce como extension methods o metodos de extension, si quieres una explicacion profunda aqui esta la documentacion, pero en resumidas cuentas como ya dije podras agregar metodos a objetos ya construidos, ejemplo si quieres que un GameObject siga a posicion del mouse que es algo bastante comun, simplemente podrias escribir tu codigo y podras hacer uso de el desde cualquier script podrias escribir algo como gameObject.FollowMouse() (por cierto porque no existe algo asi en Unity??!!) , entonces primero dejame mostrarte las reglas basicas para construir correctamente un extension method y luego te mostrare algunas aplicaciones utiles para el mismo.

Como Hacer un Extension Method


public static class ExtensionMethods
{
public static void MyExtension(this GameObject go)
{
//do something
}
}



Como podemos ver es bastante sencillo solo hay un par de cosas que debemos recordar, primero la clase debe ser estatica para que pueda ser accesible desde cualquier punto, la clase no pude heredar de MonoBehaviour (no te procupes solo nos quita la posibilidad de usar cosas como el Update, Start etc) y si no ha sido una equivocacion antes de la palabra GameObject he puesto this, como a lo mejor ya sabes (deberias saberlo!) la palabra this se utiliza para referirse al propio objecto, en cualquier otro contexto dentro de esta pequeña pieza de codigo funcionaria asi, pero en este caso se refiere que el objecto que recibe es el mismo que realiza el llamado (????!!!!) , ejemplo:



public static class Test : MonoBehaviour
{
void Start()
{
GameObject go = new GameObject("Hola");
go.MyExtension();
}
}


En este ejemplo hacemos un llamado a nuestro extension method, pero un momento no hemos pasado ningun argumento y el metodo esta esperando un objecto de tipo GameObject?, tranquilo como ya he dicho al colocar la palabra this antes del GameObject en el extension method, C# entiende que el elemento a pasar es el propio objecto, ejemplo esta linea podria ser interpretada de esta manera GameObject.MyExtension(go); o go.MyExtension(go); pero en fin.


Aja y Enserio Esto Puede Llegar a ser Util?

Si y mucho, te dejare algunos ejemplos de metodos que he hecho.


public static class ExtensionMethods
{

public static Camera GetBlurCamera(this Camera cam)
{
return GameObject.Find("BlurCamera").GetComponent<camera>();
}

public static void SetRenderCamera(this Canvas canvas)
{
canvas.worldCamera = Camera.main;
}

public static void Reset(this GameObject go)
{
go.transform.position = Vector3.zero;
go.transform.rotation = Quaternion.identity;
go.transform.localScale = Vector3.one;
}

public static void SetMousePos(this GameObject go)
{
Vector3 headingToObject = go.transform.position - Camera.main.transform.position;
float depth = Vector3.Dot(headingToObject , Camera.main.transform.forward);

Vector3 mouseScreenPos = Input.mousePosition;
mouseScreenPos.z = depth;
Vector3 mouseWorldPos = Camera.main.ScreenToWorldPoint(mouseScreenPos);
go.transform.position = mouseWorldPos;
}

}


Aqui hay cosas muy interesantes en primer lugar el GetBlurCamera, aveces en algunos proyectos tengo mas de una camara activa para logar diferentes efectos como el desenfoque del blur, y en lugar de tratar de adivinar cual es puede usar este metodo para traerla siempre, el SetRenderCamera aunque no lo parezca es muy util, cuando instancias objectos directamente desde Resources folder para iniciar tu escena campos como el render camera de un canvas que son necesarios no son guardados cuando se transforman en un prefab, entonces utilizo este metodo despues de instanciar cada Canvas, luego el Reset que creo no necesita mucha explicacion, y el SetMousePos es un ejemplo de lo util que pueden llegar a ser estos pequeños trozos de codigo, entonces es momento de que desates tu imaginacion a ver si encuentras alguna super caracteristica perdida en Unity que puedas agregar y si quieres compartirla siempre puedes actualizar el proyecto desde Gtihub.

el codigo el libre para modificar o usarse desde Github(link)

Si te ha sido util recuerda compartir saludos!!!

Hola Mundo!!!

Hola soy James Roman tengo 22 años, actualmente trabajo como freelancer (si es genial trabajar desde la comodidad de tu casa) usando Unity como muchos tal vez me encuentro tratando de hacerme un hueco en la industria de los videojuegos, lo cual no es facil, pero tampoco imposible, trabajo tiempo completo en el desarrollo de Card Dungeon y en mis tiempos libres desarrollando pequeños juegos de android que puedan hacerme millonario... ok tal vez no.

En el Blog tratare de compartir pequeños tutoriales and tips cortos acerca de Unity, de lo poco o mucho que he aprendido como freelancer, asi que si estas interesado en el desarrollo de juegos, quieres aprender a usar Unity ya sea como hobby o quieres llegar a ser freelancer, no dudes en seguir de cerca mis post!!!