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

Unity中如何在一个Canvas显示时屏蔽其他Canvas的交互功能

解决Canvas层级与交互冲突方案
  • 调整渲染层级优先级
    打开两个Canvas的Inspector面板,修改Sort Order属性值,保证游戏结束Canvas的数值大于暂停菜单Canvas,比如暂停菜单设为10,游戏结束界面设为20。该设置可以确保游戏结束界面永远显示在上层,不会被后触发的暂停菜单覆盖。
  • 禁用暂停菜单交互权限
    角色死亡触发游戏结束逻辑时,直接关闭暂停菜单的交互能力,推荐给暂停菜单Canvas挂载Canvas Group组件,代码控制示例如下:
    public void TriggerGameOver()
    {
        // 激活游戏结束界面
        gameOverCanvas.SetActive(true);
        // 暂停菜单禁用交互、阻断射线检测,同时保留界面可见状态
        CanvasGroup pauseGroup = pauseMenuCanvas.GetComponent<CanvasGroup>();
        pauseGroup.interactable = false;
        pauseGroup.blocksRaycasts = false;
        // 同时可以直接屏蔽暂停快捷键的触发逻辑,避免呼出暂停菜单
        isPauseAvailable = false;
    }
    
  • 增加下层点击拦截
    如果不需要保留暂停菜单的可见状态,直接在游戏结束Canvas的Graphic Raycaster组件中配置拦截规则,或者给游戏结束Canvas加一个全屏透明的Image组件作为点击遮罩,直接拦截所有下层Canvas的点击事件,不用修改暂停菜单的属性即可实现需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 17:54:06