BQ_test 0 Report post Posted May 11, 2020 (edited) Hola! Estoy haciendo un juego de preguntas y no consigo sacar el script. Tengo la Scene1 que contiene una pregunta con un Textfield donde se introduce la respuesta y un botón para comprobar la respuesta. Si el valor del textfield es igual a "respuesta" entonces pasa a la Scene2 sino aparece en pantalla "Incorrecto". Hasta ahora he conseguido pasar de escena pero no consigo poner la condición else para que me salga incorrecto. ¿Me podéis ayudar a terminar el código? using System.Collections; using System.Collections.Generic; using System.Diagnostics; using UnityEngine; using UnityEngine.SceneManagement; public class prueba_pass2 : MonoBehaviour { public void Password(string input) { if (input == "respuesta") SceneManager.LoadScene("Scene2"); else Debug.log("Incorrecto"); } } Agradezco vuestra ayuda Edited May 11, 2020 by BQ_test Share this post Link to post Share on other sites
leocub58 208 Report post Posted May 11, 2020 (edited) Con las llaves debería funcionar. using System.Collections; using System.Collections.Generic; using System.Diagnostics; using UnityEngine; using UnityEngine.SceneManagement; public class prueba_pass2 : MonoBehaviour { public void Password(string input) { if (input == "respuesta") { SceneManager.LoadScene("Scene2"); } else { Debug.log("Incorrecto"); } } } Edited May 11, 2020 by leocub58 Share this post Link to post Share on other sites
BQ_test 0 Report post Posted May 11, 2020 8 minutes ago, leocub58 said: Con las llaves debería funcionar. using System.Collections; using System.Collections.Generic; using System.Diagnostics; using UnityEngine; using UnityEngine.SceneManagement; public class prueba_pass2 : MonoBehaviour { public void Password(string input) { if (input == "respuesta") { SceneManager.LoadScene("Scene2"); } else { Debug.log("Incorrecto"); } } } Gracias por tu ayuda, el tema está en que no quiero que salga el "Incorrecto" por Consola sino en la propia escena. Saludos Share this post Link to post Share on other sites
Igor 337 Report post Posted May 11, 2020 (edited) para que te salga en pantalla un texto deberias usar un Canvas, y dentro del canvas un Text ambos objetos se crean desde "GameObject/UI" tambien puedes usar "GameObject/3D Object/3D Text" en caso de usar un texto "UI" seria asi: (tienes que usar unityEngine.UI) using UnityEngine; using UnityEngine.SceneManagement; using UnityEngine.UI; public class prueba_pass2 : MonoBehaviour { public Text miTexto; public void Password(string input) { if (input == "respuesta") { SceneManager.LoadScene("Scene2"); } else { miTexto.text = "Incorrecto"; } } } en caso de usar un texto 3D seria asi: (recuerda que el texto 3d debe estar en un lugar donde se vea por la camara) using UnityEngine; using UnityEngine.SceneManagement; public class prueba_pass2 : MonoBehaviour { public TextMesh miTexto; public void Password(string input) { if (input == "respuesta") { SceneManager.LoadScene("Scene2"); } else { miTexto.text = "Incorrecto"; } } } Edited May 11, 2020 by Igor Share this post Link to post Share on other sites
BQ_test 0 Report post Posted May 11, 2020 (edited) 43 minutes ago, Igor said: para que te salga en pantalla un texto deberias usar un Canvas, y dentro del canvas un Text ambos objetos se crean desde "GameObject/UI" tambien puedes usar "GameObject/3D Object/3D Text" en caso de usar un texto "UI" seria asi: (tienes que usar unityEngine.UI) using UnityEngine; using UnityEngine.SceneManagement; using UnityEngine.UI; public class prueba_pass2 : MonoBehaviour { public Text miTexto; public void Password(string input) { if (input == "respuesta") { SceneManager.LoadScene("Scene2"); } else { miTexto.text = "Incorrecto"; } } } en caso de usar un texto 3D seria asi: (recuerda que el texto 3d debe estar en un lugar donde se vea por la camara) using UnityEngine; using UnityEngine.SceneManagement; public class prueba_pass2 : MonoBehaviour { public TextMesh miTexto; public void Password(string input) { if (input == "respuesta") { SceneManager.LoadScene("Scene2"); } else { miTexto.text = "Incorrecto"; } } } Gracias @Igor, Estoy en entorno 2D, utilizo un textMesh (para que cuando se escale no pierda calidad) dentro del Canvas pero está sin texto, para que salga el "incorrecto" en su lugar. He probado lo que me indicas y no me termina de funcionar, pero porque no se asignar la variable miTexto. Me sale este mensaje: UnassignedReferenceException: The variable miTexto of prueba_pass2 has not been assigned. You probably need to assign the miTexto variable of the prueba_pass2 script in the inspector. prueba_pass2.Password (System.String input) (at Assets/Scripts/prueba_pass2.cs:13) UnityEngine.Events.InvokableCall`1[T1].Invoke (T1 args0) (at <480508088aee40cab70818ff164a29d5>:0) He mirado de asignar al TextMesh el GameObject con el script pero no se donde meterlo. Así como en el button y en el textfield tenia un campo específico, no veo en que parte del TextMesh debo meterlo. ¿o me estoy equivocando? Saludos y gracias por vuestra ayuda. Edited May 11, 2020 by BQ_test añadir info Share this post Link to post Share on other sites
Igor 337 Report post Posted May 11, 2020 (edited) el error te dice: error de variable no asignada. la variable miTexto de prueba_pass2 no ha sido asignada. tu probablemente necesitas asignar la variable en el editor. tienes que asignar el textmesh en el objeto que tiene el script "prueba_pass2" ese objeto tendra un componente que se llamara "prueba_pass2" que es tu script en ese script hemos puesto una variable publica del tipo TextMesh que se llama "miTexto" esa variable, al ser publica, debe verse en el componente... pues debes "arrastrar" tu objeto textmesh dentro de esa variable. asi quedara asignada. probablemente deberas "vaciar" el texto cuando quieres probar a poner otro password.... tendras que poner: miTexto.text = ""; cuando quieras "vaciarlo" Edited May 11, 2020 by Igor Share this post Link to post Share on other sites