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对象中的单个元素。所以,我要做的是制作多个ContentManagers 并将我需要的东西分开。Unload例如,这样我就可以一个人,并让其他人保持记忆。

至于您看到的小冻结,线程本身并不能保证没有打嗝等。我会弄乱Thread' 的Priority属性;也许尝试将其设置得更低,看看会发生什么。然而,即使这也不能保证。来自文章:

操作系统不需要遵守线程的优先级。

于 2013-02-19T19:46:14.223 回答