Hola, querría haceros una pregunta:
Como puedo hacer para que el juego muestre un canvas una sola vez, es decir, quiero que mi juego pregunte que nombre de usuario desea el jugador ponerse pero quiero que solo lo pida la primera vez que inicia el juego.
Ya lo he conseguido y este es el script que he hecho para conseguirlo.
Lo de desactivar y activar canvas es porque uno se refiere al menu principal y el otro al canvas en el que te pide el nombre.
Salu2.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Name : MonoBehaviour {
public Text texto;
string nombre;
public GameObject canvas1;
public GameObject canvas2;
private void Awake()
{
if(PlayerPrefs.GetString("Nombre").Length >= 1)
{
canvas2.SetActive(true);
canvas1.SetActive(false);
}else
{
canvas1.SetActive(true);
canvas2.SetActive(false);
}
}
public void GuardarName()
{
nombre = texto.text.ToString();
PlayerPrefs.SetString("Nombre", nombre);
Debug.Log(PlayerPrefs.GetString("Nombre"));
}
}
Hay muchas maneras de hacer eso y aunque nunca lo he hecho en Unity te diré la idea para que la puedas seguir ya que si lo he hecho en programas de visual basic.
Método 1. Si guardas el nombre de usuario en un archivo tendrías que poner en las primeras líneas de código que lee el programa: If (el archivo existe que lea el nombre de usuario y lo cargue) y else if (que cree el archivo y guarde el nombre de usuario)
Método 2. Igual que el método 1 pero en una variable interna del programa. En principio ésta estaría en estado vacío.
Ufffff es más complicado de explicar de lo que pensaba, espero que lo hayas entendido pero hay muchas más maneras de hacerlo, sólo tienes que pensar un método que a ti te funcione.
Suerte....
Cita de: J_L date=1500926298Hay muchas maneras de hacer eso y aunque nunca lo he hecho en Unity te diré la idea para que la puedas seguir ya que si lo he hecho en programas de visual basic.
Método 1. Si guardas el nombre de usuario en un archivo tendrías que poner en las primeras líneas de código que lee el programa: If (el archivo existe que lea el nombre de usuario y lo cargue) y else if (que cree el archivo y guarde el nombre de usuario)
Método 2. Igual que el método 1 pero en una variable interna del programa. En principio ésta estaría en estado vacío.
Ufffff es más complicado de explicar de lo que pensaba, espero que lo hayas entendido pero hay muchas más maneras de hacerlo, sólo tienes que pensar un método que a ti te funcione.
Suerte....
Gracias por contestar pero ya lo he solucionado y he puesto el script arriba por si a alguien le hace falta
Ya lo he visto y tu método que alguna vez lo he usado me parece ideal.
Cambia el Update por Start, solo necesitas comprobar las condiciones una vez.
Cita de: GSG3D date=1500929166Cambia el Update por Start, solo necesitas comprobar las condiciones una vez.
Vale, gracias.
En vez de por Start lo he cambiado por Awake.
El archivo lo he actualizado arriba.
Por si acaso lo adjunto aqui.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Name : MonoBehaviour {
public Text texto;
string nombre;
public GameObject canvas1;
public GameObject canvas2;
private void Awake()
{
if(PlayerPrefs.GetString("Nombre").Length >= 1)
{
canvas2.SetActive(true);
canvas1.SetActive(false);
}else
{
canvas1.SetActive(true);
canvas2.SetActive(false);
}
}
public void GuardarName()
{
nombre = texto.text.ToString();
PlayerPrefs.SetString("Nombre", nombre);
Debug.Log(PlayerPrefs.GetString("Nombre"));
}
}