Создание объекта на основе 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 метод.

Пример исполнения

После создания запустите игру и нажмите кнопку. Каждый щелчок должен генерировать объект.

Конечно, поскольку он генерируется на основе префаба, если значение префаба изменяется, сгенерированный объект будет сгенерирован в соответствии с этим значением.