2017-02-12 3 views
0

私はスクリーンそのものを廃棄することを意味するわけではないので、質問はちょっと捨ててしまいます。私が使用しているのは、ScreenクラスとGameクラスではなく、画面を切り替えるenumとswitch文です。私がここで本当に求めているのは、あるゲームの状態から他のゲームの状態に切り替えるときに、自分のディスポーザブルアイテムをすべて手前に置くことになっていますか?別の画面をレンダリングしているので、もうレンダリングしなくても、私はそれらのすべてを保持して、心配する必要はありませんか?私は別のものに切り替えるたびに、画面上のすべてのリソースを一度に処理しなければならないと迷惑をかけるので、本当に必要かどうか疑問に思っています。LibGDXでスクリーンを廃棄するのはいつですか?

答えて

2

あなたのゲームの選択とタイプ(ゲームには多くのリソースがありますか)です。

多くのリソースを持っている場合は、1つの画面のリソースを破棄し、別の画面のリソースをメモリにロードした後でそのリソースを使用する方がよいでしょう。

このシナリオでは、画面を読み込み、リソースを非同期でロードします。

多くのリソースがない場合は、ゲームを終了したときにのみリソースを処分してください。継承されたゲームのdispose()は、このシナリオでゲームリソースを処分し、ここから処分するのに最適な場所です。画面固有のリソースを廃棄することができます。

0

クイックのルールが使用できます

アプリケーションの起動時に何か(テクスチャ、TextureAtlas、音楽、サウンドなど)をロードし、メモリヒープに問題を持っていない場合 - アプリケーションのdisposeメソッドでそれを処分します。

しかし、スクリーンに何か特別なものを読み込む場合は、スクリーンのdisposeメソッドで処理する必要があります。

exのリソースを処分しない場合は、あなたがそれをレンダリングしない場合でも、テクスチャはメモリに残っています。画面内にいくつかのテクスチャを読み込むときに、メソッドをdisposeメソッド内に置かないと、スクリーンを再起動するときに同じテクスチャを2回読み込むため、メモリリークが発生する可能性があります。

関連する問題