Единство - Разрушение GameObject

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

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

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

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

public class HexagonDestroyer : MonoBehaviour {
   
   public KeyCode keyToDestroy;

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

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

Однако не запутайтесь между ними.

  • GameObject с большой буквы G и O - class который включает в себя все GameObject и предоставляет стандартные методы, такие как Instantiate, Destroy и методы для выборки компонентов.

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

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

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

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

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

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

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