Jump to content
BQ_test

Cambiar escena con password

Recommended Posts

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 by BQ_test

Share this post


Link to post
Share on other sites

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 by leocub58

Share this post


Link to post
Share on other sites
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

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 by Igor

Share this post


Link to post
Share on other sites
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 by BQ_test
añadir info

Share this post


Link to post
Share on other sites

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 by Igor

Share this post


Link to post
Share on other sites

×
×
  • Create New...