[英]Not able to set UI Text from another script in Unity
我有一個游戲對象“ Text”,它是一個UI Text。 它具有一個腳本(Scores.cs),該腳本基本上基於某些方程式來增加分數變量(公共)。
現在,我想從另一個腳本“ 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.text設置scoreText時,在通過調試看到它后,它會正確設置為“ Game over”, 但它從未更新到游戲的UI 。
當我在EndGame()中調試scoreText.text時,我得到了尊敬的分數。 我可以得到分數,但無法設置。
在您的Scores.cs
查看代碼的這一部分:
//Update is called once per frame
void Update ()
{
scoreText.text = player.position.z.ToString("0");
}
閱讀Unity生成的注釋。 它說Update
函數被稱為每一幀。 基本上,您要在EndGame
函數中將其設置為“ Game over”,然后在進行scoreText.text = player.position.z.ToString("0");
時在下一幀的Update
函數中覆蓋其值scoreText.text = player.position.z.ToString("0");
。 您必須刪除該變量或添加一個布爾變量以控制何時可以在Update
函數中進行設置。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.