如何检测非AR模式下的RealityKit ARView是否包含指定锚点
如何检测非AR模式下的RealityKit ARView是否包含指定锚点
嘿,这个问题我之前做非AR的RealityKit项目时也碰到过,其实解决方案特别直接,不用自己折腾复杂的遍历逻辑~
你看,不管是AR模式还是非AR模式,你添加的所有锚点其实都存在ARView.scene.anchors这个数组里,所以要检查某个锚点是否已经被添加到视图中,直接用数组的contains方法就可以了,完全贴合你想要的写法!
对应到你的代码场景,具体写法就是:
if arView.scene.anchors.contains(playerAnchor) { // 这里编写锚点已存在时的处理逻辑 }
这里要注意,这个判断是基于对象引用的检查,只要你用的是当初添加的那个playerAnchor对象实例来判断,结果就绝对准确——毕竟你是把这个实例直接添加到anchors数组里的,用contains匹配引用完全没问题。
如果以后你碰到更复杂的场景,比如锚点不是直接加到scene.anchors,而是作为子实体嵌套在其他锚点或实体里,那可以用锚点的isInHierarchy属性来判断它是否属于当前场景的层级结构:
if playerAnchor.isInHierarchy { // 锚点存在于当前场景的层级结构中 }
不过就你现在的代码场景来说,第一种方法就完全够用啦。
内容来源于stack exchange
相关产品推荐
相关产品推荐

