Показ и скрытие
Часть раздела Основы скриптинга в Unity путешествия по Unity на Coddy. Урок 48 из 85.
SetActive(false) отключает весь GameObject: он не отображается, больше не сталкивается с другими объектами, скрипты на нём перестают получать вызовы Update(), а вместе с ним отключаются и его дочерние объекты. SetActive(true) возвращает всё как было, а activeSelf показывает, включён он или нет. Этот скрипт на кнопке скрывает дверь, указанную в его поле door, при щелчке мышью:
public GameObject door;
void Update()
{
if (Input.GetMouseButtonDown(0))
{
door.SetActive(false);
}
}Скрипт, который скрывает собственный объект с помощью gameObject.SetActive(false), не может включить его обратно, потому что его Update() больше не выполняется. Поэтому переключатель находится на другом объекте, у которого есть ссылка на объект, который он показывает и скрывает.
enabled отключает один компонент, не затрагивая остальные компоненты объекта. GetComponent<Renderer>().enabled = false делает объект невидимым, но его коллайдер по-прежнему блокирует другие объекты: получается невидимая стена. Скрипт с enabled = false больше не получает вызовы Update(), но объект остаётся в сцене, по-прежнему отображается и сталкивается с другими объектами, а его остальные компоненты продолжают работать.
Задание
СреднеСделай так, чтобы клавиша Space скрывала мост и возвращала его обратно.
- В
Update()при нажатииInput.GetKeyDown(KeyCode.Space)вызовиbridge.SetActive(...), чтобы переключать состояние всего моста, включая коллайдер. - Передай противоположное значение его состояния:
bridge.SetActive(!bridge.activeSelf);.
Нажми «Играть» и несколько раз нажми Space: мост исчезает и появляется снова. Затем нажми «Проверить».
Попробуйте сами
using UnityEngine;
public class BridgeSwitch : MonoBehaviour
{
public GameObject bridge;
void Update()
{
// Space скрывает мост, а следующее нажатие снова показывает его
}
}
Все уроки раздела Основы скриптинга в Unity
1Основы C# в Unity
Привет, UnityПеременныеДля дробных чисел нужна fТекст в консолиПеременные, которые запоминаютЕсли и иначеСравнение чиселПовторение: сборщик монет7Циклы и методы
Повторение с forЦиклы внутри цикловНапишите методМетоды, которые возвращают значениеМассивыПовторение: лестница10Поиск объектов
Поиск по имениТегиПоиск по типуСсылки лучше поискаNull в UnityПовторение: ближайшая монета13Проект: уворачиваемся от блоков
БегунБлоки с неба2Заставь двигаться
Размести кубДвигай каждый кадрПоворачивай каждую секундуУправляй клавишамиПовторение: веди куб5Векторы
Сложение векторовНаправленияЛокальное и мировое пространствоСкорость по диагоналиРасстояние между объектамиVector3 — это структураПовторение: пилот дрона8Игровые объекты и компоненты
Ссылки в InspectorПолучение компонентаОтсутствующие компонентыДобавление компонентаRequireComponentПоказ и скрытиеПовторение: выключатель светаПотренируйтесь самостоятельно: Песочница Unity