GameObject создаётся вне родителя в дереве иерархии

Скрипт создания игрового объекта, который вист на объекте Player:

void Update()
{
    if (Input.GetKeyDown(KeyCode.Mouse0) || Input.GetKeyDown(KeyCode.Space))
    {
        Instantiate(bulletPrefab, bulletSpawn.transform.localPosition, Quaternion.identity);
    }
}

Дерево иерархии во время работы игры

Так как объект Bullet создаётся вне объекта Canvas его не видно даже если переключить окно в режим 3D

введите сюда описание изображения

В инспекторе все выделенные на первом скриншоте объекты имеют координаты (0;0;0).

Уже пытался использовать функцию SetParent, но она ничего не изменила.

Версия Unity: 2019.3.2f1


Ответы (2 шт):

Автор решения: Mr. Linsux

Не без помощи комментаторов, но вопрос решён.

Вот как выглядит метод Update:

void Update()
{
    if (Input.GetKeyDown(KeyCode.Mouse0) || Input.GetKeyDown(KeyCode.Space))
    {
        GameObject bullet = Instantiate(bulletPrefab, bulletSpawn.transform.position, Quaternion.identity) as GameObject;
        bullet.transform.SetParent(parent.transform, false);
    }
}

На всякий случай уточню, что объявлять отдельную переменную при создании объекта необязательно и установить родителя можно одной строкой:

    void Update()
{
    if (Input.GetKeyDown(KeyCode.Mouse0) || Input.GetKeyDown(KeyCode.Space))
    {
        (Instantiate(bulletPrefab, bulletSpawn.transform.position, Quaternion.identity) as GameObject).transform.SetParent(parent.transform, false);
    }
}
→ Ссылка
Автор решения: RiotBr3aker

Какие-то непонятные танцы с бубном и установкой родителя вручную, когда есть специальная перегрузка:

введите сюда описание изображения

void Update()
{
    if (Input.GetKeyDown(KeyCode.Mouse0) || Input.GetKeyDown(KeyCode.Space))
    {
        Instantiate(bulletPrefab, bulletSpawn.transform.position, Quaternion.identity, parent.transform);
    }
}
→ Ссылка