visionOS开发报错:场景会话角色UISceneSessionRoleVolumetricApplication不匹配
解决visionOS应用场景角色不匹配错误
问题原因
报错提示Your app was given a scene with session role UISceneSessionRole(_rawValue: UIWindowSceneSessionRoleVolumetricApplication) but no scenes declared in your App body match this role,核心原因是你的App运行在Volumetric(体积)模式下,但当前声明的场景中没有匹配该角色的配置:
- 默认的
WindowGroup对应2D窗口场景角色,无法适配Volumetric模式的场景请求 - 仅声明
ImmersiveSpace不足以覆盖Volumetric主窗口的角色要求
解决方案
在App结构体的body中,将默认的WindowGroup替换为适配Volumetric角色的版本,或者新增一个匹配该角色的WindowGroup。
修改后的App.swift代码
@main struct Day008App: App { var body: some Scene { // 声明适配Volumetric角色的窗口组 WindowGroup(for: .volumetric) { ContentView() } ImmersiveSpace(id: "ImmersiveSpace") { ImmersiveView() } } }
补充说明
如果需要同时支持2D窗口和Volumetric模式,可以声明多个WindowGroup分别对应不同角色:
@main struct Day008App: App { var body: some Scene { // 2D窗口场景 WindowGroup { ContentView() } // Volumetric场景 WindowGroup(for: .volumetric) { ContentView() } ImmersiveSpace(id: "ImmersiveSpace") { ImmersiveView() } } }
这样系统会根据当前运行模式自动匹配对应的场景配置,解决角色不匹配的错误。
内容的提问来源于stack exchange,提问作者Code on the Rocks
相关产品推荐
相关产品推荐

