Табло Unity: NullReferenceException: ссылка на объект не установлена ​​для экземпляра объекта - PullRequest
0 голосов
/ 14 января 2019

Итак, я пытаюсь создать табло и всегда получаю исключение 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");
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...