void siguienteLetra() { i--; if (i < 0) { EjercicioExitoso(); } else { usarOtroDL = false; datosL = letras[i].GetComponent <datosLetra>(); datosL.primeraActivacion(); //datosL.activarPuntos(); datosL.primerPunto(false); ultimoPunto = datosL.puntos.Length; tipoLetra = datosL.tipoLetra; idEspecialLetra = datosL.puntoIdEspecial; idPrimerPunto = 1; idPuntoActual = 0; idPuntoSiguiente = 1; idRepetido = 0; aciertos = 0; switch (tipoLetra) { case "cerrada": aciertosNecesarios = ultimoPunto + 1; break; case "unTrazo": aciertosNecesarios = ultimoPunto; break; case "dosTrazos": aciertosNecesarios = ultimoPunto; DrawLine clone; clone = Instantiate(draw); listaDL.Add(clone); indexDL++; break; } UnityEngine.Debug.Log("siguiente: " + idPuntoSiguiente + " actual: " + idPuntoActual); } }
//Inicialización de variables void Start() { #region desactivar para pruebas de palabras nuevas Time.timeScale = 1; p = EstadoJuego.estadoJuego.palabra; letrasArreglo = p.ToCharArray(); UnityEngine.Debug.Log("Prefab/Palabras paso 2/palabra " + p); palabra = Resources.Load("Prefab/Palabras paso 2/palabra " + p) as GameObject; AudioClip sonido; sonido = Resources.Load <AudioClip>("Sonidos/Figuras/" + palabra); GetComponent <AudioSource>().PlayOneShot(sonido); Vector3 vectorCentro; GameObject go1 = GameObject.Find("Canvas").gameObject; GameObject go2 = GameObject.Find("BgImage").gameObject; vectorCentro = go2.transform.position; vectorCentro.z = -2; GameObject go = Instantiate(palabra, vectorCentro, Quaternion.identity, go1.transform); #endregion indexDL = -1; listaDL = new List <DrawLine>(); usarOtroDL = false; //todo esto es por la primera letra //Conseguimos una lista de letras letras = GameObject.FindGameObjectsWithTag("letra"); UnityEngine.Debug.Log("numero de letras en el juego: " + letras.Length); UnityEngine.Debug.Log("numero de letras en la palabra: " + letrasArreglo.Length); //acomodar las letras for (int d = 0; d < letras.Length; d++) { UnityEngine.Debug.Log(letras[d].gameObject.transform.name); } GameObject[] letrasAcomodadas = new GameObject[letras.Length]; for (int m = 0; m < letrasArreglo.Length; m++) { UnityEngine.Debug.Log("m: " + m); for (int l = 0; l < letras.Length; l++) { UnityEngine.Debug.Log("l: " + l); //letra c <- son 7 caracteres en total if (letrasArreglo[m] == letras[l].gameObject.transform.name[6]) { //UnityEngine.Debug.Log("Hey este numero parece dar problemas: " + m + " o este: " + l); letrasAcomodadas[m] = letras[l]; letras[l].gameObject.transform.name = "0000000000"; break; } } } letras = letrasAcomodadas; Array.Reverse(letras); UnityEngine.Debug.Log("DESPUES DEL ACOMODO Y REVERSA: "); for (int d = 0; d < letras.Length; d++) { UnityEngine.Debug.Log(letras[d].gameObject.transform.name); } //después de acomodar letras i = letras.Length - 1; UnityEngine.Debug.Log("i es: " + i); // Después, de la primera letra de la palabra sacamos su script // de datosL donde esta la lista de gameobject de puntos datosL = letras[i].GetComponent <datosLetra>(); //solo se necesita la cantidad de puntos puntos = datosL.puntos.Length; drawLines = new DrawLine[letras.Length]; //necesitamos varios drawline para poder hacer que esto funcione for (int f = 0; f < letras.Length; f++) { DrawLine clone; clone = Instantiate(draw); drawLines[f] = clone; drawLines[f].gameObject.name = drawLines[f].gameObject.name + " " + f; //UnityEngine.Debug.Log("nombre: " + drawLines[f].gameObject.transform.name); } //Al parecer, unity necesita un momento extra para poder activar esto, pues si lo activa muy rapido, se vuelve a desactivar. Invoke("activarPuntosPrueba", (float).2); tipoLetra = datosL.tipoLetra; idEspecialLetra = datosL.puntoIdEspecial; UnityEngine.Debug.Log(idEspecialLetra + "<- id especial"); datosL.primerPunto(false); ultimoPunto = puntos; switch (tipoLetra) { case "cerrada": aciertosNecesarios = ultimoPunto + 1; break; case "unTrazo": aciertosNecesarios = ultimoPunto; break; case "dosTrazos": aciertosNecesarios = ultimoPunto; DrawLine clone; clone = Instantiate(draw); listaDL.Add(clone); indexDL++; break; } //todo esto es por la primera letra updateTimer = true; duracion = 0.0f; terminar = true; idPrimerPunto = 1; idPuntoActual = 1; idPuntoSiguiente = 1; aciertos = 0; idRepetido = 0; //Lo que hace que aparezcan y desaparezcan los cuadros y el mensaje inmediato GameObject.Find("btnSiguiente").SetActive(false); GameObject.Find("txtRetroDirecta").SetActive(false); //Suscribir este método (SeHizoContacto) al evento de Contacto en la clase Puntos. HandCursor.Contacto += SeHizoContacto; }