- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
你好,我有一个 SceneKit 游戏。所有游戏都在一个场景中进行,当游戏结束时, Sprite 工具包叠加层充当游戏结束屏幕,当他们再次点击播放时, Sprite 工具包标签消失,游戏在同一场景中全部重置。
我的发行即将在游戏结束时到来。如果用户在几秒钟内点击重播按钮,那么一切都会顺利进行。但是,如果用户坐在游戏结束位置上超过五秒钟,那么场景就会卡住。我真的很困惑,因为应用程序在卡住时处于空闲状态并且我没有收到任何错误。与玩游戏相比,游戏期间内存和 CPU 使用率也低得多。此外,该应用程序本身并没有被卡住,就像我单击菜单按钮一样,它会很好地过渡到新的 View Controller 。
没有内存泄漏或错误,我真的不知道从哪里开始寻找问题所在?有人能指出我正确的方向吗
更深入地了解正在发生的事情:该游戏是一款使用物理模拟的半分钟短 Action 游戏。有一个计时器设置为每 0.01 秒触发一次,这会影响游戏的进行。当游戏结束时(由一个节点与另一个节点碰撞引起)玩家节点被移除,一个变量被设置为 false 这样当游戏计时器触发时什么也不会发生,并且在 sprit kit overlay 中创建了一堆标签节点作为游戏结束菜单。
同样,如果用户在五秒内点击重播,一切都会很好。单击重播隐藏所有标签,在起始位置创建玩家节点,并将计时器变量设置回真。
这里是设置场景的代码
// create a new scene
scene = SCNScene()
sceneView = SCNView()
sceneView.frame = self.view.frame
sceneView.autoresizingMask = UIViewAutoresizing.allZeros
sceneView.scene = scene
sceneView.autoenablesDefaultLighting = false
sceneView.allowsCameraControl = false
sceneView.showsStatistics = false
sceneView.backgroundColor = UIColor.blackColor()
scene.physicsWorld.gravity = SCNVector3Make(0, -30, 0)
scene.physicsWorld.contactDelegate = self
self.view = sceneView
self.MarbleGeo = SCNSphere(radius: 1.3)
hud = Hud(size: self.view.frame.size, game: self)
sceneView.overlaySKScene = hud
编辑
我已经找到了代码崩溃的地方。单击再次按钮时,所有标签都应该移动或淡出或沿着这些线产生一些效果。无论如何,重新启动游戏的方法调用是在这些效果中的最后一个完成时进行的。这是代码
println("Before check")
MenuLabel.runAction(moveButtonsOut, completion: { () -> Void in
self.scoreLabel.removeFromParent()
self.MyGame.Setup()
self.MyGame.Restart(true, Level: self.MyGame.level)
self.startTimer()
println("should have called the game to begin by now")
//self.playing = true
//self.MyGame.addMarble()
})
记录了第一个语句,但没有记录完成 block 内部的语句。所以我想我的问题现在变成了为什么这些操作在游戏卡住后没有运行和完成?
编辑
似乎 SKActions 被踢出了队列。在 game over 场景中,一些标签一遍又一遍地放大和缩小,有些标签淡入淡出等等。无论如何,当所有这些都在进行时,重播按钮效果很好,没有错误。当所有这些操作卡住时,即按钮不再起作用,因为重启方法在完成时永远不会被调用。我尝试将重启方法放在完成之外,当它们被称为所有操作时,因为解冻并且它们都急于完成并且看起来很糟糕。所以总结一下就是暂停 SKActions
希望这对您有所帮助。
最佳答案
您的 SceneKit 场景正在播放吗?当您拥有
scene.playing = YES
SCNAction
实例运行SpriteKit 场景覆盖仅在 SceneKit 场景刷新时刷新。因此,如果 SceneKit 场景没有重新显示,覆盖层中设置的 Action 可能不会运行。
一个解决方案可能是设置 playing
属性或将 Action 添加到 SceneKit 对象而不是 SpriteKit 对象。
这无关紧要,但请尽量远离计时器。 SceneKit 提供了几个游戏循环回调,让您可以做您想做的事。
关于swift - SKScene 在空闲时变得无响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28141782/
我有一个需要从远程下载数据的更新服务,但是就像微软的 BITS 我想在用户空闲和/或他们的网络利用率低时执行此操作,以免影响他们的体验. 我需要做什么或看什么?谁能指出我从哪里开始并获得我需要的信息的
我有一个运行良好的 Angular 项目,我正在实现 NG-IDLE 和 KeepAlive,以保持 session 新鲜并在 API session 到期之前注销用户。 我的问题是 ng-idle
我开始使用http://reactphp.org/用于处理 HTTP 请求。 我运行多个在不同端口上运行的 React Worker,然后使用 Nginx 作为负载平衡来处理请求。像这样 upstre
我有一个 ViewController,它将通过 init 请求访问位置服务 if ([CLLocationManager authorizationStatus] == kCLAuthorizati
1 S postgres 5038 876 0 80 0 - 11962 sk_wai 09:57 ? 00:00:00 postgres: postgres my_app
有没有办法在 Python 的 IDLE 中循环打开的窗口?似乎唯一的方法就是转到菜单栏,或者单击所需的窗口。谢谢。 最佳答案 在 Mac OS X 上,如果您使用的是来自与 Aqua Cocoa T
我在 java 中实现了一个邮件监听器,监听器进入 IDLE 直到新邮件到达,它打印电子邮件主题并立即再次返回 IDLE。 我是否有可能错过我发出的两个 IDLE 之间的事件(新电子邮件)? 例如,我
在嵌入式设备中,允许空闲 HTTP 连接保持打开状态的实际时间是多少? 我知道在 1999 年左右的互联网时代,互联网聊天室有时只会保持连接打开并在他们进来时发送回复。在那些日子里,HTTP 连接的空
我正在网页(在弹出窗口中)检查用户状态 - 他是活跃的还是空闲的。如果他空闲超过 30 分钟,窗口将自动关闭并重置数据库中的一些标志。 我设置了包含时间的 cookie(他打开弹出窗口的时间),并在每
我在空闲: >>> import mymodule >>> # ??? 导入模块后: if __name__ == '__main__': doStuff() 我实际上如何从 IDLE 中调用
除了 Sun Java Mail 之外,还有支持 IDLE 命令的 Java IMAP 库吗? 我一直在使用 Sun 的 JavaMail,它运行良好,只是它有相当多的内存开销。 最佳答案 Chilk
我尝试实现一个邮件服务器,使用 sun IMAPFolder 和空闲命令解析传感器发送的电子邮件。 不幸的是,空闲状态在30分钟后关闭并抛出FolderClosedException。为了模拟在空闲重
我有一个 PHP 脚本可以从文本文件中导入各种数据。 导入非常复杂,我的测试文件有 32.000 个条目。这些条目必须被解析并插入到 mysql 数据库中。 如果我要运行我的脚本,它需要 30 分钟才
我正在使用在后端使用 SQL Server 2008 的 Hibernate 开发 Spring REST Web 应用程序。我在 64 位 Windows 机器上使用 Tomcat 6 作为 Web
我对 JS 中的任务运行器非常陌生,这是我第一次尝试 GruntJS。在我的 Gruntfile.js 中,我保留了几个任务,例如 jshint、cssmin 等。我可以从命令行运行它们,但是当我在那
麦克:特立独行 python :3.4 我尝试在 Python 的 IDLE 中测试 timeit 模块 import timeit >>> timeit.timeit( "obj.method",
我的 C# 应用程序在系统启动时运行,必须等待本地 SQL Server 实例才能真正执行任何操作。现在,我只是等待服务器响应(我曾经获得服务的等待句柄,但那不可靠),然后启动应用程序的主对话框。 当
我在服务器上有一个 (bash) 脚本,我继承了它的管理方面,最近发现脚本中的一个缺陷,没有人引起我的注意。 发现问题后,其他人都跟我说这让他们很恼火,但从来没有告诉过我(太棒了。。。) 所以,脚本遵
假设我有一个 websocket 可以随时接收事件,但大部分时间处于空闲状态,初始连接后将消耗多少带宽以使其保持事件状态? 不管怎样,服务器是使用 ws 的 NodeJS,而客户端使用的是 QtWeb
当我打开应用程序时,让它在后台模式下运行很长时间,然后再次打开,然后不久又崩溃了。崩溃日志表明这次崩溃是由MapKit框架引起的。这只发生在设备中... . 有人能理解这个崩溃日志吗?请帮我解决这个问
我是一名优秀的程序员,十分优秀!