2011-04-21 61 views
1

我知道,繼續您可以跳過特定部分的腳本。但有沒有辦法用數組來做同樣的事情呢?我希望每個對象都存儲在一個數組中,而不是包含該腳本的對象(也有相同的標記)。跳過添加到數組

var enemies : GameObject[]; 


function Start(){ 

    seeEnemies(); 

} 

function seeEnemies():GameObject{ 

    enemies = GameObject.FindGameObjectsWithTag("enemy"); 

} 

示例:敵人1擁有敵人2,3,4陣列。敵人2擁有敵人1,3,4的陣列。敵人3有一個敵人1,2,4的陣列。敵人4擁有一個擁有敵人1,2,3的數組。

感謝提前:)

回答

1

或許跳過add比僅僅添加全部內容和之後刪除對象更加昂貴。

你也可以使用間接處理:每個對象'知道'它是數組中的索引。當遍歷數組,你跳過「自己的」指數:

var what_to_do = function(index, element) { 
    // do stuff with element 
} 
// handle all elements _before_ this 
var i = 0; 
for(; i != this.index && i != elements.length; ++i) { 
    what_to_do(i, elements[i]); 
} 
++i; // skip this one 
for(; i < elements.length; ++i) { 
    what_to_do(i, elements[i]); 
} 

的「做的東西」可以在一個匿名函數封裝中,爲了不重複自己。

- 編輯 -

嗯......你甚至可以分解出 '跳過' 功能:

function skip_ith(elements, thisindex, f) { 
    var i = 0; 
    for(; i != thisindex && i != elements.length; ++i) { 
     f(i, elements[i]); 
    } 
    ++i; 
    for(; i < elements.length; ++i) { // note: < because i may be length+1 here 
     f(i, elements[i]); 
    } 
} 

應用:

for(var i = 0; i != elements.length; ++i) { 
    skip_ith(elements, i, function(index, element) { 
     // do stuff with element 
    }); 
} 
0
public class s_foo : MonoBehaviour { 
public GameObject[] OrbitingSatellites = new GameObject[7]; 
public GameObject orbital1; // drag-dropped "small explosion" in Editor. 

void Start() { 
    OrbitingSatellites[0] = orbital1; 
    Debug.Log("os = " + OrbitingSatellites[0].name); // prints "small explosion" 
} 

}

這是添加遊戲對象的遊戲對象數組一個正確的方法,我的問題在其他地方。

+0

肯定。但我想知道是否可以跳過添加對象到數組。謝謝你的回答艱難。 – Amacoder 2011-04-26 08:41:21