如何触发函数来保存和加载worldMap数据,而使用RealityKit, ARKit和SwiftUI?



我正在用RealityKit构建一个增强现实应用程序、ARKit和SwiftUI.内容视图有一个ZStack,其中包含ARView和Swift视图。

更具体地说,ARView是作为ARContentView() -一个快速的视图包装ARViewContainer(),它本身代表ARView在RealityKit。

我正在添加下面代码的照片。

contentView with ZStack,包括分层UI视图和ARContentView

目标是让用户能够保存和加载worldMap保存AR体验在他们关闭并重新打开他们的应用程序之后。

是我试图触发函数来保存和加载世界地图通过点击SwiftUI视图中的按钮来保存和加载世界地图数据,这些按钮必须触发在ARView中保存和加载世界地图数据的功能。

触发代码保存世界地图数据从ARView中添加手势(如向上滑动),如下所示,,但我需要从内容视图按钮中链接这些函数。

真正让我困惑的是:

因为ARView已经被Apple定义了,我只能通过扩展和添加新功能来给它添加功能,我不能给它添加一个绑定变量来跟上Content View中事件的状态(因为存储的变量不能添加到扩展中)。

使用当前AR会话与世界地图对象交互的函数之一的示例

我如何在父SwiftUI视图中触发这些不同的ARView依赖动作,在它的ZStack中包含ARContentView ?

问题仍然是另一种方式,当一个事件发生在ARView,我怎么能把返回的信息发送回SwiftUI内容视图,这样它就可以改变它的状态变量和触发动画?(这可能是一个单独的问题,但问题的基础仍然是这两种类型的视图之间的联系)

ARViewContainer结构体是免费的与启动一个新的增强现实RealityKit项目有几个功能- makeUIView()和updateUIView()融入他们,但我还没有找到任何教程如何使用updateUIView()函数。

ARContainerView获取用于构造的变量以及其中的函数的图像

我想知道是否在ARContainerView结构中的updateUIView()函数是为了解决我在这些层之间具有连接的问题,如果是这样如何使用它,如果不是如何解决问题?

如果有不清楚的地方请让我知道。谢谢你的帮助。

当您需要在SwiftUI视图和容纳ARViewUIViewRepresentable视图之间进行协调时,您可以使用ARViewCoordinatorARSessionDelegate在它们之间传递数据。当我有时间的时候,我会加载一个例子,或者你可以在Youtube上查看Reality School的教程。

最新更新