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

Unity中如何实现碰撞发生后才弹出Game Over UI界面?

问题修复方案

1. 启动直接显示Game Over界面的解决方法

GameOverScreen默认处于激活状态导致启动直接显示,只需要在Unity编辑器Inspector面板中,找到挂载了GameOverScreen脚本的UI根对象,取消勾选对象名称左侧的激活复选框即可,Setup方法执行时会自动将该对象激活显示。

2. 碰撞后无法触发Game Over界面的解决方法

你当前的CatcherDestroy脚本存在两处逻辑错误:

  • 碰撞触发后仅写了GameOverScreen;,属于无效代码,没有调用负责显示结束界面的Setup方法
  • Setup方法要求传入分数参数,你需要补全游戏分数的传递逻辑
  • 额外注意:如果CatcherDestroy脚本是挂载在Catcher对象本身的,当前的Tag判断逻辑是反向的,需要调整为判断碰撞到的物体是你设定的障碍物/掉落物Tag

修改后的CatcherDestroy参考代码:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CatcherDestroy : MonoBehaviour
{
    public GameOverScreen GameOverScreen;
    // 此处替换为你实际获取游戏分数的逻辑,比如从全局GameManager获取
    public int currentScore;

    private void OnCollisionEnter2D(Collision2D collision)
    {
        // 若脚本挂载在Catcher对象上,此处改为判断碰撞对象的Tag为障碍物即可
        if (collision.gameObject.CompareTag("Catcher"))
        {
            Destroy(collision.gameObject);
            // 调用显示Game Over界面的方法,传入当前游戏分数
            GameOverScreen.Setup(currentScore);
        }
    }
}

额外检查项

  • 确认参与碰撞的两个对象都挂载了对应形状的Collider2D组件,且其中至少一个对象挂载了Rigidbody2D组件,否则OnCollisionEnter2D回调不会触发。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 20:54:04