我一直在开发一个游戏,但发现我的应用程序会迅速耗尽设备电池。我通过XCode工具测量能源的消耗,通常在17/20的范围内。我有一些后台动画,禁用它们似乎有所帮助。出于好奇,我开始了一个包含以下简单代码的项目:
import SpriteKit
import GameplayKit
class GameScene: SKScene {
let NumberOfSprites = 1
override func didMove(to view: SKView)
{
view.showsDrawCount = true
view.showsFPS = true
view.showsNodeCount = true
// Set scene to 414x736 with anchorPoint in the bottom left corner
self.anchorPoint = CGPoint(x: 0, y: 0)
self.size = CGSize(width: 414, height: 736)
var spriteArray = [SKSpriteNode]()
for _ in 0..<NumberOfSprites
{
let sprite = SKSpriteNode(color: .black, size: CGSize(width: 50, height: 50))
sprite.position = CGPoint(x: Int(arc4random_uniform(UInt32(414))), y: Int(arc4random_uniform(UInt32(736))))
self.addChild(sprite)
spriteArray.append(sprite)
}
let moveAction = SKAction.move(by: CGVector(dx: 50, dy: 50), duration: 1.0)
let moveAction2 = SKAction.move(by: CGVector(dx: -50, dy: -50), duration: 1.0)
let repeatAction = SKAction.repeatForever(SKAction.sequence([moveAction, moveAction2]))
for sprite in spriteArray
{
sprite.run(repeatAction)
}
}
}
这段代码会在屏幕上放置一个黑色方块并使其移动,x轴和y轴坐标分别加50和减50,然后重复此过程。下面是这样做的能量影响。我测量了设备的能源使用水平,平均约为7-8/20。
我能够添加多达200,000个节点(只需更改NumberOfSprites变量),能量影响将增加到18/20。当然,对我来说这是有道理的,但我觉得有趣的是,我的应用程序在给定时间屏幕上可能有120个节点,只有一把手的操作,却产生了几乎与此相同的能量消耗。
我的问题是:如果一个简单的操作会导致如此大的能量影响,开发人员是如何在他们的游戏中处理这个问题的?在应用商店中有许多复杂的游戏,看起来几乎不会很快耗尽电池。我错过了什么吗?
提前感谢任何帮助。
view.showsDrawsCount = true
?你是否使用图集? - Whirlwind