2013-02-19 48 views
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

回答

2

有没有办法卸载ContentManager对象中的各个元素。所以,我所做的就是制作多个ContentManager,并将其中需要的东西拆分。例如,我可以用Unload这样的方式,让其他人仍然留在记忆中。

至于你看到的小冻结,穿线本身并不能保证没有打嗝等。我会搞砸ThreadPriority属性;也许尝试将它设置得更低,看看会发生什么。但即使如此也不能保证。从文章:

操作系统不需要履行线程的优先级。

+0

我给你点,因为你回答我的线程问题,我会做另一个关于卸载的话题(因为我有更多关于它的问题,如果有人回答我,我不知道谁必须获得积分)。线程的优先级加上纹理的大小降低了工作。 Thx的帮助! – Sharpnel 2013-02-20 00:40:11

+0

[这里是关于卸载()一个Texture2D的答案](http://stackoverflow.com/a/14970682/1456533) – Sharpnel 2013-02-20 03:10:13