Noticias

¡RECUERDA QUE SI ERES UN NUEVO USUARIO, DEBES PRESENTARTE PARA PODER PUBLICAR MENSAJES! | TENEMOS CANAL OFICIAL DE TELEGRAM: t.me/unity3dspain

Haskey siempre entra en el if

Iniciado por Daniel Moreno, Diciembre 20, 2016, 05:58:43 PM

Tema anterior - Siguiente tema
Diciembre 20, 2016, 05:58:43 PM Ultima modificación: Diciembre 21, 2016, 01:15:30 PM por pioj
Hola buenas,
 
Estoy intentando hacer que cuando el usuario complete un nivel se desbloquee el siguiente y para ello estoy usando playerprefbs, el codigo que ando usando es :
 
    
 



   
      void Start()
          {
              for (i = 2; i <= 3; i++) {
                  if(PlayerPrefs.HasKey("nivel"+i)==true);
                  {
                      bloqueado = "Bloqueado" + i;
                      bloq = GameObject.Find (bloqueado);
                      Destroy (bloq);
                      botonnivel = "" + i;
                  }
              }
          }
   

[/quote]
 
Siendo bloq una imagen de un candado, tengo en esa misma posicion un boton desactivado, y no se como hacer referencia a el sin ponerlo en public, es decir usando Find y otra cosa parecida.
 
La  cuestión es que siempre entra en el if independientemente de si existe la key nivelX o no, y de hecho si le hago un debub.log a PlayerPrefs.HasKey("nivel"+i) me devuelve false a si que no debería entrar en el if. No lo entiendo.
 
Si alguien sabe que puedo hacer me ayudaría mucho.
 
Mucahs gracias.

Ese código, es tal como lo tienes en unity?

Hola, si podes subir codigo con las variables declaradas mejor. Quien tiene este script?

Diciembre 20, 2016, 10:03:33 PM #3 Ultima modificación: Diciembre 20, 2016, 10:13:04 PM por Miguel_Angel
Sobra un punto y coma detrás de la linea if.

Cita de: Miguel_Angel date=1482267813Sobra un punto y coma detrás de la linea if.
   


Muchas gracias estaba ya tan seguro de que algo estaba mal que ni me fijé en eso. 
 
Si ya alguien supiera decirme como hacer referencia a un boton desde un script me haría el día.
 
He intentado declarando Gameobject boton = Gameobject.Find("nombredelboton"); 
 
Pero no parece funcionar.
 
Mucahs gracias.

Gameobject boton = Gameobject.Find("nombredelboton");  hace que si se encuentra un gameObject en la escena llamado "nombredelboton" devuelva el gameObject. Si lo que tenes que referenciar es algo de tu proyecto (Assets) lo que podes usar es Resources.Load(directorio). Funciona asi, creas donde quieras una carpeta llamada estrictamente "Resources" dentro pones lo que quieras y Resources lo puede identificar y cargarlo mediante Resources.Load. por ej tengo un audioClip clip.wav en Assets/Resources/Audios/clip.wav, entonces lo cargas asi:
 

AudioClip clipCargado = (AudioClip)Resources.Load("Audios/clip");
//o asi
AudioClip clipCargado = Resources.Load("Audios/clip") as AudioClip;

 
 

Diciembre 21, 2016, 02:10:28 PM #6 Ultima modificación: Diciembre 21, 2016, 02:26:34 PM por Miguel_Angel
Yo hace mucho que no utilizo botones UI, pero hace tiempo si los utilizaba, En mi vieja interfaz esas referencias las utilizaba para cambiar los textos colores de botones y similares, también se puede  hacer una referencia a un botón declarando una variable publica y arrastrando el botón hasta las propiedades del script. Mas o menos seria así.
 
        Button MiBoton;
 
        MiBoton = (Button)GameObject.Find ("MiBoton").GetComponent ("Button");
 
o
 
         public Button MiBoton = null;
 
 
 
 

Etiquetas: