Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.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
Sprite kit 该操作将以每秒60帧的速度调用还是不调用?_Sprite Kit_Frame Rate_Skaction - Fatal编程技术网

Sprite kit 该操作将以每秒60帧的速度调用还是不调用?

Sprite kit 该操作将以每秒60帧的速度调用还是不调用?,sprite-kit,frame-rate,skaction,Sprite Kit,Frame Rate,Skaction,当我像这样设置SpriteKit操作时: action = [SKAction sequence:@[[SKAction performSelector:@selector(update) onTarget:self],[SKAction waitForDuration: 1.0f/60.0f]]]; 即使游戏仅以每秒30帧的速度运行,我的选择器也会以每秒60帧的速度被调用吗?或者无论游戏当前的帧速率是多少,它都会最大化吗?它应该与你的帧速率同步调用。SKScene参考说明,对于didEval

当我像这样设置SpriteKit操作时:

action = [SKAction sequence:@[[SKAction performSelector:@selector(update) onTarget:self],[SKAction waitForDuration: 1.0f/60.0f]]];

即使游戏仅以每秒30帧的速度运行,我的选择器也会以每秒60帧的速度被调用吗?或者无论游戏当前的帧速率是多少,它都会最大化吗?

它应该与你的帧速率同步调用。SKScene参考说明,对于didEvaluateActions方法:

不要直接调用此方法;只要场景显示在视图中且未暂停,则每帧仅调用一次

这也符合SK编程指南中的更新循环图。Sprite Ykit没有始终以固定间隔运行的“固定”更新方法


如果waitForDuration未绑定到帧速率,这将违反记录在案的更新循环行为。

是,无论帧速率如何,选择器每秒都将被调用60次。(这必须使用repeatForever调用)嗯,在SKAction中performSelector的工作方式有一个问题。如果我不将waitForDuration放在那里,应用程序将挂起在一个无限循环中,因此这表明操作不一定每帧调用一次。我甚至直接和苹果公司谈过这件事,他们说是的,我需要把延迟放进去,以避免无限循环。但是,我忘了问他们它的调用速率是多少,60fps还是实际帧速率。performSelector是一个“即时”动作,这意味着它没有持续时间来解释为什么循环会导致无限循环。