Создание C# скрипта
Создайте новый C# скрипт. Разделение функционала на разные скрипты упрощает поддержку и чтение кода. Назовите скрипт CreateObject.
Добавление объекта в Unity и работа с префабами
Откройте созданный скрипт в Visual Studio. Удалите ненужные коллекции и методы. Для создания объекта понадобится переменная типа GameObject. Создайте публичное поле (для видимости в Unity) obj типа GameObject.
Добавьте скрипт на любой объект на сцене (иначе он не будет выполняться). В Unity необходимо указать ссылку не на существующий на сцене объект, а на префаб. Префаб – это объект, перенесенный в папку Prefabs. Любые изменения префаба применяются ко всем объектам, созданным на его основе.
Создайте папку Prefabs. Переместите, например, куб в эту папку. Создайте новый материал (например, «Куб») красного цвета и примените его к префабу. Теперь, создавая объекты на основе этого префаба, они будут иметь нужный цвет и материал.
В скрипте в поле obj укажите префаб из папки Prefabs.
Создание объекта в скрипте
Создайте метод Start. В этом методе будем создавать объекты с помощью метода Instantiate. Он принимает три параметра:
- Объект: Префаб, который нужно создать.
- Координаты: Vector3, например, Vector3.zero для координат (0, 0, 0). Используйте new Vector3(0, 5, 0) для смещения объекта на 5 единиц вверх по оси Y.
- Вращение: Quaternion. Например, Quaternion.Euler(12f, -15f, 40f) для указания вращения.
public GameObject obj;
void Start()
{
Instantiate(obj, new Vector3(0, 5, 0), Quaternion.Euler(12f, -15f, 40f));
}
Для доступа к созданному объекту, создайте переменную newObj типа GameObject:
GameObject newObj = Instantiate(obj, new Vector3(0, 5, 0), Quaternion.Euler(12f, -15f, 40f)) as GameObject;
Теперь можно обратиться к компонентам созданного объекта, например, к transform:
newObj.transform.position = new Vector3(5, 5, 0);
Создание объектов в цикле со случайными параметрами
Создайте массив obj для хранения различных префабов. Создайте цикл, который будет пять раз создавать объекты. В цикле выбирайте случайный элемент из массива и устанавливайте ему случайные координаты. Функция RandomNumber возвращает случайное число в диапазоне от 0 до 10.
public GameObject[] obj;
void Start()
{
for (int i = 0; i < 5; i++)
{
Instantiate(obj[Random.Range(0, obj.Length)], new Vector3(RandomNumber(), RandomNumber(), RandomNumber()), Quaternion.identity);
}
}
int RandomNumber()
{
return Random.Range(0, 11);
}
Метод Instantiate позволяет создавать объекты в Unity из C# скриптов. Он принимает три параметра: объект (префаб), координаты и вращение. Для создания множества объектов с различными параметрами можно использовать циклы и функции для генерации случайных чисел.