2017-05-05 8 views
0

私は小さなゲームを開発しています。それはsksファイルとサウンドファイルをかなりよく読み込みます。しかし、数分のテストの後、私は "音源のロード中にエラーが発生する"ようになり、パーティクルエフェクトはすべて消えます。突然ファイルを読み込めません。

私はそれがメモリの問題かもしれないと思ったが、ゲームは約120Mしかかからず、私はまだメモリの警告を受け取っていない。

どのように最初からファイルを読み取ることができますか?数分後にファイルを読み取れません。私が知らないSpriteKitになんらかのトリッキーなことはありますか?これは、100ファイルを正常に読み込んだ後に、ユーザーがiPhoneを2回振って逆さまにするまで、ゲームはこれ以上ファイルを読み取ることができません...もしそうなら、ゲームのチュートリアルでプレイヤーに知らせることができます。

だから、誰も私を助けることができます...これは...?おかげでたくさんの...

// The way I load background music: 

let musicPath=Bundle.main.path(forResource: "Main", ofType: "mp3") 
let url = URL(fileURLWithPath: musicPath!) 
do{ 
    try main=AVAudioPlayer(contentsOf: url)  
}catch{  
    return 
} 

// The way I load sound files: 

let a = SKAction.playSoundFileNamed("Fire",waitForCompletion:false) 
audioNode.run(a) 


// The way I load SKS files: 

let emitterPath = Bundle.main.path(forResource: "Fire", ofType: "sks")! 
let emitter = NSKeyedUnarchiver.unarchiveObject(withFile: emitterPath) as! SKEmitterNode 
self.addChild(emitter) 

答えて

0

それはあなたのコードを見ずに言うのは難しいのですが、あなたは、ファイルの読者の多くを開いている場合は、メモリが不足する可能性があるか、他のノードからの読み取りまでのファイルにアクセスできないようファイルがなくなった。

レンダリングするたびに新しいオーディオノードを作成しているのですか?

Appleドキュメントでは、1つのSKActionを作成して再利用することを提案しています。したがって、Fireアクションを再利用する必要がある場合は、新しいSKActionを何度も何度も割り当てずに、そのシングルオブジェクトを作成して繰り返し実行します。

Source

+0

[OK]を編集し、上記のコードを提供しました。ファイルを閉じる方法..? –

+0

申し訳ありませんが、スプライトの読み込み方法を誤解しているはずです。更新私の答え – Ganksy

+0

ありがとう。私はそれを試してみるだろうが、私はまだ粒子の消失の問題に対処する方法がわからない:) –

関連する問題