swift - 获取节点的rootNode
问题描述
在 ARKit 项目中,当用户点击屏幕时,我想要获取rootNode
用户想要与之交互的元素。
手势和命中测试
func screenTapped(_ sender: UITapGestureRecognizer) {
let hitTestResult = sceneView.hitTest(touchLocation)
if let result = hitTestResult.first {
guard let rootNode = getRoot(for: result.node) else {return}
...
}
递归函数获取根节点
func getRoot(for node: SCNNode) -> SCNNode? {
if let node = node.parent {
return getRoot(for: node)
}
else {
return node
}
}
但在我看来,Swift 默认不提供某些东西,而为子节点提供递归方法,这对我来说似乎很奇怪。
- 有替代/更好的方法吗?
- 我应该把这个函数写成扩展
SCNNode
吗?
解决方案
不等于sceneView.scene.rootNode
吗?
推荐阅读
- google-apps-script - 社区连接器教程导致“未知数据源”
- class - 为什么不能在飞镖类中的方法体之外打印任何语句
- python-3.x - 如何使用 selenium python 从 Outlook 下载嵌入的 content-id 图像
- java - Spring 跟踪日志 null ModelAndView 返回
- sql - 想要通过在 Postgres 函数中一次性传递多个参数来获得输出
- winforms - 将事件通知从 Winforms 服务器应用程序发送到 Blazor 客户端应用程序的最佳方式是什么?
- docker - 操作:推送:未经授权访问存储库 docker Harbor 注册表
- excel - 在最小最大条件范围内分布数字
- javascript - 两个相同的命名标识符如何导致此代码中的无限循环?
- django - 我可以在 Django 的模板标签内有模板标签吗?