使用RealityView遇报错:init(make:update:attachments:)在visionOS中不可用
解决visionOS中RealityView attachments初始化方法不可用的问题
在visionOS中,你使用的RealityView的init(make:update:attachments:)初始化方法确实不可用——该方法是针对iOS等平台的实现,visionOS采用了不同的附件集成逻辑。
修改后的代码示例
import SwiftUI import RealityKit struct MoonOrbit: View { var body: some View { RealityView { content, attachments in async let earth = ModelEntity(named: "Earth") if let earth = try? await earth { content.add(earth) // 将文本附件绑定到地球实体上方(可按需调整位置) if let labelEntity = attachments.entity(for: "earth_label") { labelEntity.position = [0, 1, 0] earth.addChild(labelEntity) } } } content: { Text("Earth") .tag("earth_label") .font(.headline) .padding(8) .background(.white.opacity(0.9)) .cornerRadius(6) } } }
关键调整点
- 将原代码中的
attachments:参数替换为content:参数,所有附件视图需定义在这个闭包内 - 若要将附件关联到3D实体,需在
RealityView的核心闭包中通过attachments.entity(for:)获取对应tag的附件实体,再将其添加到场景或目标实体上 - 附件视图的
tag用于在核心闭包中唯一识别对应的附件实体
内容的提问来源于stack exchange,提问作者Nullable
相关产品推荐
相关产品推荐

