У меня есть игровой объект «Текст», который представляет собой текстовый интерфейс. Он имеет скрипт (Scores.cs), который в основном увеличивает переменную оценки (public) на основе некоторого уравнения.
Теперь я хочу установить для него текст из другого скрипта "GameManager.cs", снова говоря "Game Over", основываясь на некоторых сценариях.
Я не могу этого сделать.
Scores.cs
using UnityEngine;
using UnityEngine.UI;
public class Scores : MonoBehaviour {
public Transform player;
public Text scoreText;
// Update is called once per frame
void Update () {
scoreText.text = player.position.z.ToString("0");
}
}
GameManager.cs
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
public class GameManager : MonoBehaviour {
bool gameEnded = false;
public Text scoreText; // Also referrenced this variable with Text Object in the inspector
public void EndGame() {
if(gameEnded == false) {
scoreText.text = "Game over";
gameEnded = true;
}
}
}
Когда я устанавливаю ScoreText с помощью ScoreText.text, он корректно устанавливается на «Игра окончена» после того, как я увидел это при отладке, , но он никогда не обновляет пользовательский интерфейс игры .
Когда я отлаживаю ScoreText.text внутри EndGame (), я получаю соответствующую оценку. Я могу получить счет, но не могу его установить.