iOS 11 精灵套件游戏不会超过 30 FPS



我正在使用 Xcode beta 来更新我的一个 iOS 11 应用程序。在为游戏添加了一些新功能后,我在测试时注意到,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)
}

这是一个简单的解决方案。确保代码以正确的顺序运行。在游戏加载时生成新精灵时,您需要确保有足够的内存。删除添加的精灵解决了我的问题。

最新更新