首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SpriteKit中非常高的CPU使用率

SpriteKit中非常高的CPU使用率
EN

Stack Overflow用户
提问于 2016-03-05 19:58:10
回答 2查看 1.9K关注 0票数 8

我在SpriteKit中制作了一个简单的基于瓷砖的游戏,在我的游戏中,我的CPU使用率过高也有一些困难。我有一张由60个瓷砖组成的地图,每个瓷砖都是SKSpriteNode的一个子类。仅在场景中显示这60颗精灵就需要在iPhone 6s模拟器中消耗多达80%的CPU。没有任何运动,用户交互,或物理正在进行。当我在UIKit而不是SpriteKit中做同样的游戏时,我的CPU使用量是0。什么能用这么多CPU?

我的瓷砖课:

代码语言:javascript
复制
import SpriteKit
import UIKit
class Tile: SKSpriteNode {

var tileType = "grass", tileX = 0, tileY = 0
    init (tileType: String, tileX: Int, tileY: Int) {
        self.tileType = tileType
        self.tileX = tileX
        self.tileY = tileY
        let texture = SKTexture(imageNamed: tileType)
        super.init(texture: texture, color: UIColor(), size: texture.size())
        self.userInteractionEnabled = true
        self.position = CGPoint(x: CGFloat(45+64*(tileX-1)), y: CGFloat(47+56*(tileY-1)))
        self.zPosition = -1

    }
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }

}

我的雪碧套件场景代码:

代码语言:javascript
复制
import SpriteKit
var map: [[String]] = [["grass","water","grass","rocky","rocky","grass","grass","grass","grass","water"],["grass","water","grass","grass","rocky","rocky","grass","grass","water","water"],["grass","water","water","grass","rocky","grass","grass","water","water","water"],["grass","grass","water","rocky","rocky","grass","grass","water","water","water"],["grass","grass","water","rocky","rocky","grass","water","water","water","water"],["grass","grass","water","rocky","rocky","grass","water","water","water","water"] ]
class GameScene: SKScene {
    override func didMoveToView(view: SKView) {
        /* Setup your scene here */
        for (rowNumber, row) in map.enumerate() {
            for (columnNumber, type) in row.enumerate() {
                let theTile = Tile(tileType: type, tileX: columnNumber+1, tileY: rowNumber+1)

                self.addChild(theTile)
            }
        }
        self.backgroundColor = UIColor(colorLiteralRed: 0, green: 0, blue: 0, alpha: 0)


    }

    override func update(currentTime: CFTimeInterval) {
        /* Called before each frame is rendered */
    }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-03-05 20:11:45

Xcode上的Iphone模拟器比实际设备上的CPU使用率高得多。

在真正的设备中进行测试,以便有一个关于CPU使用情况的真实度量。

票数 12
EN

Stack Overflow用户

发布于 2016-06-11 22:56:58

泰什卡你需要重用资源。您的代码为完全相同的输入图像数据创建一个新的SKTexture。只需创建一个SKTexture,然后将其设置为新节点的纹理。向代码中添加一个映射,以便可以根据纹理字符串名称检查和重用SKTexture。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35819138

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档