Единство - Разрушение 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 не означает, что объект разобьется или взорвется. Уничтожение объекта просто (и немедленно) прекратит его существование в отношении игры (и ее кода). Ссылки на этот объект и его ссылки теперь не работают, и попытка получить доступ или использовать любой из них обычно приводит к ошибкам и сбоям.