在 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 无效的主要内容,如果未能解决你的问题,请参考以下文章
如何防止 SceneKit 中的 SpriteKit 覆盖拉伸?
即使请求标头中包含正确的 x-csrf-token,也不要在 Ajax 帖子上设置 current_user
SceneKit:在 SCNView 上渲染 SpriteKit 粒子系统时应用程序崩溃,当所有代码似乎都是系统代码的一部分时如何调试