Как инициировать событие при создании экземпляра определенного объекта из массива?

В начале моей игры случайным образом создается игровой объект из массива. Я хочу сделать серию операторов if, утверждающих, что если создается экземпляр определенного числа из массива, то он будет выполнять функцию, специфичную для созданного объекта, но мне это не удалось. Например, если создается экземпляр объекта 2 из массива, то он делает что-то вроде того, что экран становится красным, а если создается экземпляр объекта 3, то экран становится фиолетовым.

До сих пор я пробовал много вещей, но это было самым последним:

for (int i = 0; i < length; i++)
    {
        if (playerPrefab[0])
        {
            Debug.Log("weiner");
        }
    }

Вот некоторые из моих других кодов

public GameObject[] playerPrefab;
public GameObject[] enemyPrefab;

public Transform playerSpawn;
public Transform enemySpawn;

Unit playerUnit;
Unit enemyUnit;

public BattleHUD playerHUD;
public BattleHUD enemyHUD;

public BattleState state;

void Start()
{
    state = BattleState.START;
    StartCoroutine(SetupBattle());
}


IEnumerator SetupBattle()
{
    randomInt = Random.Range(0, playerPrefab.Length);
    GameObject playerGO = Instantiate(playerPrefab[randomInt], playerSpawn);
    playerUnit = playerGO.GetComponent<Unit>();

    randomInt = Random.Range(0, enemyPrefab.Length);
    GameObject enemyGO = Instantiate(enemyPrefab[randomInt], enemySpawn);
    enemyUnit = enemyGO.GetComponent<Unit>();

person Dylan Zukerberg    schedule 01.04.2020    source источник
comment
Это пахнет помощью по дому. :) В соответствии с рекомендациями по темам полезно описать, что вы уже пробовали, и почему это не работает или ваши трудности с этим подходом. Например, в вашей функции SetupBattle у вас есть доступ к randomInt. Можете ли вы создать функцию, которая выполняет ваши проверки If, а затем вызываете ее внутри SetupBattle, как только у вас есть randomInt?   -  person Sean Skelly    schedule 02.04.2020
comment
Дело в том, что, видимо, я не могу получить работающую проверку if. Как бы вы предложили мне создать проверку if? Если вам все еще любопытно, я поместил свою последнюю попытку в пост. Кроме того, это не для тебя, ИМАО   -  person Dylan Zukerberg    schedule 02.04.2020
comment
Как насчет выполнения проверки if сразу после присвоения значения randomInt внутри метода SetupBattle(), до или после вызова Instantiate? if (randomInt == 2) { /* Do work here */ }   -  person Sean Skelly    schedule 02.04.2020
comment
это гениально, сработало, спасибо!   -  person Dylan Zukerberg    schedule 02.04.2020


Ответы (1)


Шон Скелли ответил на вопрос

«Как насчет проверки if сразу после присвоения значения randomInt внутри метода SetupBattle(), до или после вызова Instantiate? if (randomInt == 2) { /* Работайте здесь */ }»

person Dylan Zukerberg    schedule 01.04.2020