2013-02-19 47 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