对于我的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
答案 0 :(得分:2)
无法卸载ContentManager
对象中的单个元素。所以,我所做的是制作多个ContentManager
并将我需要的东西分开。这样我就可以Unload
一个,例如,让其他人留在记忆中。
至于你所看到的小冻结,穿线本身并不能保证没有打嗝等。我会讨论Thread
的{{3}}财产;或许尝试将其降低,看看会发生什么。但即便如此也无法保证。来自文章:
操作系统不需要遵守线程的优先级。