Создание объекта на основе Prefab из сценария
Среда верификации
- Виндоус
-
- Windows 11
- Редактор Unity
-
- 2021.3.3f1
- Входной системный пакет
-
- 1.3.0
Предпосылки для этого совета
Следующие настройки были сделаны заранее в качестве предпосылки для описания этого совета.
Создание объекта на основе Prefab в скрипте
В предыдущих Советах мы размещали объекты из Prefab в вид, но в данном случае размещаем заранее определенное количество объектов и запускаем игру. Однако в некоторых играх может потребоваться динамическое добавление объектов во время работы игры. В этом случае вам придется добавить его из префаба в скрипте.
Создание образца
После развертывания нового проекта разместите кнопку. Давайте попробуем генерировать объект из префаба каждый раз, когда мы нажимаем кнопку.
Создайте префаб. Это та же процедура, что и предыдущие советы.
Создайте сценарий для добавления объекта при следующем нажатии кнопки. ButtonEvent
Оставьте имя как .
using UnityEngine;
public class ButtonEvent : MonoBehaviour
{
[SerializeField] private GameObject SpritePrefab;
public void OnClick()
{
// Instantiate にプレハブを渡すとそれをもとに新しいオブジェクトを生成する
var obj = Instantiate(SpritePrefab);
// 配置位置はランダムに
obj.transform.localPosition = new Vector3(Random.value * 6 - 3, Random.value * 6 - 3);
}
}
GameObject
Определите поле, чтобы вы могли заранее указать, на основе какого префаба будет создано.
Instantiate
Можно передать метод для создания GameObject
нового объекта на основе этого объекта.
Положение созданного объекта становится исходным местом, и независимо от того, сколько объектов создано, объекты перекрываются и это трудно понять, поэтому положение устанавливается случайным образом после создания. Значение корректировки положения является подходящим, потому что это образец.
Присоедините сценарий к EventSystem.
GameObject
установлен, так что бросьте сборку здесь.
При нажатии кнопки вызывается OnClick
метод.
Пример исполнения
После создания запустите игру и нажмите кнопку. Каждый щелчок должен генерировать объект.
Конечно, поскольку он генерируется на основе префаба, если значение префаба изменяется, сгенерированный объект будет сгенерирован в соответствии с этим значением.