gpt4 book ai didi

ios - SpriteKit 电池/能量消耗

转载 作者:行者123 更新时间:2023-12-01 22:34:42 27 4
gpt4 key购买 nike

我开发游戏已经有一段时间了,我开始意识到我的应用程序很快就会耗尽设备电池。我通过 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+50、y+50,然后无限期地移动 x-50、y-50。以下是这样做对能源的影响。我测量了设备的平均能源使用水平约为 7-8/20。

enter image description here

我能够添加多达 200,000 个节点(只需更改 NumberOfSprites 变量),并且能量影响增加到 18/20。这对我来说当然是有意义的,但我发现有趣的是,我的应用程序在给定时间屏幕上可能有 120 个节点,只有一个充满操作的句柄,却产生几乎同样多的能量消耗。

我的问题是:如果一个简单的 Action 会造成如此大的能量影响,开发者如何在他们的游戏中处理这个问题?应用商店中有许多复杂的游戏,它们似乎并没有这么快耗尽电池电量。我错过了什么吗?

预先感谢您的帮助。

最佳答案

高 CPU 消耗通常是绘制计数问题。您可以通过利用 Sprite 图集来减少绘制次数,尽管它们有大小限制和其他值得在 Swift 文档中查看的怪癖。特别值得注意的是,当您将许多 Sprite 加载到图集中时,当访问该图集中时,它会将所有这些对象放入内存中,因此当您寻求减少 CPU 负载时​​,应该注意此处的内存使用情况。我还要补充一点,大多数具有大量动画的游戏都具有非常高的能耗,因此“您可以做什么”是有限的。

关于ios - SpriteKit 电池/能量消耗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47103149/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com