Учебники

Unity — уничтожение GameObject

Уничтожение GameObjects так же важно, как и создание экземпляров. В этой главе мы узнаем, как уничтожать объекты GameObject.

К счастью, уничтожить GameObjects так же просто, как и создать их. Вам просто нужна ссылка на объект, который нужно уничтожить, и вызовите метод Destroy () с этой ссылкой в ​​качестве параметра.

Теперь давайте попробуем создать 5 шестиугольников, которые будут разрушаться при нажатии назначенной клавиши.

Давайте создадим новый скрипт под названием HexagonDestroyer и откроем его в Visual Studio. Мы начнем с создания публичной переменной KeyCode . KeyCode используется для указания клавиши на стандартной клавиатуре, и класс Input в своих методах использует ее. Делая эту переменную общедоступной, как мы делали это ранее с Rigidbody и Prefabs, мы можем сделать ее доступной через редактор. Когда переменная становится общедоступной, нам не нужно жестко кодировать значения, такие как «KeyCode.A», в код. Код можно сделать гибким, используя столько объектов, сколько мы хотим.

public class HexagonDestroyer : MonoBehaviour {
   
   public KeyCode keyToDestroy;

   // Update is called once per frame
   void Update () {
      
      if (Input.GetKeyDown(keyToDestroy)) {
         Destroy (gameObject);
      }
   }
}

Посмотрите, как мы использовали переменную с именем «gameObject» (small g, прописная буква O) в методе. Эта новая переменная gameObject (типа GameObject ) используется для ссылки на gameObject, к которому прикреплен этот скрипт. Если вы присоедините этот скрипт к нескольким объектам, они будут реагировать одинаково, когда эта переменная задействована.

Не запутайтесь между двумя, как бы то ни было.

  • GameObject с большой буквы G и O — это класс, который охватывает все объекты GameObject и предоставляет стандартные методы, такие как Instantiate, Destroy и методы для извлечения компонентов.

  • gameObject с маленьким g и заглавной буквой O — это конкретный экземпляр GameObject, используемый для ссылки на gameObject, к которому в данный момент прикреплен этот скрипт.

GameObject с большой буквы G и O — это класс, который охватывает все объекты GameObject и предоставляет стандартные методы, такие как Instantiate, Destroy и методы для извлечения компонентов.

gameObject с маленьким g и заглавной буквой O — это конкретный экземпляр GameObject, используемый для ссылки на gameObject, к которому в данный момент прикреплен этот скрипт.

Давайте теперь скомпилируем наш код и вернемся к Unity.

Теперь мы создадим новый шестиугольный спрайт и прикрепим к нему наш скрипт. Затем щелкните правой кнопкой мыши gameObject в иерархии и выберите Duplicate . Новый спрайт создается в иерархии; Вы должны использовать инструмент Переместить , чтобы переместить его. Повторите шаги, чтобы создать похожие шестиугольники.

Создание шестиугольника спрайта

Переместить инструмент Создание шестиугольника

Нажмите на каждый из шестиугольников и посмотрите на их компоненты скрипта. Теперь вы можете установить отдельные клавиши так, чтобы GameObject разрушал себя при нажатии этой клавиши. Например, давайте создадим 5 шестиугольников и настроим их на уничтожение при нажатии клавиш A, S, D, F и G.

Вы можете установить одну и ту же клавишу на несколько шестиугольников, и все они будут уничтожать себя одновременно при нажатии клавиши; это пример использования ссылки gameObject , которую вы можете использовать для ссылки на отдельные объекты с помощью сценария без необходимости их индивидуальной настройки.

Одна и та же клавиша может быть установлена ​​на нескольких шестиугольниках, и все они будут уничтожать себя одновременно при нажатии клавиши; это пример использования ссылки gameObject , которую вы можете использовать для ссылки на отдельные объекты с помощью сценария без необходимости их индивидуальной настройки.

Важно понимать, что уничтожение GameObject не означает, что объект разрушится или взорвется. Уничтожение объекта просто (и немедленно) прекратит его существование в том, что касается игры (и ее кода). Ссылки на этот объект и его ссылки теперь не работают, и попытка получить доступ или использовать любой из них обычно приводит к ошибкам и сбоям.