Jump to content
Megadok

ANSWERED Variable enum = enum(index)

Recommended Posts

Buenas a todos.

Me preguntaba cómo poder hacer esto...usar un enum como si fuera un array o lista para acceder a un valor según el valor de "i".

public enum armas{
espada,
arco,
lanza,
hacha
}
public armas _armas;

 string[] r = System.Enum.GetNames(typeof(armas));

for(int i=0;i<r.Lenght;i++){
      _armas = armas[i]; //<<-------esto es lo que intento                       
                             }
                

Gracias!.

Edited by Megadok

Share this post


Link to post
Share on other sites

Hola! @Megadok para hacer ese uso es muy simple. Lo enums son tratados no solo con los nombre que les des(espada, arco,etc) sino que por defecto tiene un index asociado comenzando desde 0. Por lo que si queres que tu variable _arma sea igual a lanza por ejmplo solo tendrías que castear el tipo armas delante del index correspondiente a lanza(que sería 2). Te dejo un ejemplo.

    public enum armas
    {
        espada,        //0
        arco,        //1
        lanza,        //2
        hacha        //3
    }
    public armas _armas;

    private void Start()
    {
      			//el casteo se hace poniendo entre parentesis el tipo que te interesa obtener
        _armas = (armas)1;        //esto hara que _armas sea "arco"
      
    }

//Con tu codigo seria asi
 string[] r = System.Enum.GetNames(typeof(armas));

for(int i=0;i<r.Lenght;i++){
      _armas = (armas)i; 
}

 

  • Like 3

Share this post


Link to post
Share on other sites
On 10/21/2020 at 11:30 PM, Biarox1166 said:

Hola! @Megadok para hacer ese uso es muy simple. Lo enums son tratados no solo con los nombre que les des(espada, arco,etc) sino que por defecto tiene un index asociado comenzando desde 0. Por lo que si queres que tu variable _arma sea igual a lanza por ejmplo solo tendrías que castear el tipo armas delante del index correspondiente a lanza(que sería 2). Te dejo un ejemplo.


    public enum armas
    {
        espada,        //0
        arco,        //1
        lanza,        //2
        hacha        //3
    }
    public armas _armas;

    private void Start()
    {
      			//el casteo se hace poniendo entre parentesis el tipo que te interesa obtener
        _armas = (armas)1;        //esto hara que _armas sea "arco"
      
    }

//Con tu codigo seria asi
 string[] r = System.Enum.GetNames(typeof(armas));

for(int i=0;i<r.Lenght;i++){
      _armas = (armas)i; 
}

 

Mil gracias! Era lo que necesitaba!

Share this post


Link to post
Share on other sites

hola

y para combertirlo alreves (de enum a int) seria lo mismo pero alreves y con:

"(int)"

int armaNum = (int)_armas;

 

  • Like 1

Share this post


Link to post
Share on other sites

×
×
  • Create New...