Бывают случаи, когда при определённых условиях нам необходимо создать случайный объект на игровой сцене. Например, при нажатии на кнопку, или при уничтожении ящика, из него должно выпасть случайный предмет. Давайте же это сейчас реализуем.
Для начала в окне Hierarchy создадим пустой объект(Create Empty), и назовём его SpawnArea. Этот объект будет являться нашим спавнером, и именно в нём будет спавниться случайный объект. Так же необходимо создать несколько префабов для спавна. У меня всего три префаба: арбуз, груша и яблоко.
Спавнер вместе с прифабами готов. Осталось написать скрипт. Создаём C# скрипт с названием Spawner, и заранее присвойте его к объекту SpawnArea. Впишите в него следующий код:
using UnityEngine;
public class Spawner : MonoBehaviour
{
public GameObject[] obj;
private void Start()
{
Spawn();
}
public void Spawn()
{
int random = Random.Range(0, obj.Length - 1);
Instantiate(obj[random], transform);
}
}
Предлагаю вкратце разобрать этот код:
- В строке #5 мы создали массив объектов для спавна. Там будут хранится ссылки на префабы моего арбуза, яблока и груши.
- Так же мы создали метод Spawn() в котором будет генерироваться случайное число от нуля, до длины нашего массива - 1. В нашем случае получается от 0 до 2.
- Ну а запускать метод Spawn() мы будем в методе Start(), который сработает сразу же при старте игры.
И остался последний штрих. Необходимо в окне Inspector для нашего скрипта Spawner в поле Obj перетащить все наши префабы.
Можете запустить свой проект, и сразу же при старте игры на игровой сцене появится случайный объект.
Хочу обратить ваше внимание, что запуск Spawn() в методе Start() был всего лишь демонстративным. Его мы можете запускать когда угодно, например, при клике на определённую кнопку, или сразу же после уничтожения того самого ящика, или врага.
Бывают случаи, когда нам необходимо создавать объекты не единожды, а многократно, например, каждые 5 секунд, и не в одной точке пространства, а в случайных, то советую посмотреть мой предыдущий гайд, который называется Как создать спавн объектов в Unity.
А на этом всё. Если есть вопросы - пишите в комментариях, и не забывайте о лайках :)