gpt4 book ai didi

swift - ARKit – 无法解码 MCSession 中的 ARAnchor

转载 作者:搜寻专家 更新时间:2023-10-31 08:07:32 27 4
gpt4 key购买 nike

我正在使用 WWDC 2018 中推出的 ARKit 2.0 测试 Apple 的多用户 AR 演示应用程序:Creating a multiuser AR experience .

文档说,在每个设备重新定位到相同的 World Map 之后,只有重新创建每个用户操作所需的信息在设备之间共享(例如,如果用户点击屏幕和 3D 对象出现,只有那个新对象的 ARAnchor 应该被发送到其他设备)。对我来说,虽然它显示了发送设备在捕获和发送世界地图之前放置的所有 3D 角色,但它没有显示发送世界地图后添加的任何对象。我得到的错误是:

// can't decode data recieved from peer.

有没有人遇到过这个问题并且知道它是怎么回事?

我没有更改演示代码中的任何内容。

最佳答案

我遇到了同样的麻烦,但我用这种方式解决了它。

(1)首先创建一个变量来检查世界地图是否已经发送。

var worldMapHasInited: Bool = false

(2)然后在func shareSession(_ button: UIButton)下面添加这一行

self.multipeerSession.sendToAllPeers(数据)

self.worldMapHasInited = true

(3)最后在func receivedData(_ data: Data, from peer: MCPeerID)

检查世界地图是否发送,如果发送则跳过检查数据是否包含世界地图

    if !worldMapHasInited {
if let worldMap = try NSKeyedUnarchiver.unarchivedObject(ofClass: ARWorldMap.self, from: data)
{
//....
// when received world map, set the receiver's
// worldMapHasInited to true
self.worldMapHasInited = true
}
}
else
if let anchor = try NSKeyedUnarchiver.unarchivedObject(ofClass: ARAnchor.self, from: data) {
// ...
}

这将直接检查数据是否包含 anchor 。

关于swift - ARKit – 无法解码 MCSession 中的 ARAnchor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52075159/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com