You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity游戏暂停返回后游戏内计分板停止更新问题求助

问题原因分析

你的textManager仅绑定了单个Text组件,另一个计分板的更新逻辑是独立实现的。当通过Time.timeScale=0暂停游戏后,恢复时两个计分板的更新逻辑发生冲突,导致游戏内的计分板无法同步最新状态,出现冻结。

修复方案

1. 修改textManager,统一管理两个计分板

更新textManager代码,添加对暂停菜单计分板的引用,确保得分变化时两个文本同步更新:

public class textManager : MonoBehaviour
{
    public static textManager instance;

    public Text inGameMoneyText; // 绑定游戏内的计分板
    public Text pauseMenuMoneyText; // 绑定暂停菜单的计分板

    public int money;

    private void Awake()
    {
        instance = this;
    }

    void Start()
    {
        Data data = SaveSystem.LoadData();
        money = data.balance;
        UpdateMoneyTexts();
    }

    public void AddMoney()
    {
        money += 10;
        UpdateMoneyTexts();
        SaveSystem.SaveData(this);
    }

    // 统一更新两个计分板的文本内容
    private void UpdateMoneyTexts()
    {
        string displayText = $"Balance: {money} $";
        inGameMoneyText?.text = displayText;
        pauseMenuMoneyText?.text = displayText;
    }

    public int findMoney()
    {
        return money;
    }
}

2. 在Unity编辑器中绑定组件

选中挂载textManager的游戏对象,在Inspector面板里:

  • 将游戏内的计分板Text拖入inGameMoneyText字段
  • 将暂停菜单的计分板Text拖入pauseMenuMoneyText字段

3. 检查暂停/恢复的UI状态控制

确保暂停菜单显示/隐藏时,不会意外禁用游戏内的计分板:

public void PauseGame()
{
    Time.timeScale = 0;
    pauseMenu.SetActive(true);
    // 移除任何禁用游戏内计分板的代码
}

public void UnPauseGame()
{
    Time.timeScale = 1;
    pauseMenu.SetActive(false);
    // 确保游戏内计分板处于激活状态(必要时添加)
    // inGameMoneyText.gameObject.SetActive(true);
}

4. 验证得分触发逻辑

在AddMoney()方法中添加日志,确认方法在暂停恢复后仍能正常调用:

public void AddMoney()
{
    money += 10;
    UpdateMoneyTexts();
    SaveSystem.SaveData(this);
    Debug.Log($"当前余额更新为:{money},两个计分板已同步");
}

通过上述修改,两个计分板将共用同一数据源并同步更新,解决暂停后游戏内计分板冻结的问题。

内容的提问来源于stack exchange,提问作者JerppaBoi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 05:15:23