Пропустить добавить в массив - PullRequest
1 голос
/ 21 апреля 2011

Я знаю, что с помощью continue вы можете пропустить определенные части скриптов. Но есть ли способ сделать то же самое с массивом. Я хочу, чтобы каждый объект сохранялся в массиве, но не объект (который также имеет тот же тег), который носит этот скрипт.

var enemies : GameObject[];


function Start(){

    seeEnemies();

}

function seeEnemies():GameObject{

    enemies = GameObject.FindGameObjectsWithTag("enemy");

}

Пример: у Enemy 1 есть массив, у которого есть Enemy 2,3,4. У Enemy 2 есть массив, у которого есть Enemy 1,3,4. У Enemy 3 есть массив, у которого есть Enemy 1,2,4. У Enemy 4 есть массив, у которого есть Enemy 1,2,3.

Заранее спасибо:)

Ответы [ 2 ]

1 голос
/ 26 апреля 2011

Вероятно, пропустить 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 голосов
/ 26 апреля 2011
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"
}

}

Это правильный метод добавления игровых объектов в массив игровых объектов, мои проблемы лежат в другом месте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...