GUI — graphical user interface, что переводится, как «графический интерфейс пользователя». Для чего он нужен в игре?
Для взаимодействия игрока с игрой и ее отдельными элементами. Графические интерфейсы бывают простыми (например меню редактирования триггера), сложными (например инвентарь или виртуальный арсенал) и даже трехмерными (когда используется 3d модель, как в компасе и часах).
Для чего нужны GUI именно Вам?
Для кастомизации своих миссий, модов, проектов.
К примеру, Вы хотите сделать миссию, где нужно взломать ноутбук. Вот тут и придется написать интерфейс для ноутбука, в котором и будет происходить процесс взлома.
Теперь перейдем к составляющим графического интерфейса.
Обычно я делю GUI на три составляющих:
— файл с описанием классов элементов интерфейса;
— файлы, которые рисуют интерфейс;
— скрипты, в которых обрабатываются данные, которые пользователь передал с помощью интерфейса, и совершаются определенные действия.
Начнем по порядку.
1. define.hpp
Это файл, в котором описываются классы эллементов интерфейса, такие как: текст, кнопки, список, картинки и т.п.
В этом файле определяется какого цвета будет элемент, размер и цвет шрифта, фона, рамки… Ну я думаю с этим понятно.
Пример:
class RscButton { access = 0; type = CT_BUTTON; style = ST_LEFT; x = 0; y = 0; w = 0.3; h = 0.1; text = ""; font = "TahomaB"; sizeEx = 0.04; colorText[] = {0,0,0,1}; colorDisabled[] = {0.3,0.3,0.3,1}; colorBackground[] = {0.6,0.6,0.6,1}; colorBackgroundDisabled[] = {0.6,0.6,0.6,1}; colorBackgroundActive[] = {1,0.5,0,1}; offsetX = 0.004; offsetY = 0.004; offsetPressedX = 0.002; offsetPressedY = 0.002; colorFocused[] = {0,0,0,1}; colorShadow[] = {0,0,0,1}; shadow = 0; colorBorder[] = {0,0,0,1}; borderSize = 0.008; soundEnter[] = {"",0.1,1}; soundPush[] = {"",0.1,1}; soundClick[] = {"",0.1,1}; soundEscape[] = {"",0.1,1}; };
2. dialog.hpp
В этом файле описывается сам интерфейс.
Его размеры, расположение отдельных элементов (кнопки, картинки, текст), их содержимое, а так же действия, которые будут происходить от взаимодействия с ними (например нажатие кнопки).
Пример:
class dialog { idd = 5000; class controls { class BUTTON:rscButton { idc = 1; x = 0.5; y = 0.5; w = 0.1; h = 0.05; action = "execVM 'script.sqf'"; }; }; };
3. Script.sqf
В скрипте мы будем производить необходимые нам действия.
Например, при нажатии на кнопку интерфейса, запускается скрипт, который меняет вооружение игрока. Кроме этого, в скрипте мы можем «на лету» изменять сам интерфейс. Изменить цвет текста, расположение кнопки и т.п.
Читать продолжение: GUI. Часть 2. Пишем простой интерфейс.
Что-то не поняли? Заходите в наш Discord, там вам всегда помогут.