RealityKit重置ARSession后GeoAnchors锚点信息残留至URL问题咨询
问题根因
苹果官方的GeoTrackingExample项目内部维护了一个全局的trackedAnchors数组(或等价的自定义存储结构)来记录所有放置的地理锚点,默认提供的重置AR Session逻辑仅执行了以下操作:
- 调用
session.run(_:options:)并传入.removeExistingAnchors参数清除ARSession层面的锚点 - 移除ARView中所有锚点对应的展示实体
没有同步清空全局存储的自定义锚点数组,保存锚点时项目会遍历这个全局数组生成带锚点路径的URL,因此旧锚点信息会残留到URL中。
需要补充的清除操作
在重置AR Session的逻辑中新增以下步骤:
- 清空项目全局存储所有锚点的自定义数组,对应示例代码中的
AppState类里的geographicAnchors属性:
AppState.shared.geographicAnchors.removeAll()
- 清空当前生成锚点URL的临时缓存数据,如果项目使用了
URLQueryItem临时存储锚点参数,同步清空对应的query数组:
// 若使用临时query数组存储锚点参数,执行清空 anchorQueryItems.removeAll()
- 重置用于生成锚点唯一标识的自增计数器(如果项目用了自增ID区分不同锚点),避免新旧锚点ID重复。
关于物体添加是否修改URL的说明
物体添加到ARView本身不会直接修改URL,修改URL的动作是项目主动触发的:每次放置物体时,项目会把新锚点的坐标、标识等参数拼接成query项追加到URL的query字段中,仅在放置锚点、保存锚点两个节点会触发URL的修改操作。
内容的提问来源于stack exchange,提问作者Myoung
相关产品推荐
相关产品推荐

