Показать и скрыть
Часть раздела Основы скриптинга в Unity путешествия по Unity на Coddy. Урок 34 из 67.
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(), но объект остаётся в сцене — по-прежнему отображается и сталкивается с другими объектами, а остальные его компоненты продолжают работать.
Задание
СреднеСкрипт рычага хранит мост в своём поле bridge. Сделай так, чтобы клавиша Space управляла мостом: первое нажатие скрывает его, следующее возвращает, и так далее — одно переключение на каждое нажатие.
Скрывай весь мост вместе с коллайдером, чтобы никто не мог стоять на мосту, которого нет.
Нажми Play, несколько раз нажми Space, затем Check.
Попробуйте сами
using UnityEngine;
public class BridgeSwitch : MonoBehaviour
{
public GameObject bridge;
void Update()
{
// Space скрывает мост, а повторное нажатие снова его показывает
}
}
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы скриптинга в Unity
1Ваш первый скрипт
Привет, UnityРазместите кубДвигайте каждый кадрПоворачивайте каждую секундуУправляйте клавишамиПовторение: управляйте кубом2Инспектор
Поля инспектораSerializeFieldЧисла с плавающей точкой и MathfАтрибуты инспектораПовторение: лифт5Преобразования и иерархия
Родители и детиМасштабПосмотри на объектыДвигайся к точкеПовторение: Луна на орбите6Игровые объекты и компоненты
Ссылки в InspectorПолучение компонентаОтсутствующие компонентыДобавление компонентаRequireComponentПоказать и скрытьПовторение: выключатель света