核心图形游戏在Real Devices上的表现

时间:2015-04-03 10:00:15

标签: ios performance swift uikit core-graphics

我使用swift和UIKit创建了具有Core图形的简单游戏的图形,Interval = 0.03。它约为~30FPS

class CView: UIView {
let img = UIImage(named: "background.png")
func initalize(){
            var timer = NSTimer.scheduledTimerWithTimeInterval(0.03, target: self, selector: Selector("update"), userInfo: nil, repeats: true)
}

func update(){
        setNeedsDisplay();
    }

override func drawRect(rect: CGRect){
 img?.drawAtPoint(CGPoint(x: 0, y: 0))
}

}

在ViewController的课程中,我使用所有设备的全屏缩放

let mainview = CView()
        mainview.initalize()
        var rect = UIScreen.mainScreen().bounds
        var scaleX = rect.width / 480;
        var scaleY = rect.height / 800;
        mainview.transform = CGAffineTransformScale(CGAffineTransformIdentity, scaleX, scaleY);
        view = mainview

使用30FPS的模拟器可以正常工作,但它在Real Devices(iPhone 4S,Iphone 4),10-14FPS(Iphone 5,5s)上只有5-8 FPS。那么,如何在真正的手机上获得更好的性能。 我只画了一张图片,所以我想画出更多具有最佳性能的图像。有什么帮助吗?

1 个答案:

答案 0 :(得分:1)

这似乎是一种可怕的做事方式,你真的应该研究更合适的框架,比如SpriteKit

我自己不是游戏开发者,但使用NSTimer似乎是一个坏主意,特别是如果性能有任何重要性。简而言之,您应该重新考虑重新绘制屏幕的时间和方式的逻辑,而不是每隔x ms强制重绘一次,让系统处理为您决定这一点,例如,如果您使用CoreAnimation制作动画,系统将是只重绘屏幕的某些部分等。

简而言之,请阅读游戏引擎并重新考虑您的方法,祝您好运!