visionOS 上 WindowGroup 与 ImmersiveSpace Entity 的连接

问题描述 投票:0回答:1

我想在visionOS上复制Apple Mindativity应用程序的以下行为:3D对象位于窗口后面,当移动窗口时,该对象会跟随窗口的位置。会话开始后,对象将保持在同一位置。

visionOS mindfulness app

看起来物体处于沉浸式空间中。我不确定它是否从一开始就在沉浸空间中,但几乎可以肯定在课程开始后它就在那里。所以,看起来 WindowGroup 的位置和对象之间存在联系。

似乎无法获取窗口的位置,所以我不知道苹果是如何实现这种行为的。我只是希望他们没有使用私有 API,您将能够帮助我。预先感谢您!

position visionos swiftui-windowgroup
1个回答
0
投票

您可以使用

visionOS
中的 ornament 修饰符实现类似的效果。这是一个例子:

enter image description here

import SwiftUI
import RealityKit
import RealityKitContent

struct ContentView: View {
    var body: some View {
        Text("Hello, world!")
            .ornament(attachmentAnchor: .scene(.back)) {
                Model3D(named: "Scene", bundle: realityKitContentBundle)
                    .frame(depth: -1300)
            }
    }
}

ornament
修改器可让您将内容(如 3D 模型)附加到场景的特定部分。在这个例子中:

  • attachmentAnchor
    设置为
    .scene(.back)
    ,将装饰品固定在场景的后面。
  • 使用
  • A
    Model3D
    ,从
    RealityKitContent
    束加载,并定位深度为
    -1300

您可以在

Apple 文档
中找到有关 ornament 修饰符的更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.