繁体   English   中英

UI 文本未更新

[英]UI text not updating

我知道,很多人都问过这个问题。 我已经阅读了所有这些帖子,但没有一个解决方案可以解决我的问题。 我正在创建一个级别进度条,在此脚本中,我尝试更新文本(levelNumber)并在每次级别完成时向 levelNumber 添加 +1,这里我使用 playerprefs 保存 levelNumber,以便数据可以通过下一个级别(场景)。 但问题是 levelNumber 甚至没有在 Text 字段中更新,根据脚本 Text_1 应该从 0 开始,Text_2 从 1 开始,当游戏开始显示我在检查器 1 和 2 中给出的值时。确认我已将检查器中的值更改为 21当游戏开始显示 21 和 30 时,再次显示 30。这意味着 UI 文本未从脚本更新。

public class PrograssBar : MonoBehaviour
{
 [SerializeField] private Text Text_1;
 [SerializeField] private Text Text_2;
 private int levelNumber = 0;
 [SerializeField] Transform startTransform;
 Transform finishTransform;
 [SerializeField] Slider slider;

 float maxDistance;


 void OnEnable()
 {
     levelNumber = 0;
 }

 void Start()
 {
     finishTransform = GameObject.FindGameObjectWithTag("CloneGoal").GetComponent<Transform>();
     maxDistance = getDistance();
     levelNumber = PlayerPrefs.GetInt("LevelNumber");

 }


 void Update()
 {
     if (startTransform.position.z <= maxDistance)
     {
         float distance = 1 - (getDistance() / maxDistance);
         setProgress(distance);
     }

 }

 float getDistance()
 {

     return Vector3.Distance(startTransform.position, (finishTransform.position - new Vector3(0, 0, 22)));
 }


 void setProgress(float p)
 {
     slider.value = p;
 }

 private void LevelUp()
 {
     UpdateLevel(levelNumber + 1);
     PlayerPrefs.SetInt("LevelNumber", levelNumber);
 }

 private void UpdateLevel(int levelNumber)
 {
     this.levelNumber = levelNumber;
     Text_1.text = " " +this.levelNumber.ToString();
     Text_2.text = " " +(this.levelNumber + 1).ToString();
 }

}

问题是您在执行期间从未将levelNumber保存到首选项,因此您的LevelUp function 应该如下所示:

private void LevelUp()
{
     UpdateLevel(levelNumber + 1);
     PlayerPrefs.SetInt("LevelNumber", levelNumber);
     PlayerPrefs.Save();
}

请参阅此 文档

在方法private void UpdateLevel(int level)中,您正在设置this.levelNumber = levelNumber 并且方法的属性是int level 所以你可能想做:

this.levelNumber = level;

而且我不太确定您在哪里调用private void LevelUp()方法,因为它是私有的,并且在此 class 内的任何地方都没有调用它。

暂无
暂无

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

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