2016-04-06 10 views
0

私はこの質問について多くのことを読んだことがありますが、自分の状況でどのようにアプローチするべきかアドバイスしたいと思います。リソースをロードして廃棄する必要がある場合

私は約8種類の画面を持つユーザーインターフェイスを持っていますが、画面間でスワップする際にリソースのロード/廃棄を計画していないため、ユーザーエクスペリエンスが非常に悪いです。

しかし、12個のミニゲームが私のUIから始めることができます。これは私の質問につながります。いつ資産をロードして処分する必要がありますか?

  • オプションA:私はそれを見たよう

    が、私は2つのオプションがあり、私はゲームが開始されたとき、しかし、これは悪い解決策のように思えるすべての単一の資産をロードします。

  • オプションB:Iゲームの開始時にUIアセットのみを読み込み、起動時に各ミニゲームのアセットを読み込み、終了後に処分します。

オプションBを使用すると、ミニゲームが開始される前にすべてのUI資産を処分する必要がありますか?それは、ミニゲームが終了した後にそれらを再ロードしなければならないことを意味するでしょう(各ミニゲームは50秒です)。これはユーザーフレンドリーではないようですが、ミニゲームを開始したとき(ユーザーがミニゲーム終了後にUIにリダイレクトされる)にUI資産を処分しないとメモリリークが発生しませんか?

+0

の特性が最善の解決策はlibgdx [AssetManager](httpsを使用することは何かということです://github.com/libgdx/libgdx/wiki/Managing-your-assets)、すべてをロードして、資産管理者にあなたのためにすべてを処理させます。アセットマネージャを使用していないときにアセットマネージャを破棄するだけです。 – Hllink

+0

私はすでに資産マネージャを使用していますが、依然としてリソースをロード/アンロードする必要があります。 –

+0

はい、ユーザーは最初のレベルのリソースをロードできます。 minigameを変更すると、最後のレベルのリソースを廃棄し、次のレベルのアセットを読み込むスレッドが起動します。アセットがロードされている場合は、ユーザーを待たせることなくすべてのレベルの変更を確認する必要があります。そのアセットマネージャの更新(intミリ秒)については、[reference](https://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/assets/AssetManager.html) – Hllink

答えて

0

実際の質問は、あなたが持つ資産の量とその大きさ(解像度はどの程度か)です。

最高のアイデアは、グラフィックに関するすべてのことを1つの偉大なものにしているようです。TextureAtlas - ただし、2048x2048pxより大きいアトラスを作成し、最初にこのアトラスをロードすることはお勧めしません。スプラッシュ後に画面が表示されます)、アプリケーションの終了時にアンロードします。

もちろん、あなたはすでにあなたがしていると思うAssetManagerインスタンスを使用する必要があります。

私の考えでは、すべての資産が2つ、3つの地図にあるのと同じ状況です。また、音楽私はこの方法を扱っていました - 残念ながら、音楽のためのアトラスはありません:)


資産の額が本当に巨大であり、あなたは、私は最高のアイデアがあることが怖い冒頭で一度、それらをロードできない場合ミニゲームを開始する前に直接ロードし、終了後すぐに処分してください。これはあなたのメモリを管理する最も効率的な方法のようです。また、ユーザーは、私が推測するミニゲームの開始と終了時にいくつかの読み込み画面を見る準備ができています。

また、積載資産の一部lazy技術を実装しようとすることができますが、それは本当にあなたが持っているどのように多くの資産に依存し、アプリケーション

+0

お返事ありがとうございます!私は、1つのアトラス+ 1 background.png私は、時には2と言うだろう各ミニゲームを持っています。私は1080x1800の解像度を使用するので、画像がかなり大きいです。 –

+0

あなたはいくつのミニゲームを持っていますか? –

+0

これまでのところ、私の友人であるasset-folderは16,9MBです。 –

関連する問題