Я работал над простой 2D-игрой в единстве, и в ней всего три сцены: начальная сцена, игровая сцена и сцена окончания игры. Я хочу отображать счет игры на экране игры. Я создал игровой объект диспетчера очков в игровой сцене, который использует функцию DontDestroyOnLoad () для переноса его на экран завершения игры, и дал ему доступ к счету, которым управляет диспетчер игры. Я отлаживал свой код, и оценка переводится в диспетчер очков и сохраняется при загрузке игры поверх экрана, но по какой-то причине он не позволяет мне обновлять текстовый объект оценки. Вот мой код:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class ScoreManager : MonoBehaviour {
public static ScoreManager Instance;
private GameController gameController;
private int scoreInstance;
private Text scoreText;
// When scene is first loaded
void Awake() {
this.InstantiateController();
}
// Use this for initialization
void Start () {
GameObject gameControllerObject = GameObject.FindWithTag("GameController");
if (gameControllerObject != null)
{
gameController = gameControllerObject.GetComponent<GameController>();
}
GameObject scoreTextObject = GameObject.FindWithTag("ScoreText");
if (scoreTextObject != null)
{
scoreText = scoreTextObject.GetComponent<Text>();
}
scoreInstance = 0;
scoreText.text = "";
}
// Update is called once per frame
void Update () {
scoreInstance = gameController.score;
Debug.Log("Score: " + scoreInstance.ToString());
scoreText.text = scoreInstance.ToString();
}
private void InstantiateController ()
{
if (Instance == null)
{
Instance = this;
DontDestroyOnLoad(this);
}
else if (this != Instance)
{
Destroy(this.gameObject);
}
}
}
Поэтому я попытался программно собрать компонент пользовательского интерфейса «текст партитуры» в функции запуска, потому что я решил, что не могу просто сделать его общедоступным и перетащить текстовый компонент, потому что диспетчер партитуры фактически находится в другой сцене, чем текстовый объект партитуры. Я также попытался добавить весь этот фрагмент кода, чтобы собрать текстовый компонент в функцию обновления, чтобы он мог это сделать, когда менеджер результатов фактически является частью экрана игры. Кажется, ничего не работает, и я понятия не имею, почему. Кто-нибудь может мне помочь с этим? Также я продолжаю получать ошибку «NullReferenceException: ссылка на объект не установлена на экземпляр объекта». Заранее благодарю за любую помощь.