我正在使用Xcode beta来更新我的iOS应用程序之一。在为游戏添加一些新功能之后,我注意到在测试时,FPS真的很低。他们以前不是这么低。老实说,我不知道给你们的代码是什么。这可能只是贝塔的一个问题吗?还是我只是把我的游戏塞进了很多东西?
我的游戏只有342MB。它是一款完全没有3D渲染的2D游戏。我能想到的唯一一件事就是我有太多的arc4random同时出现......
编辑: 这是我认为导致问题的代码
func getCollectable() -> SKSpriteNode {
var collecatble = SKSpriteNode()
if Int(randomBetweenNumbers(firstNum: 0, secondNum: 9)) == 4 {
//Come Back
if GamePlayController.instance.life! < 100 {
collecatble = SKSpriteNode(imageNamed: "MonsterRobot")
collecatble.name = "Monster"
collecatble.physicsBody = SKPhysicsBody(rectangleOf: collecatble.size)
collecatble.yScale = 0.09
collecatble.xScale = 0.09
}else{
collecatble.name = "Empty"
}
}else{
collecatble = SKSpriteNode(imageNamed: "Coin2")
collecatble.name = "Coin2"
collecatble.physicsBody = SKPhysicsBody(rectangleOf: collecatble.size)
}
if Int(randomBetweenNumbers(firstNum: 0, secondNum: 100)) == 51 {
collecatble = SKSpriteNode(imageNamed: "Slow icon")
collecatble.name = "SlowIcon"
collecatble.physicsBody = SKPhysicsBody(rectangleOf: collecatble.size)
collecatble.yScale = 0.05
collecatble.xScale = 0.05
}
collecatble.physicsBody?.affectedByGravity = false
collecatble.physicsBody?.categoryBitMask = ColliderType.DarkCloudAndCollectables
collecatble.physicsBody?.collisionBitMask = ColliderType.Player
collecatble.zPosition = 2
return collecatble
}
func randomBetweenNumbers(firstNum: CGFloat, secondNum: CGFloat) -> CGFloat {
return CGFloat(arc4random()) / CGFloat(UINT32_MAX) * abs(firstNum - secondNum) + min(firstNum, secondNum)
}
答案 0 :(得分:0)
这是一个简单的解决方法。确保您的代码以正确的顺序运行。在游戏加载时生成新的精灵时,需要确保您有足够的内存。在添加精灵时删除它们解决了我的问题。