在 overlaySKScene 上设置 userInteractionEnabled=true/false 无效

Posted

技术标签:

【中文标题】在 overlaySKScene 上设置 userInteractionEnabled=true/false 无效【英文标题】:Setting userInteractionEnabled=true/false on the overlaySKScene has no effect 【发布时间】:2016-01-18 15:22:46 【问题描述】:

我有一个像这样的 SceneKit 视图:

mySCNKitView.scene = a SCNScene
mySCNKitView.overlaySKScene = a SKScene

现在如果我在overlaySKScene 上设置userInteractionEnabled 属性,它没有任何效果,即它始终处于启用状态,所以我不能禁用overlaySKScene 的用户交互!? 所有添加到overlaySKScene 的子 SKNode 仍将接收用户交互...

即这没有效果,它总是启用的

mySCNKitView.overlaySKScene?.userInteractionEnabled = true / false

不知道是不是应该这样? 但似乎这就是应该如何禁用overlaySKScene 的用户交互...?

【问题讨论】:

【参考方案1】:

Apple 开发者关系2016 年 1 月 20 日晚上 8:20

此问题的行为与预期基于以下几点:

这是 SpriteKit(与 UIKit 不同)中“userInteractionEnabled”的预期行为。您必须将每个节点(不仅是 SKScene 节点)的 userInteractionEnabled 设置为 false,否则任何具有 userInteractionEnabled=true 的节点都会捕获该事件。请注意,SKNode 的 userInteractionEnabled 默认为 NO(SKScene 除外)。

我们现在关闭此错误报告。

如果您对解决方案有疑问,或者这对您来说仍然是一个关键问题,请使用该信息更新您的错误报告。

【讨论】:

【参考方案2】:

你解决过这个问题吗?我遇到了类似的问题,然后终于解决了以下问题:

let scnView = self.view as! SCNView
let scene = SCNScene()
var spriteScene: OverlayScene!

self.spriteScene = OverlayScene(size: self.view.bounds.size)
scnView.overlaySKScene = self.spriteScene
scnView.overlaySKScene?.userInteractionEnabled = false

使用上面的代码,我的整个覆盖场景被忽略,SceneKit 场景根据需要接收事件。这是在 Xcode 7.3 测试版中,tvOS 部署目标 9.1,所以也许这是 Apple 最近改变的东西?

【讨论】:

有趣,我试试看……然后回来…… 不,这个问题在我的游戏中仍然存在。您能否发布您的项目以供下载,以便我进行测试? 我认为这是因为您可能只针对 tvOS。 tvOS 的工作方式不同……没有触摸/点击表面。你在 Mac OS X 或 ios 上试过吗?

以上是关于在 overlaySKScene 上设置 userInteractionEnabled=true/false 无效的主要内容,如果未能解决你的问题,请参考以下文章

如何在相机ARKit上添加半透明背景

如何防止 SceneKit 中的 SpriteKit 覆盖拉伸?

SceneKit 计算具有枢轴的节点的顶点世界坐标

即使请求标头中包含正确的 x-csrf-token,也不要在 Ajax 帖子上设置 current_user

如何在课堂上设置两个外键? DJANGO ORM

SceneKit:在 SCNView 上渲染 SpriteKit 粒子系统时应用程序崩溃,当所有代码似乎都是系统代码的一部分时如何调试