1

私の libgdx ゲームには、複数の画面があります。メソッドを適切に使用する方法が少しわかりませんdipose()

各画面には、dispose()メソッドで作成して破棄する特定の変数があります。破棄しないとメモリリークが発生し、プログラムがクラッシュすることをオンラインで読みました。

しかし、何らかの理由で、 で何かを破棄するMenuScreenと、アプリでクラッシュが発生します ( Fatal signal 11)。(別の画面を切り替えると、他のランダムな時間にもエラーが発生します)。これが、各クラスでファイルに同じ名前を付けることと関係があるかどうかはわかりません。

たとえば、create()各クラスの関数でこれを行います。

batch = new SpriteBatch();
shapeRenderer = new ShapeRenderer();

次に、dispose()各クラスの関数でこれを行います。

batch.dispose();
shapeRenderer.dispose();

各クラスで同じ変数名を保持すると、コードに影響がありますか? これとは別に、すべての画像、音声、フォントを手動で破棄します。

MenuScreenクラスに何も配置していない場合でも、Fatal Signal 11画面を切り替えるとエラーが時々発生します。

あいまいで申し訳ありませんが、このエラーの原因がわかりません。また、画面切り替え時に約 1 秒の遅延があります。

ノート:

画面を切り替えるときは、次のようにします。

game.setScreen(new ScreenName(game));

whilegameは my の単なるインスタンスですMainClass:

final MainClass game;
4

1 に答える 1

0

メイン クラスのインスタンスを渡しているのに、なぜ各クラスで新しいバッチを作成するのでしょうか? メインクラスのバッチを使用するだけです

于 2015-08-11T15:39:40.340 に答える