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

Unity AR项目中如何在同一场景同时使用屏幕与世界空间UI?

单Canvas实现Unity AR场景中屏幕空间+世界空间UI共存方案

嘿,这个需求我在做AR项目的时候刚好踩过坑,其实不用纠结多个Canvas的限制——Unity的**嵌套Canvas(Nested Canvas)**机制完美解决这个问题!下面给你一步步讲怎么实现:

核心逻辑

Unity允许在一个根Canvas下创建子Canvas,每个子Canvas可以独立设置自己的Render Mode,这样就能在同一个根Canvas框架下,同时承载固定在屏幕的UI,和存在于AR世界空间里的交互元素,完全符合你“不用多个独立Canvas”的要求。

具体操作步骤

1. 创建根Canvas

  • 在Hierarchy面板右键 → UI → Canvas,生成主Canvas。
  • 根Canvas的Render Mode建议设为Screen Space - Camera,然后把你的AR Camera拖到Render Camera字段里(如果用AR Foundation就是默认的AR Camera)。这个模式既适配屏幕空间UI的自适应,也能完美兼容子Canvas的世界空间渲染。

    小提醒:如果你的项目更偏向纯屏幕UI为主,也可以选Screen Space - Overlay,但AR场景下Screen Space - Camera的兼容性更好。

2. 搭建屏幕空间UI

  • 你可以直接在根Canvas下添加按钮、文本等屏幕元素,也可以单独建一个子Canvas归类:右键根Canvas → UI → Canvas,创建屏幕空间子Canvas。
  • 把这个子Canvas的Render Mode设为和根Canvas一致(或Screen Space - Overlay),然后在里面加你需要的固定按钮(比如“退出”“切换模型”这类)——这些元素会牢牢固定在屏幕上,不会随AR相机的移动而偏移。

3. 搭建世界空间UI

  • 右键根Canvas → UI → Canvas,创建世界空间子Canvas。
  • 把这个子Canvas的Render Mode改成World Space。
  • 调整Transform参数:
    • Position:拖到AR场景中你需要的位置(比如放在虚拟家具旁边)
    • Scale:默认Scale很大,通常缩到0.01左右才能正常显示(根据你的UI尺寸微调)
  • 在这个子Canvas下添加按钮、提示文本等元素,这些UI会像3D物体一样存在于AR世界里,随相机视角变化而移动,完美适配AR场景的交互需求。

避坑小贴士

  • Event System:确保场景里只有一个Event System!Unity创建Canvas时会自动生成,别手动加第二个,不然会导致UI点击失效。
  • 层级排序:如果不同子Canvas的UI有覆盖需求,调整子Canvas的Sorting Order参数,数值越大的UI越显示在顶层。
  • 世界空间UI清晰度:世界空间的Text容易模糊,建议开启Text组件的Best Fit,或者把Canvas的Pixels Per Unit设为100(默认是100,要是改乱了调回来就行)。

我之前做AR家具展示项目时就是这么弄的:根Canvas用Screen Space - Camera,屏幕子Canvas放了“重置视角”“分享”按钮,世界空间子Canvas放在沙发模型侧边加了“查看材质详情”按钮,运行起来完全没交互冲突,体验很顺畅。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:03:31