Unity 6.3
0 онлайн 42 гостей 3 в системе
Вход

Введение в создание экземпляров префабы

Вы можете использовать префабы для инстанционирования сложных GameObjects или коллекций GameObjects по сравнению с созданием GameObjects с нуля с помощью кода, инстанционирование префабы использование кода имеет много преимуществ, потому что вы можете сделать следующее:

  • Создайте экземпляр префаб, используя одну строку кода. Создание эквивалентного GameObjects с нуля требует гораздо больше строк кода.
  • Изменить, какая префаб инстанцируется без изменения кода. Вы можете сделать простую ракету в ракету с суперзарядом, без каких-либо изменений кода.

Общие сценарии

Создание экземпляра префабы во время выполнения полезно в следующих сценариях:

  • Создание структуры из одного префаб путем его многократного воспроизведения в различных положениях, например, в сетке или круговой форме.
  • Выстрел снаряда префаб из пусковой установки. Снаряд префаб может быть сложной конфигурацией, состоящей из сетки, Rigidbody, коллайдера, источника звука, динамического света и дочернего GameObject с собственным следом Particle System.
  • Автомобиль, здание или персонаж, например робот, разбивается на много частей. В этом сценарии примерный скрипт удаляет и заменяет полный, функционирующий робот префаб разрушенным роботом префаб. Этот разрушенный префаб состоит из отдельных разбитых частей робота, каждая из которых состоит из компонентов Rigidbody и собственных систем частиц. Этот метод позволяет взорвать робота на много частей всего одной строкой кода, которая заменяет оригинальный GameObject разрушенным префаб.

Создайте экземпляр префаб

Чтобы создать экземпляр префаба во время выполнения, вашему коду нужна ссылка на него. Для этого можно объявить открытое поле типа GameObject в вашем коде, затем назначите префаб, который вы хотите использовать для этого поля в Inspector.

В следующем примере скрипта есть одна открытая переменная, myPrefab, который является ссылкой на префаб. Он создает экземпляр префаб в Start метод.

using UnityEngine;
public class InstantiationExample : MonoBehaviour 
{
    // Reference to the prefab. Drag a prefab into this field in the Inspector.
    public GameObject myPrefab;

    // This script will simply instantiate the prefab when the game starts.
    void Start()
    {
        // Instantiate at position (0, 0, 0) and zero rotation.
        Instantiate(myPrefab, new Vector3(0, 0, 0), Quaternion.identity);
    }
}

Для использования этого примера:

  1. Создайте новый скрипт MonoBehaviour в вашем Project и дайте ему имя InstantiationExample.
  2. Скопируйте код и вставьте его в новый скрипт и сохраните его.
  3. Создайте пустой GameObject с помощью меню GameObject > Создать пустой.
  4. Добавьте скрипт к новому GameObject в качестве компонента, перетащив его на пустой GameObject.
  5. Создайте любой префаби перетащите его из окна Project в поле My Префаб в компоненте скрипта.

Когда вы вступаете в режим воспроизведения, префаб инстанцируется в позиции (0, 0, 0) в сцене.

Вы можете перетащить другой префаб в поле Мой Префаб в окне Inspector, чтобы изменить экземпляр префаб Unity, без изменения скрипта.

Дополнительные ресурсы