2016-03-05 26 views
5

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 */ 
    } 
} 

Trả lời

9

Iphone Simulator trên Xcode có một sử dụng CPU cao hơn nhiều so với một thiết bị thực sự.

Thử nghiệm trên thiết bị thực để có chỉ số thực về Mức sử dụng CPU.

+0

Cảm ơn! Giảm tới 10% trên điện thoại thực. –

+1

@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

+0

Xin lỗi! Tôi mới vào trang web này –

1

Tyshka, bạn cần phải sử dụng lại tài nguyên. Mã của bạn tạo SKTexture mới cho cùng một dữ liệu hình ảnh đầu vào giống nhau. Chỉ cần tạo một SKTexture và sau đó thiết lập đó làm kết cấu cho nút mới. Thêm bản đồ vào mã của bạn để SKTexture có thể được kiểm tra và sử dụng lại cho tên chuỗi kết cấu.

+0

Vâng tôi nhận ra điều đó. Sẽ sửa chữa! –

Các vấn đề liên quan