2012-11-15 159 views
4

好的,我有這個遊戲我正在研究,我是新來的XNA(我使用4.0),每當敵人產生時我想要做的是不同的紋理。XNA中的隨機紋理

所以我有這些圖像「image1.png」,「image2.png」等。每當一個新敵人產生時,我都希望它使用不同的紋理,到目前爲止它只在遊戲運行時加載一個隨機圖像,所以問題一定是隨機方法不會爲每個spawn更新,而是在開始時設置的遊戲。我在網上搜索了很多,並試圖解決方案,我雖然會工作,但沒希望了......所以,我的繼承人代碼

LoadContent()我有這樣的代碼:

Random textureRandom = new Random(); 
      int skinRandom = textureRandom.Next(1, 4); 
      string lamp = string.Concat("image", skinRandom.ToString()); 
      enemyTex = Content.Load<Texture2D>(lamp) as Texture2D; 

回答

3

如果我記得沒錯Game.LoadContent()方法在初始化(Game.Initialize())時僅被調用一次以加載遊戲資源。你可以強制遊戲重新加載這些資源,但因爲你不想重裝所有的資源,我建議您加載在LoadContent()方法需要的所有圖像,這樣的:

List<Texture2D> texturePool = new List<Texture2D>(); 
Random rng = new Random(); 

protected override void LoadContent() 
{ 
    for(int i = 0; i < 4; i++) 
     texturePool.Add(Content.Load<Texture2D>("image" + i.ToString())); 
} 

然後在敵人產生之前,通過從加載池中選擇一個紋理來更改使用的紋理。

enemyTex = texturePool[rng.NextInt(texturePool.Count)]; 

也許你可以改變標題爲「在XNA隨機紋理」或類似的東西,既然你想改變每個產卵,而不是每次繪製紋理,可以在更多的情況下,可以應用這種技術。

+0

嘿,這是一個非常好的主意,但由於某些原因,它給了我一個黑屏。但我會玩弄它,這對大多數人來說肯定會有用。我會發布我的解決方案,如果我找到一個工作。 謝謝! – Renet