繁体   English   中英

Unity UI 未更新

[英]Unity UI is not updating

我有一个 canvas 和三个统一的文本对象。 我有 4 个场景:加载、播放、集线器和教程。 我正在使用脚本 Object,它会在您玩游戏时跟踪您的分数。 但是,每次我设置高分时,我的文本对象仍然会说“第一”“第二”“第三”。 这是我的脚本:(另外,在播放中,我的分数更新的文本,但是(高分)在场景之间没有更新。脚本所在的 object 是除 Camera.Main 之外的所有内容的父子)

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
public class TrackScores : MonoBehaviour
{
    public Transform First;
    public Transform Second;
    public Transform Third;
    public Text Best;
    public Text Average;
    public Text Worst;
    public Text Score;
    public Transform ScoreTracker;
    public Canvas CanvUI;
    public float ScoreInt;
    public Vector3 PosPlayer;
    void Start()
    {
        DontDestroyOnLoad(Camera.main.transform.root.gameObject);
        DontDestroyOnLoad(transform.root.gameObject);
        SceneManager.LoadScene("Hub", LoadSceneMode.Single);
    }
    void Update()
    {
        if(SceneManager.GetActiveScene().name == "Play")
        {
            PosPlayer = new Vector3(GameObject.Find("Player").transform.position.x, GameObject.Find("Player").transform.position.y, 0);
            Camera.main.transform.position = PosPlayer + new Vector3(0, 0, -15);
            transform.position = new Vector3(0, 0, 1001);
            Score = GameObject.Find("Score").GetComponent<Text>();
            ScoreTracker = GameObject.Find("ScoreTracker").transform;
            ScoreInt = ScoreTracker.position.x * 1000;
            Score.text = ScoreInt.ToString("0");
        }
        if(SceneManager.GetActiveScene().name == "Tutorial")
        {
            PosPlayer = new Vector3(GameObject.Find("Quad").transform.position.x, GameObject.Find("Quad").transform.position.y, 0);
            Camera.main.transform.position = PosPlayer + new Vector3(0, 0, -15);
            transform.position = new Vector3(0, 0, -1000);
        }
        if(SceneManager.GetActiveScene().name == "Hub")
        {
            Camera.main.transform.position = new Vector3(0, 0, -25);
            transform.position = new Vector3(0, 0, 0);
            Best.text = "1st: " + First.position.x.ToString("0");
            Average.text = "2nd: " + Second.position.x.ToString("0");
            Worst.text = "3rd:" + Third.position.x.ToString("0");
            if(ScoreInt < Second.position.x && ScoreInt > Third.position.x)
            {
                Third.position = new Vector3(ScoreInt, 0, 0);
            }
            if(ScoreInt < First.position.x && ScoreInt > Second.position.x)
            {
                Second.position = new Vector3(ScoreInt, 0, 0);
            }
            if(ScoreInt > First.position.x)
            {
                First.position = new Vector3(ScoreInt, 0, 0);
            }
        }
    }
}

任何帮助表示赞赏!

我想到了。 我只需要将文本网格与 TextMesh UI 一起使用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM