Pessoal, após escrever o nome no input field, que deveria alterar o nome com o método AlterarNome() meu ranking é atualizado com a pontuação mas no lugar do nome não aparece nada, no arquivo json o local onde deveria estar o nome aparece vazio. No start da classe ele salva a string "nome" mas ao terminar de escrever ao inves de atualizar o nome ele grava uma string vazia.
public class NovaPontuacao : MonoBehaviour
{
[SerializeField]
private Text textoPontuacao;
[SerializeField]
private ControlaPontuação pontuacao;
[SerializeField]
private ControlaRanking ranking;
private int id;
void Start()
{
pontuacao = GameObject.FindObjectOfType(typeof(ControlaPontuação)) as ControlaPontuação;
int pontuacaoAtual = -1;
if (pontuacao != null)
{
pontuacaoAtual = pontuacao.AtualizarPontuacao();
}
textoPontuacao.text = pontuacaoAtual.ToString();
id = ranking.AdicionarPontos(pontuacaoAtual, "murilo");
}
public void AlterarNome(string nome)
{
this.ranking.AlterarNome(nome, this.id);
}
}
public class ControlaRanking : MonoBehaviour { private static string NOME_DO_ARQUIVO = "Ranking.json"; private string caminhoParaSalvar; [SerializeField] private List listaColocados;
private void Awake()
{
this.caminhoParaSalvar = Path.Combine(Application.persistentDataPath, NOME_DO_ARQUIVO);
if (File.Exists(caminhoParaSalvar))
{
var textoJson = File.ReadAllText(caminhoParaSalvar);
JsonUtility.FromJsonOverwrite(textoJson, this);
}
else
{
listaColocados = new List<Colocado>();
}
}
public void AlterarNome(string novoNome, int id)
{
foreach(var item in this.listaColocados)
{
if (item.id == id)
{
item.nome = novoNome;
break;
}
}
this.SalvarRanking();
}
public int AdicionarPontos(int ponto, string nome)
{
var id = listaColocados.Count * UnityEngine.Random.Range(1, 100000);
var colocado = new Colocado(ponto, nome, id);
this.listaColocados.Add(colocado);
this.listaColocados.Sort();
this.SalvarRanking();
return id;
}
public ReadOnlyCollection<Colocado> PegarColocados()
{
return this.listaColocados.AsReadOnly();
}
private void SalvarRanking()
{
var textoJson = JsonUtility.ToJson(this);
File.WriteAllText(caminhoParaSalvar, textoJson);
}
}