Conociendo C# Pt. 1: Enums

Esta serie de posts probablemente sea larga, pero cubre conceptos que un programador C# tendría que dominar. Desde que arrancamos con C# estamos acostumbrados a la definición de clase como elemento básico para implementar código. Sin embargo, existen otros tipos de entidades que podemos definir como son enums, structs, interfaces y clases abstractas por mencionar algunas.

La entidad Enum

La entidad enum se refiere a enumeraciones, es una lista de strings ya definidos y enumerados. Usualmente muy usada para definir estados de un objeto o del juego, categorías, atributos fijos como serian puntos cardinales, y un gran etc. Los enums pueden ser casteados como enteros y desde enteros sin problema, pueden ser convertidos a string con su valor de enumeración, no pueden repetirse y pueden ser comparados. En teoría, su funcionalidad puede ser equiparada a un simple int, excepto que el enum te provee la referencia del contexto de cada valor del entero.

enum
Definición básica de un enum, en este ejemplo, tipo de powerup.

En el ejemplo de PowerUpType, no se especifica índice, por ende, se asigna por defecto, secuencialmente empezando de cero. Así que el índice de Repair seria 0, y el de Cash seria 3. Sin embargo, en la definición del enum podemos ponerle los índices que queramos.

indices
Se pueden asignar índices personalizados en un enum.

Usualmente una buena práctica es contener todos los enums en una carpeta específica para ellos.

enums
Algunos ejemplos de posibles usos para enums.

Los enums son extremadamente útiles para los switch cases. En el ejemplo de los powerups por ejemplo, los powerups se comportan prácticamente de la misma manera, el jugador los toca y estos desaparecen y causan el efecto. Todo el comportamiento de los powerups es común excepto por el efecto que causan en el objeto que los agarre. Por ende, tiene sentido crear un único script y variar el efecto según el tipo de powerup.

powerup
En este código se ve la única diferencia entre cada powerup, el resto de la funcionalidad es exactamente igual.

A nivel de clase podemos definirnos una variable pública del tipo de nuestro enum

2017-08-14 14_21_04-marauders_dev - Microsoft Visual Studio
Definición de la variable del tipo PowerUpType, se puede notar que el color del tipo es diferente al de los value types y al de las clases.

Y luego en el editor va a estar expuesto como un drop down

dropDown
Unity interpreta los enums y los despliega en el editor como una drop down list, no hay que escribir nada.

Mas allá del uso del ejemplo, hay varias cosas que vale la pena expandir sobre enums, por ejemplo, el tipo de operaciones que se pueden hacer. Podemos obtener los valores y la cantidad de valores de un enum, podemos leer un valor como entero, o leer un entero como valor del enum, y también podemos comparar y operar sobre el enum.

operaciones enum
Diferentes operaciones, comparaciones y transformaciones que se pueden hacer con un enum

 

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s