@Misuta

Можно ли поместить созданный объект в массив?

Спавню объекты на сцене с помощью скрипта:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ObjectSpawner : MonoBehaviour
{
    public GameObject[] ObjectID = new GameObject[3];
    public GameObject[] goCube = new GameObject[sizeArrayCube];
    public GameObject[] goSphere = new GameObject[sizeArraySphere];
    public GameObject[] goCylinder = new GameObject[sizeArrayCylinder];
    public Camera camera;

    public int OBJ;
    public static int sizeArrayCube = 0;
    public static int sizeArraySphere = 0;
    public static int sizeArrayCylinder = 0;

// События для кнопок
    public void SpawnCube()
    {
        OBJ = 0;
    }

    public void SpawnSphere()
    {
        OBJ = 1;
    }

    public void SpawnCylinder()
    {
        OBJ = 2;
    }

   public void ObjSpawner()
   {
     if (Input.GetMouseButtonDown(0))
        {
            Instantiate(ObjectID[OBJ], camera.ScreenToWorldPoint(Input.mousePosition) + Vector3.forward, Quaternion.identity);

            if(OBJ == 0)
            {
                sizeArrayCube++;
                goCube[sizeArrayCube] = ObjectID[OBJ];
            }
            else if(OBJ == 1)
            {
                sizeArraySphere++;
                goSphere[sizeArraySphere] = ObjectID[OBJ];
            }
            else if(OBJ == 2)
            {
                sizeArrayCylinder++;
                goCylinder[sizeArrayCylinder] = ObjectID[OBJ];
            }

        }
   }
    void Update()
    {
       ObjSpawner();
    }
}


Можно ли как-то созданные объекты в Inctantiate помещать в массивы? Например созданные кубы помещать в массив кубов, сферы в массив сфер и т.д.?
  • Вопрос задан
  • 365 просмотров
Решения вопроса 1
@Elsper
Ты создаешь массивы нулевого размера, в них просто нет места.
Массивы лучше использовать, когда ты заранее знаешь сколько у тебя объектов.

Если ты хочешь "резиновые массивы" используй List

Объявление
public List<GameObject> goCube = new List<GameObject>();


А добавление
goCube.Add(твой объект);

Это раз.
__
Чтобы получить ссылку на объект, который ты создал через метод Instantiate нужно получить его возврат
var CreatedObject = Instantiate(...);
И уже с этим CreatedObject работать (в твоем случае закидывать в List)

Это два.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы