我知道继续你可以跳过脚本的某些部分。但有没有办法用数组做同样的事情。我希望每个对象都存储在一个数组中,而不是那个穿着这个脚本的对象(也有相同的标签)。
var enemies : GameObject[];
function Start(){
seeEnemies();
}
function seeEnemies():GameObject{
enemies = GameObject.FindGameObjectsWithTag("enemy");
}
示例:Enemy 1有一个拥有Enemy 2,3,4的阵列。 Enemy 2有一个阵列,有敌人1,3,4。 Enemy 3有一个阵列,有敌人1,2,4。 Enemy 4有一个阵列,有敌人1,2,3。
提前致谢:)
答案 0 :(得分: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] );
}
'do stuff'可以封装在一个匿名函数中,以免自己重复。
- 编辑 -
嗯......你甚至可以将“跳过”功能分解出来:
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
} );
}
答案 1 :(得分: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"
}
}
这是将游戏对象添加到游戏对象阵列的正确方法,我的问题在于其他地方。