簡體   English   中英

無法從Unity中的另一個腳本設置UI文本

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM