Введение в IMGUI (Немедленный режим GUI)
IMGUI (Немедленный режим GUI) является полностью независимой функцией от основной системы Unity, основанной на GameObject, UI. IMGUI — это система GUI, управляемая кодом, и в основном предназначена как инструмент для программистов. Она управляется вызовами функции OnGUI в любом скрипте, который реализует ее. Например, этот код:
void OnGUI() {
if (GUILayout.Button("Press Me")){
Debug.Log("Hello!");
}
}
Это приведет к появлению кнопки, отображаемой следующим образом:
IMGUI часто используется для:
- Создание в игре отладки дисплеев и инструментов.
- Создание настраиваемых инспекторов для компонентов скриптов.
- Создание новых окон редактора и инструментов для расширения самого Unity.
IMGUI обычно не предназначен для использования в обычных игровых пользовательских интерфейсах, которые игроки могут использовать и взаимодействовать с ними. Для этого вы должны использовать основную систему Unity, основанную на GameObject UI, которая предлагает основанный на GameObject подход к редактированию и позиционированию UI элементов, и имеет гораздо лучшие инструменты для работы с визуальным дизайном и макетом UI.
«Immediate Mode» («непосредственный режим») описывает то, как IMGUI создаётся и отрисовывается. Чтобы создать элементы IMGUI, нужно написать код в специальной функции OnGUI. Код, отображающий интерфейс, выполняется каждый кадр и рисуется на экране. Никаких постоянных игровых объектов, кроме того, к которому прикреплён ваш код OnGUI, и никаких других объектов иерархии, связанных с отрисовываемыми визуальными элементами, не существует.
IMGUI позволяет создавать широкий спектр функциональных GUIs с помощью кода. Вместо создания GameObjects, вручную размещая их, а затем написать скрипт, который управляет их функциональностью, вы можете сделать все сразу всего несколькими строками кода. Код производит GUI контроллеры, которые рисуются и управляются с помощью одного вызова функции.
В этом разделе объясняется, как использовать IMGUI как в вашей игре, так и в расширениях редактора Unity.