Tôi đang tạo trò chơi đơn giản dựa trên gạch trong SpriteKit và tôi đang gặp một số khó khăn khi sử dụng CPU cao trong trò chơi của mình. Tôi có một bản đồ gồm 60 ô và mỗi ô là một lớp con của SKSpriteNode. Chỉ hiển thị 60 sprites này trong cảnh đang sử dụng tới 80% CPU trong bộ giả lập iPhone 6s. Không có chuyển động, tương tác người dùng hoặc vật lý đang diễn ra. Khi tôi thực hiện cùng một trò chơi trong UIKit và không SpriteKit sử dụng CPU của tôi là 0. Điều gì có thể được sử dụng rất nhiều CPU?Sử dụng CPU rất cao trong SpriteKit
lớp gạch của tôi:
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")
}
}
và Sprite đang cảnh Kit của tôi:
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 */
}
}
Cảm ơn! Giảm tới 10% trên điện thoại thực. –
@ATyshka Nếu câu trả lời này giải quyết được vấn đề của bạn, bạn nên đánh dấu nó là [được chấp nhận] (http://stackoverflow.com/help/accepted-answer). – Whirlwind
Xin lỗi! Tôi mới vào trang web này –