Unity Canvas的Screen Space-Overlay与Camera模式均无法满足需求的问题
Unity 2D UI 固定相机且始终显示在最上层的解决方案
方法1:Screen Space-Camera + 渲染层级控制
- 将Canvas设置为
Screen Space-Camera,指定你的2D主相机作为Render Camera - 在Project Settings → Tags and Layers里新建专属Sorting Layer(比如命名为
UI_Top),并拖到所有层的最顶部 - 选中Canvas,在Canvas组件中将Sorting Layer设为
UI_Top,Sorting Order设为较大值(比如100) - 确保所有场景游戏对象的Sorting Layer低于
UI_Top,或Sorting Order数值小于UI的数值。2D正交相机下,渲染顺序由Sorting Layer和Sorting Order决定,无需修改Z轴。
方法2:双相机分离渲染(推荐)
- 保留原有2D游戏相机:设置Depth为0,Culling Mask勾选所有非UI层,负责渲染场景对象
- 新建正交相机:
- 把Clear Flags设为
Depth Only(避免覆盖游戏相机画面) - Culling Mask只勾选UI层
- Depth设为1(数值大于游戏相机,确保后渲染、覆盖在最上层)
- 把Clear Flags设为
- 将UI Canvas设为
World Space,调整Rect Transform大小适配相机视野(比如相机Size为5时,Canvas宽设10、高设8,对应16:9比例) - 把Canvas拖到UI相机下作为子物体,UI会跟随相机移动,且始终在场景内容之上。
方法3:修复Screen Space-Overlay的缩放问题
如果偏好使用Screen Space-Overlay,解决画布过大问题:
- 选中Canvas,找到Canvas Scaler组件
- 将UI Scale Mode改为
Scale With Screen Size - 设置Reference Resolution为游戏设计分辨率(比如1920x1080),Match值按需调整,UI会自动适配不同屏幕分辨率,不会出现画布过大的情况。
内容的提问来源于stack exchange,提问作者HoodieSticks
相关产品推荐
相关产品推荐

