我正在使用Xcode测试版更新我的一个iOS 11应用程序。在为游戏添加了一些新功能后,我在测试时注意到,FPS真的很低。它们以前并没有这么低。老实说我不知道该给你们什么代码。这会不会仅仅是betas版的问题?或者是我在我的游戏里塞了太多垃圾?
我的游戏只有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)
}发布于 2018-08-07 07:01:09
这是一个很容易解决的问题。确保您的代码以正确的顺序运行。当游戏加载时生成新的精灵时,你需要确保你有足够的内存。在添加Sprite时删除它们解决了我的问题。
https://stackoverflow.com/questions/44891931
复制相似问题