Как создать экземпляр из экземпляра объекта Unity3D - PullRequest
0 голосов
/ 13 мая 2019

В моей сцене я создаю экземпляр Brick, в этом Brick есть сценарий, который создает экземпляр Enemy как его потомка.

Проблема в том, что скрипт экземпляра Brick не работает, поэтому враг не был создан, как это решить?

Первый сценарий:

public GameObject[] Bricks;

void SpawnBricks(int numCubes = 20, float startY = 3, float delta = 0.6f, float AngleDis = 3f)
{
    int Rand = Random.Range(0, Bricks.Length);
    for (int i = 0; i < numCubes; ++i)
    {
        var Brick = Instantiate(Bricks[Rand], new Vector3(0, startY - (float)i * delta, 0), Quaternion.identity);
        Brick.transform.parent = gameObject.transform;
    }
}

Кирпич Сценарий:

public GameObject[] Enemies;

public void Awake()
{
    SpawnTheEnemies();
}

public void SpawnTheEnemies()
{
    int Rand = Random.Range(0, Enemies.Length);
    var Buildings = Instantiate(Enemies[Rand], transform.position, Quaternion.Euler(0, Random.Range(0, 360), 0));
        Buildings.transform.parent = gameObject.transform;
}

1 Ответ

0 голосов
/ 13 мая 2019

Ваша проблема внутри функции пробуждения. Когда ваш Кирпич появляется, он не содержит никаких элементов в массиве Enemies. Вы можете назначить ссылку на врагов внутри массива перед использованием функции SpawnTheEnemies.

Одно из возможных решений.

public GameObject[] Enemies;

public void Awake()
{
Enemies = FindObjectsOfType<[YourEnemyScriptName]>(); // Insert your Enemies script name inside [].
}

void Start(){
    SpawnTheEnemies();
}

public void SpawnTheEnemies()
{
    int Rand = Random.Range(0, Enemies.Length);
    GameObject Buildings = Instantiate(Enemies[Rand], transform.position,         Quaternion.Euler(0, Random.Range(0, 360), 0));
        Buildings.transform.parent = gameObject.transform;
}

Дайте мне знать, если это поможет.

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