我正在制作我的第一个SpriteKit游戏,并且遇到了这个非常令人沮丧的错误。我有一个节点,一个玩家和一个他们必须获得的项目。当玩家与物品碰撞时(我正在与物理机构进行此检查),物品会移动到屏幕上的随机位置。
问题是,这种碰撞是随机的(1中5)导致游戏冻结而没有任何错误。我试着看看我的代码中是否有任何代码运行无限循环,但是代码使它到了update:
方法的末尾就好了。
所以我在SpriteKit循环的不同点添加了一堆打印语句,发现冻结后它甚至没有到达didEvaluateActions
。
我还检查了仪器以查看哪些方法耗尽了CPU(当冻结时它达到100%),这就是我发现的:
非常感谢任何帮助,提前谢谢。
答案 0 :(得分:1)
发现问题的根源是在程序根据图片here评估操作时发生的。
冻结的原因是我偶然通过arc4random() % 5
时间永远调用一个动作而产生的无限循环,当它出现0时会产生无限循环。
答案 1 :(得分:1)
在这种情况下,您可以编写arc4random() % 5 + 1
,这意味着系统会生成1到5之间的随机数。它不会再次返回0。