1

我正在尝试使用空间锚 API 和他们网站上提供的示例来实现我自己的 iOS 项目。我非常密切地关注这些示例,但由于某种原因,当我尝试保存锚点时,我的应用程序崩溃了。Xcode 向我显示“在游戏对象上找不到 AR 锚”,然后发生 InvalidOperationException 异常。

我已经尝试调试并发现 SessionGetArAnchorPointerForId 返回 InPtr.Zero,它被解释为给定 GameObject 上缺少的 AR Anchor。当我尝试获取游戏对象的本机锚指针时发生错误。

public async void SaveAnchorInCloud(GameObject localAnchor)
   {
       localAnchor.AddARAnchor();//local Anchor is just a Cube instance
       Debug.Log("Added AR Anchor to local Anchor");
       CloudSpatialAnchor cloudAnchor = new CloudSpatialAnchor();
       cloudAnchor.LocalAnchor = localAnchor.GetNativeAnchorPointer(); //error occures here
       await this.cloudSession.CreateAnchorAsync(cloudAnchor);
       Debug.Log("Cloud Anchor erstellt: " + cloudAnchor.Identifier);
   }

我已经与空间锚点示例项目进行了比较,但我似乎无法发现云锚点的保存方式有什么不同。

4

2 回答 2

0

@Chris,您遇到此问题的原因是在 iOS Unity 中创建本地锚点后创建锚点,您需要让框架继续并在之后使用它。如果您查看我们的示例,在我们获得本机指针之前会经过一段时间。如果您在创建锚点后调度代码,这可确保一帧通过,您将不会看到此问题。

于 2019-06-05T05:32:39.987 回答
0

如果您看不到放置的 Anchor,只需确保其上具有 CloudNativeAnchor 脚本的 Anchor GameObject 在层次结构中处于活动状态。当所述游戏对象未激活时发生此错误。

于 2021-12-20T06:22:59.737 回答