Nee*_*101 3 augmented-reality ios arkit swiftui realitykit
摘要:添加 AR 对象后删除其上的触摸手势?
AR 查看代码(仅相关位)。其中 arObject 是具有网格、材质和碰撞形状的模型实体。
func updateUIView(_ uiView: ARView, context: Context) {
arObject = CreateCustomModelEntity()
uiView.installGestures([.translation, .rotation], for: arObject)
}
Run Code Online (Sandbox Code Playgroud)
上面的代码可以向我的 arObject 添加触摸手势,并允许它在锚定平面上旋转和移动。
但是,我想在添加后删除触摸手势。
用户流程:
用户可以单击一个模型,将其移动并将其放置在他们想要的位置,然后触摸“确认”按钮。触摸确认按钮后,arObject 将无法再移动。
查看Apple文档,有一个installGestures,但没有等效的removeGestures。这可能吗?
一些想法,
小智 6
installGestures 方法返回 EntityGestureRecognizers 数组,并将这些gesturesRecognizers 分配给 arView.gesturesRecognizers 数组。如果您想删除给定实体的手势,您需要找到所需的gesturesRecognizers并将其从该数组中删除。
下面的代码将平移和旋转gestureRecognizers分别分配给一个属性,您可以使用该属性在arView.gesturesRecognizers数组中查找相应的索引。
func updateUIView(_ uiView: ARView, context: Context) {
arObject = CreateCustomModelEntity()
translationGestureRecognizer = uiView.installGestures([.translation], for: arObject).first
rotationGestureRecognizer = uiView.installGestures([.rotation], for: arObject).first
}
func removeGesture() {
let recognizerIndex = arView.gestureRecognizers?.firstIndex(of: translationGestureRecognizer!)
arView.gestureRecognizers?.remove(at: recognizerIndex!)
}
Run Code Online (Sandbox Code Playgroud)
我发现从场景中删除对象时也必须从 arView 中删除gestureRecognizers,否则它不会从内存中释放,从而增加应用程序的占用空间。
| 归档时间: |
|
| 查看次数: |
625 次 |
| 最近记录: |