播放时加载纹理

时间:2013-02-19 19:02:46

标签: c# xna

对于我的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

1 个答案:

答案 0 :(得分:2)

无法卸载ContentManager对象中的单个元素。所以,我所做的是制作多个ContentManager并将我需要的东西分开。这样我就可以Unload一个,例如,让其他人留在记忆中。

至于你所看到的小冻结,穿线本身并不能保证没有打嗝等。我会讨论Thread的{​​{3}}财产;或许尝试将其降低,看看会发生什么。但即便如此也无法保证。来自文章:

  

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