2013-10-13 118 views
0

嗨,我是新來的團結,我試圖爲敵人創建一個AI腳本。在這個班級中,我有一個方法點,敵人會隨機生成一個隨機數,最初我有四個路點,但這是非常線性的。所以我增加了更多,使它看起來好像敵人漫無目的地走過一個例子,可以看到這個http://www.youtube.com/watch?v=QMSQaS1o1Kw。然後,我添加了大約20多個方法點來完成隨機化,但我不想實例化它們中的每一個,所以我想知道是否有可能將它們安裝在for循環中?動態創建變量名稱並實例化它們(Unity)

這是我做這件事代碼看起來到目前爲止:其他

private var player : GameObject; 
private var way0 : GameObject; 
private var way1 : GameObject; 
private var way2 : GameObject; 
private var way3 : GameObject; 

function Start() 
{ 
    player = GameObject.Find("Player"); 
    way0 = GameObject.Find("way0"); 
    way1 = GameObject.Find("way1"); 
    way2 = GameObject.Find("way2"); 
    way3 = GameObject.Find("way3"); 
} 

一切都在更新功能,通過if語句

回答

1

是的,你可以使用一個數組來存儲航點處理與你需要。就像這樣:

private var waypoints : Array; 

function Start() { 
    player = GameObject.Find("Player"); 
    waypoints = new Array(); 
    for (var i = 0; i < WaypointCount; ++i) { 
    waypoints.Push(GameObject.Find("way" + i)); //Push the waypoint in the array. 
    } 
    DoSomethingWith(waypoints[0]); //This is "way0". 
} 

哪裏WaypointCount是要推的航點的數量。更確切地說,滿足您使用的命名模式的航點的數量。在你發佈的例子中,WaypointCount是4.

+0

這正是我一直在尋找的感謝! –

+0

這只是一個關於如何使用這種方法的問題,當我稍後使用它時,對象會給出一個空引用。示例如圖所示 'var distance = Vector3.Distance(player.transform.position,** waypoints [variable] **。transform.position);' 變量只是一個推入函數的數字。但它沒有設置變量,因爲它得到一個空引用。 @AlexM。 –

+0

編輯答案,對不起! – 2013-10-13 14:35:13