我正在使用RealityKit、 ARKit 和SwiftUI构建增强现实应用程序。内容视图有一个 ZStack,其中包含 ARView 和层叠在其上的 Swift 视图。
更具体地说,ARView 以 ARContentView() 的形式存在——一个包装 ARViewContainer() 的快速视图,它本身代表 RealityKit 中的 ARView。
我正在添加下面代码的照片。
带有 ZStack 的 contentView,包括分层的 UI 视图和 ARContentView
目标是让用户能够保存和加载世界地图数据,以便在他们关闭并重新打开他们的应用程序后保持 AR 体验。
问题是我试图通过单击 SwiftUI 视图中的按钮来触发保存和加载世界地图数据的功能,而这些按钮必须触发在 ARView 中保存和加载世界地图数据的功能。
我可以通过向视图添加手势(例如向上滑动)来触发代码以从 ARView 中保存世界地图数据,如下所示,但我需要从内容视图按钮中实际链接这些功能。
真正让我困惑的是:
因为 ARView 已经由 Apple 定义,我只能通过扩展它并添加新功能来向它添加功能,所以我不能向它添加一个绑定变量来跟上内容视图中的事件状态(因为存储变量不能添加到扩展中)。
如何在 ZStack 中包含 ARContentView 的父 SwiftUI 视图中触发这些不同的 ARView 相关操作?
同样......问题仍然存在,当 ARView 中发生事件时,如何将返回的信息发送回 SwiftUI 内容视图,以便它可以更改其状态变量并触发动画?(这可能是一个单独的问题,但问题的基础仍然是这两种视图之间的联系)
启动一个新的增强现实 RealityKit 项目时免费提供的 ARViewContainer 结构有几个函数 - makeUIView() 和 updateUIView() 包含在其中,但我还没有找到任何关于如何使用 updateUIView() 函数的教程。
ARContainerView 的图像采用 var 进行构造以及其中的函数
我想知道 ARContainerView 结构中的 updateUIView() 函数是否可以解决我在这些层之间的连接问题,如果是,如何使用它,如果不是,如何解决问题?
如果有任何不清楚的地方,请告诉我。谢谢您的帮助。