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
相关产品推荐
相关产品推荐

