2012-01-09 222 views
1

G'day全部,創建一個遊戲對象數組

如果我在屏幕上有一些對象稱爲敵人,我怎麼能把它們放入一個數組? 我最初的想法是在創建它時創建它。我把一個聲明,我Game.cs文件的頂部:

public enemy[] enemiesArray = new enemy[5]; 

後來,當我創造我試圖將它們添加到陣列的敵人:

for (int i = 0; i < 2; ++i) // This will create 2 sprites 
     { 
      Vector2 position = new Vector2((i+1) * 300, (i+1) * 200); 
      Vector2 direction = new Vector2(10, 10); 
      float velocity = 10; 
      int ID = i; 

      Components.Add(new skull(this, position, direction, velocity, ID)); 
      skullsArray[i] = skull; // This line is wrong 
     } 

我也試圖給它在使用這樣的代碼的update()方法:

foreach (GameComponent component1 in Components) 
     { 
      int index = component1.ID; 
      if (component1.ToString() == "enemy") 
      { 
       enemiesArray[index] = component1 
      } 
     } 

但是落下來,因爲COMPONENT1沒有一個ID。我不得不假設,當程序通過每個GameComponent枚舉時,它只能訪問該組件的有限範圍的數據。

最後,我希望能夠提及我的敵人爲敵[1],敵人[2]等

感謝, 安德魯。

回答

2

我不明白爲什麼你不能使用一個列表,它很像一個數組,但它有一個可變長度。然後,你可以這樣做:

List<Enemy> EnemyList; 

//You have to initalize it somewhere in Initalize or LoadContent (or the constructor) 

您可以添加敵人,就像你會添加組件(因爲組件是一個List<GameComponent>

EnemyList.Add(enemy); 

然後,您可以訪問的敵人:

EnemyList[index].DoSomething(); 

編輯:再次看着你的代碼,我注意到頭骨不存在。你的意思是

new skull(this, position, direction, velocity, ID); 

因爲否則你正嘗試將類添加到陣列而不是類:)

+0

謝謝你。這正是我想要的。助教。 – 2012-01-13 12:29:19

2

假設你已經把線public enemy[] enemiesArray = new enemy[5]; 你的遊戲類中的實例,那麼你的enemiesArray只是你的遊戲場類別不是遊戲組件,您應該能夠將其引用爲

myGameClass.enemiesArray[1] 

假設您的遊戲類在範圍內。

也作爲@匿名說,列表比在數組運行時更容易調整大小,因此請考慮使用'List(5)enemiesArray'而不是

這不是一個可擴展的處理方式,但我建議你研究如何創建和註冊GameComponents。也可考慮將其通用的,所以你可以有一個地方來引用,而不必enemiesArray,bulletsArray,someOtherArray,所有的遊戲道具等

一個簡單的方法是有一個抽象類,像

public abstract class GameThing 
{ 
    public Vector2 Position {get; set;} 
    //some other props... 
} 

,然後以此作爲你的遊戲項目基地這樣的敵人被定義爲

public class Enemy : GameThing 
{ 
    //some props 
} 

和替代 public enemy[] enemiesArray = new enemy[5]; 你會使用 public GameThing[] gameItemsArray= new GameThing[5]; 添加項目像這樣

gameItemsArray[1] = new Enemy(); 
+0

這是一個很好的下一步,我打算嘗試繼承過程。助教。 – 2012-01-13 12:30:17

+0

你應該儘早做,而不是晚些時候,可以是一個豬改造這個東西,祝你好運的遊戲,雖然:) – Stuart 2012-01-13 17:48:39