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

Unity新手求助:如何在接球游戏中调用已制作的Game Over界面?

解决Unity接球游戏Game Over界面调用问题

第一步:编写GameManager脚本

把GameManager做成全局可访问的单例,方便其他脚本调用,同时在脚本里关联你的Game Over界面元素:

using UnityEngine;
using TMPro;

public class GameManager : MonoBehaviour
{
    // 全局单例实例
    public static GameManager Instance;

    // 关联Game Over界面的面板(把你的Game Over面板拖到这里)
    public GameObject gameOverPanel;
    // 关联Game Over界面里的最终分数文本
    public TMP_Text finalScoreText;

    void Awake()
    {
        // 单例初始化
        if (Instance == null)
            Instance = this;
        else
            Destroy(gameObject);
    }

    void Start()
    {
        // 游戏启动时隐藏Game Over界面
        gameOverPanel.SetActive(false);
    }

    // 显示Game Over界面的方法
    public void ShowGameOver(int finalScore)
    {
        // 更新最终分数显示
        finalScoreText.text = "Final Score: " + finalScore.ToString();
        // 显示Game Over面板
        gameOverPanel.SetActive(true);
        // 暂停游戏
        Time.timeScale = 0;
    }

    // 重启游戏方法(给重启按钮绑定点击事件)
    public void RestartGame()
    {
        // 恢复游戏时间流速
        Time.timeScale = 1;
        // 重新加载当前场景
        UnityEngine.SceneManagement.SceneManager.LoadScene(UnityEngine.SceneManagement.SceneManager.GetActiveScene().buildIndex);
    }
}

第二步:配置GameManager对象

  • 在场景中创建空对象,命名为GameManager
  • 将上面的脚本拖到该对象上
  • 在Inspector面板中,把你的Game Over面板(Canvas下的对应面板)拖到gameOverPanel字段
  • 把Game Over界面里显示分数的TMP_Text拖到finalScoreText字段
  • 给Game Over界面的重启按钮绑定点击事件:选择GameManager对象,再选择GameManager -> RestartGame()方法

第三步:修改Score脚本

把原来直接重启场景的逻辑,替换为调用GameManager的Game Over方法:

using UnityEngine;
using TMPro;

public class Score : MonoBehaviour
{
    public TMP_Text scoreText;
    int score = 0;

    void Update()
    {
        scoreText.text = "Score: " + score.ToString();
    }

    void OnTriggerEnter2D(Collider2D target)
    {
        if (target.tag == "tomato")
        {
            // 触发Game Over界面,传入当前分数
            GameManager.Instance.ShowGameOver(score);
            Destroy(target.gameObject);
        }
        else if (target.tag == "bag")
        {
            score++;
            Destroy(target.gameObject);
        }
    }

    // 删除原来的WaitTillRestart协程,重启逻辑交给GameManager处理
}

注意事项

  • 确保Game Over面板初始状态为隐藏(取消Inspector里的Active勾选)
  • 检查tomato和bag标签是否正确设置在对应对象上
  • 当前场景已添加到Build Settings中(File -> Build Settings,将场景拖入列表)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 22:48:17