Итак, я пытаюсь создать табло и всегда получаю исключение NullReferenceException. Это простая игра, в которой вы экономите свое время как счет. Тот, кто быстрее всех выигрывает и получает место на табло. Я довольно новичок в единстве и кодировании в целом. Я использую 2 массива, чтобы сохранить оценки и имена.
Вот мой код:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
public class ScoreBoard2 : MonoBehaviour
{
private float[] scoreboard = new float[3]; //saves highscored in correct
order
private string[] scorenames = new string[3]; //saves names in correct order
public Text score1Text;
public Text score2Text;
public Text score3Text;
public Text name1, name2, name3;
// Start is called before the first frame update
void Start()
{
score1Text = GetComponent<Text>();
score2Text = GetComponent<Text>();
score3Text = GetComponent<Text>();
name1 = GetComponent<Text>();
name2 = GetComponent<Text>();
name3 = GetComponent<Text>();
if (scorenames[0] == null && scorenames[1] == null && scorenames[2] == null)
{
scorenames[0] = "X";
scorenames[1] = "X";
scorenames[2] = "X";
}
for (int i = 0; i < scoreboard.Length; i++)
{
if (PlayerPrefs.GetFloat("score") >= scoreboard[i]) //after GameOver the score will always saved in PlayerPrefs.SetFloat("score")
{
for (int j = scoreboard.Length - 1; j > i; j--)
{
scoreboard[j] = scoreboard[j - 1];
scorenames[j] = scorenames[j - 1];
}
scoreboard[i] = PlayerPrefs.GetFloat("score");
scorenames[i] = PlayerPrefs.GetString("Username");
break;
}
}
PlayerPrefs.SetFloat("1st", scoreboard[0]);
PlayerPrefs.SetFloat("2nd", scoreboard[1]);
PlayerPrefs.SetFloat("3rd", scoreboard[2]);
PlayerPrefs.SetString("name1", scorenames[0]);
PlayerPrefs.SetString("name2", scorenames[1]);
PlayerPrefs.SetString("name3", scorenames[2]);
}
// Update is called once per frame
void Update()
{
score1Text.text = PlayerPrefs.GetFloat("1st").ToString();
score2Text.text = PlayerPrefs.GetFloat("2nd").ToString();
score3Text.text = PlayerPrefs.GetFloat("3rd").ToString();
name1.text = PlayerPrefs.GetString("name1");
name2.text = PlayerPrefs.GetString("name2");
name3.text = PlayerPrefs.GetString("name3");
}
public void LoadMenue()
{
SceneManager.LoadScene("Menu");
}
}