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

使用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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 08:22:42