3

私の2Dゲームの場合:
プレイ中に、いくつかの大きなtexture2D(2000x2500ピクセル)をロードし、他のいくつかをアンロードする必要があります。
もちろん、ゲーム/描画のフリーズなしでtexture2Dをロードおよびアンロードしたい(またはそれ以下...):xそれが可能かどうかはわかりません。

「ロード画面」を描いている間、私はすでにいくつかのテクスチャをロードするためにスレッドを使用しています

//thread Loading
ThreadStart th_loadingScreen = delegate { DisplayLoading(LoadingScreen); };
new Thread(th_loadingScreen).Start();

しかし、私はそれがかなり異なっていると思います。

もちろん、私は何かを試しました:

private void LoadUnload()
{
    for (int j = 0; j <= NbrRow; j++)
        for (int i = 0; i <= NbrCol; i++)
        {
            if(somethingTrue)
            {
                ThreadStart th_LoadInGame = delegate
                    {
                        LoadInGame(i, j, TextureStringPathToLoad);
                    };
                new Thread(th_LoadInGame).Start();
            }
        }
}

しかし、私は少しフリーズしています。

また、コンテンツをアンロードする方法は知っていますが、ロードされた単一のテクスチャをアンロードする方法がわかりません:x

4

1 に答える 1

2

ContentManagerオブジェクト内の個々の要素をアンロードする方法はありません。だから、私がやっていることは、複数ContentManagerの を作成し、それらの間で必要なものを分割することです。そうUnloadすれば、たとえば、ある人を記憶に留めておくことができます。

あなたが見ている小さなフリーズに関しては、スレッド化自体はしゃっくりなどがないことを保証するものではありません。ThreadPriorityプロパティをいじります。おそらくそれを低く設定して、何が起こるか見てみてください。ただし、これでも保証するものではありません。記事から:

オペレーティング システムは、スレッドの優先順位を尊重する必要はありません。

于 2013-02-19T19:46:14.223 に答える