как вести учет того, сколько осталось от экземпляров-клонов, т.е. врагов - PullRequest
0 голосов
/ 01 октября 2018

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

public GameObject playerhealth;
public GameObject enemy;
public float spawnTime= 3f;
public Transform spawnPoint;

public float dis;
public static GameObject obj;

void Start(){
    Invoke ("Spawn", spawnTime);
}

void Spawn(){

    if (dis < 100) {

        obj =   Instantiate (enemy, spawnPoint.position, spawnPoint.rotation);

        obj.name = "Abc";

    }
}       

Ответы [ 3 ]

0 голосов
/ 01 октября 2018

Вы можете отслеживать своих врагов, добавляя / удаляя их из List по мере их появления и уничтожая их.

List<GameObject> enemies = new List<GameObject>();

obj = Instantiate (enemy, spawnPoint.position, spawnPoint.rotation);
enemies.Add(obj);

Когда вам нужно убрать его, просто позвоните enemies.Remove() и передайтессылка на удаляемый враг GameObject.

Вы также можете использовать GameObject.FindGameObjectsWithTag, чтобы найти всех врагов в вашей сцене после того, как они все будут иметь одинаковый тег.

GameObject[] enemies;

enemies = GameObject.FindGameObjectsWithTag("Enemy");
0 голосов
/ 01 октября 2018

Я бы посоветовал вам использовать подключенный компонент, чтобы вы могли использовать его для всех сборных конструкций и адаптировать его в каждом проекте, чтобы получить свой счетчик, просто используйте EnemyCounter.enemiesAlive.Вы должны прикрепить этот скрипт к вражескому префабу / с, и он будет работать, если вам нужен только счетчик.если вы также хотите отслеживать префабы вашего противника, используйте Список <>, как предлагается в других ответах.

public class EnemyCounter: MonoBehaviour
  {
    public static int enemiesAlive=0;

    void OnEnable()
      {
        enemiesAlive++;
      }

    void OnDisable()
      {
        enemiesAlive--;
      }

}
0 голосов
/ 01 октября 2018
    List <GameObject> _list; 
public GameObject obj;

 void Spawn()
{

if (dis < 100) {

    obj =   Instantiate (enemy, spawnPoint.position, spawnPoint.rotation);

    obj.name = "Abc";
    _list.Add(obj);

}

   void Update()

{
 //TO get count
  _list.Count;
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...