2011-04-21 62 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