Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 添加图像后,SpriteKit/Swift中的FPS受到限制_Iphone_Swift_Sprite Kit_Frame Rate - Fatal编程技术网

Iphone 添加图像后,SpriteKit/Swift中的FPS受到限制

Iphone 添加图像后,SpriteKit/Swift中的FPS受到限制,iphone,swift,sprite-kit,frame-rate,Iphone,Swift,Sprite Kit,Frame Rate,当我在精灵工具包中编写一个游戏时,我注意到即使添加一个图像,帧速率也会从60降低到30,这有什么原因吗?我做代码效率低吗?这很简单 此代码以每秒30帧的速度运行 import SpriteKit class OptionMenu: SKScene { var Screen: SKSpriteNode! override func didMoveToView(view: SKView) { Screen = SKSpriteNode() self.addChild(Screen

当我在精灵工具包中编写一个游戏时,我注意到即使添加一个图像,帧速率也会从60降低到30,这有什么原因吗?我做代码效率低吗?这很简单

此代码以每秒30帧的速度运行

import SpriteKit

class OptionMenu: SKScene
{
var Screen: SKSpriteNode!

override func didMoveToView(view: SKView)
{
    Screen = SKSpriteNode()
    self.addChild(Screen)
    addBg()

}

func addBg(){
    let MainMenu = SKSpriteNode(imageNamed: "MainMenu")
    MainMenu.position = CGPointMake(frame.width / 2, frame.height / 2)
    addChild(MainMenu)

}    
}
此代码以每秒60帧的速度运行

import SpriteKit

class OptionMenu: SKScene
{
var Screen: SKSpriteNode!

override func didMoveToView(view: SKView)
{
    Screen = SKSpriteNode()
    self.addChild(Screen)
}
}
我不明白一张图片怎么会对帧率造成如此严重的影响? 顺便说一句,图像的像素大约是1000×700 谢谢 布伦南

编辑:我还应该在GameViewController()中添加代码

编辑2: 类似的线程已存在:


我这里的问题略有不同,我想知道我是否无意中限制了我的帧速率。当我添加一个图像时,FPS保持在30.0 FPS不变,这对我来说意味着它不是因为模拟器性能差而滞后,而是我在某种程度上限制了它。

是的,这是正常的,尤其是在iOS模拟器上。 如果主菜单图像几乎完全覆盖屏幕,则仅一张图像就足以看到fps从60下降到30。 iOs symulator通过软件渲染器模拟OpenGL ES


尝试在真正的iPhone上运行测试代码,你会看到fps再次启动。

你是在模拟器上运行的吗?是的,这是一个Xcode错误还是Xcode内模拟器上的某些设置?看看这个:iOS模拟器在运行Sprite Kit游戏时帧速率低得离谱。我的游戏在模拟器上运行的速度不到5 fps,在真正的iPhone4S上运行的速度不到60 fps。模拟器实际上是在CPU上运行GPU调用的,就像是一场考验。基本上,它模拟GPU调用,速度非常慢。如果您在模拟器中使用OpenGL,您将立即看到这些点击。不要相信sim卡给你的FPS。当涉及到GPU绑定的东西时,总是在设备上进行测试。
override func viewDidLoad() {
    super.viewDidLoad()
    let scene = OptionMenu()
    // Configure the view.
    let skView = self.view as SKView
    skView.showsFPS = true
    skView.showsNodeCount = true

    /* Sprite Kit applies additional optimizations to improve rendering performance */
    skView.ignoresSiblingOrder = true

    /* Set the scale mode to scale to fit the window */
    scene.scaleMode = .AspectFill
    scene.size = skView.bounds.size
    skView.presentScene(scene)

}