2013-02-03 28 views
0

爲我在大學期間的第1學期任務開發一個簡單的XNA遊戲。不過,我已經爲敵方精靈繪製了一圈牆。據我所知,所有敵方精靈都被添加到game1.cs類的列表中,但只有列表中的第一個被繪製。XNA循環繪製多個子畫面不工作

此方法將敵人的實例添加到列表中。更新方法中,每秒產卵數正在增加。這會使敵人每秒產生一次,直到四次產卵。

public void LoadEnemies() 
    { 
     int randX = rand.Next(0, 1000); 
     int randY = rand.Next(0, 500); 

     if (spawn >= 1) 
     { 
      spawn = 0; 

      if (enemyList.Count() < 4) 
      { 
       enemyList.Add(new NM_Enemy(Content.Load<Texture2D>("Wisp1"), new Vector2(randX, randY))); 
       enemyList.Add(new NM_Enemy(Content.Load<Texture2D>("Wisp2"), new Vector2(randX, randY))); 
       enemyList.Add(new NM_Enemy(Content.Load<Texture2D>("Wisp3"), new Vector2(randX, randY))); 
       enemyList.Add(new NM_Enemy(Content.Load<Texture2D>("Wisp4"), new Vector2(randX, randY))); 
      } 
     } 

     //Checks if enemies in the list have left the level bounds 
     for (int i = 0; i < enemyList.Count; i++) 
     { 
      if (!enemyList[i].isVisible) 
      { 
       enemyList.RemoveAt(i); 
       i--; 
      } 
     } 
    } 

Draw方法

foreach (NM_Enemy enemy in enemyList) 
        { 
         enemy.Draw(gameTime, spriteBatch); 
        } 

更新方法

foreach (NM_Enemy enemy in enemyList) 
       { 
        enemy.Update(gameTime); 
       } 
+0

我會做什麼:使用調試器。我想你正在使用Visual Studio,對吧?雙擊該行的左側以設置中斷點。我會在你的繪製方法中這樣做,這樣你就可以看到列表中的內容以及在特定時刻繪製哪一個。要開始調試,點擊F5(或頂部的調試按鈕)。 –

回答

0

的代碼片段您已經發布和程序的描述不完全匹配。你說

敵人依次產卵每一秒,直到四人已催生 但實際上發生的事情有,如果有少於四個敵人,四是催生了一次。而且,它們全都在(randX, randY)之間產生,沒有你在兩者之間呼叫rand.Next(),這意味着你有四個敵人在完全相同的位置。這也許可以解釋爲什麼你只看到一個 - 它們都在彼此之上。嘗試把一個斷點在此行

enemy.Draw(gameTime, spriteBatch); 

,並看看敵人的位置。你可能會發現他們都在同一個地方。可以肯定的是,在enemyList.Add()行中將randXrandY的值替換爲一些手動輸入的值,以確保它們的位置不同,然後查看它們的繪製位置。