Megadok 11 Report post Posted October 21, 2020 (edited) 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 October 21, 2020 by Megadok Share this post Link to post Share on other sites
Biarox1166 5 Report post Posted October 21, 2020 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; } 3 Share this post Link to post Share on other sites
Megadok 11 Report post Posted October 25, 2020 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
Igor 340 Report post Posted November 4, 2020 hola y para combertirlo alreves (de enum a int) seria lo mismo pero alreves y con: "(int)" int armaNum = (int)_armas; 1 Share this post Link to post Share on other sites