iOS スプライト キット + パーティクル エミッターを使用するゲームを作成しています。私のシミュレーターでは完全に問題なく動作しますが、iPhone 6 でゲームを実行すると、非常に遅くてラグが多く、操作がほとんどできません。
シミュレーターが私の電話と大きく異なる理由と、それを修正する方法についての提案はありますか? ヒントをいただければ幸いです。
iOS スプライト キット + パーティクル エミッターを使用するゲームを作成しています。私のシミュレーターでは完全に問題なく動作しますが、iPhone 6 でゲームを実行すると、非常に遅くてラグが多く、操作がほとんどできません。
シミュレーターが私の電話と大きく異なる理由と、それを修正する方法についての提案はありますか? ヒントをいただければ幸いです。
私も同じことを経験しています。奇妙なことに、iPhone 5 と iPad のパフォーマンスは素晴らしいです。通常は60fps。
iPhone 6 では、0 ~ 2 fps から始まり、通常はそこにとどまります。場合によっては、20 ~ 30 秒後にすべてが完全にバッファリングされ、60 fps になることがあります。通常、そこに到達することはありません。
つまり、シミュレータと実際のハードウェアの違いだけではありません。iPhone 6 と 6+ には、大きく異なる (そして間違っている) 点があります。
ちなみに、コードで SKEmitterNodes を作成すると、さまざまな値を試すのに時間がかからないので便利です。そのための便利な方法を次に示します。
- (SKEmitterNode *)buildEmitterWithImageName:(NSString *)imagefile {
//instantiate explosion emitter
SKEmitterNode *explosion = [[SKEmitterNode alloc] init];
UIImage *image = [UIImage imageNamed:imagefile];
[explosion setParticleTexture:[SKTexture textureWithImage:image]];
[explosion setParticleColor:[UIColor whiteColor]];
[explosion setParticleBirthRate:2];
[explosion setNumParticlesToEmit:0];
[explosion setParticleLifetime:3];
[explosion setParticleLifetimeRange:1];
[explosion setParticlePositionRange:CGVectorMake(60, 40)];
[explosion setEmissionAngleRange:360];
[explosion setParticleSpeed:80];
[explosion setParticleSpeedRange:30];
[explosion setXAcceleration:0.05];
[explosion setYAcceleration:0.05];
[explosion setParticleAlpha:1.0];
[explosion setParticleAlphaRange:0];
[explosion setParticleAlphaSpeed:0];
[explosion setParticleScale:0.35];
[explosion setParticleScaleRange:0.2];
[explosion setParticleScaleSpeed:0];
[explosion setParticleRotation:0];
[explosion setParticleRotationRange:0];
[explosion setParticleRotationSpeed:0];
[explosion setParticleColorBlendFactor:0];
[explosion setParticleColorBlendFactorRange:0];
[explosion setParticleColorBlendFactorSpeed:0];
[explosion setParticleBlendMode:SKBlendModeAlpha];
return explosion;
}
上記のコードでは、出生率 2 を使用していましたが、これは iPhone 6 では依然として問題でした。
--------- 新しい情報で更新 ----------
私のアプリでは、アプリの多くが標準のナビゲーション コントローラーを使用しているため、複数のビュー コントローラーがあります。また、これらのビュー コントローラーの一部には、独自の SKView および SKScene インスタンスがありました。
これは、iPhone 5 と iPad では決して問題ではありませんでしたが、iPhone 6 と 6+ ではキラーのようです。アニメーション化しようとしていた SKScene と SKEmitterNode を使用して、アプリを単一の VC に縮小する実験を行いました。突然、60fpsで動作します。
参考までに、このシーンでは異なるアート アセットを実行する 4 つのエミッタ ノードがあり、当然のことながら超高速です。
このためだけにアプリを再設計しなければならないのは非常に面倒です。