GUI интерфейс

Всем доброго времени суток, я снова разбираюсь в создании компьютерных игр и сегодня буду рассматривать такую полезную вещь как GUI интерфейс.

 

GUI интерфейс, это двухмерные объекты на экране. Всякие таблички, кнопочки, и все 2d опции. Они все располагаются на переднем плане.

 

Начнём, открываем Unity3d и создаем новый скрипт, я назвал его gui с маленькой буквы, так как в Unity уже есть класс GUI и если я попробую создавать его с большой буквы, то он подумает что я хочу его изменить. Короче не надо оно мне.

 

Для начала в скрипте, создаем новую функцию void OnGUI(), именно в ней мы и будем писать свой код. Если мы напишем свой код в иной функции, тогда ничего не произойдет. Функция OnGUI выполняет те же самые действия что и функция Update, но для двухмерных объектов. То есть для различных табличек, инвентаря, и тд. Теперь в фигурных скобках данной функции мы для того чтобы создать что-нибудь пишем GUI затем точка, и функцию к которой мы желаем обратиться, давайте обратимся к Label, после точки пишем Lable. Затем в скобочках мы указываем Rect position, для этого мы пишем new Rect, это новый прямоугольник. Теперь для того чтобы создать прямоугольник, нам необходимо указать в скобках отступ слева, отступ сверху, ширину, высоту, все это измеряется в пикселях. Давайте к примеру зададим 10,10,100,20, закрываем скобку, ставим запятую. Следующее что мы должны указать, это текст, мы можем вставить картинку, а можем текст. Ну пусть будет текст «my game«. Закрываем скобку, ставим точку с запятой, должна получится вот такая строка в функции OnGUI:

 

GUI.Label (new Rect (10, 10, 100, 20), «my game»);

 

Сохраняем крепим на камеру, надеюсь вы удалили все что делали до этого, чтобы не путаться, или хотя бы просто убрали чтобы не мешало. Должен получится скрипт подобного вида:

Код вывода слова на экран
Dante

 

Запускаем игру и видим что на экране появились слова my game. Замечательно, теперь давайте обратно откроем скрипт, и сделаем чтобы наше слово выводилось в текстовом поле. Убираем строку GUI.Label (new Rect (10, 10, 100, 20), «my game»); и вместо нее пишем:

 

GUI.TextField (new Rect (10, 10, 100, 20), «my game»);

 

Обратно сохраняем и запускаем игру, и видим, теперь слова «my game» в текстовом поле. Что выглядит несколько лучше, в текстовом поле мы уже можем выделить наши слова, но не можем их менять, так как поле обновляется каждый кадр.

 

Теперь давайте сделаем кнопку, при нажатии на которую будет происходить какое-либо действие. Удаляем или закомментируем строку GUI.TextField (new Rect (10, 10, 100, 20), «my game»); и пишем :

 

if (GUI.Button (new Rect (10, 10, 100, 20), «my game»)) {

Debug.Log(«Start»);

}

 

Должно получится вот подобным образом:

Код кнопки в интерфейсе
Dante

 

Теперь обратно сохраняем скрипт, и запускаем игру, как видно из скрипта, он создаст кнопку, при нажатии на которую, в консоль Unity выведется слово «Start«. Смотрим у нас действительно появилась кнопка со словами «my game« без кавычек естественно и при нажатии на нее у нас в консоли появилось слово Start. Все правильно.

 

Теперь давайте сделаем текстовое поле, чтобы мы могли в него что-либо вписать, для начала объявляем в классе новую публичную строковую переменную text и приравниваем ей пустое значение text=»» вся строка выглядит вот так:

 

private string text=»»;

 

Теперь в функции OnGUI, мы объявили переменную text и приравняли её к функции которая каждый кадр выводит текстовое поле, только в качестве строковой переменной изначально используется пустое значение, и если мы введем какое-либо значение, то вместо пустого значения, в ней уже будет то значение что мы ввели. В коде это выглядит вот так

 

text=GUI.TextField (new Rect (10, 10, 100, 20), text);

 

Давайте взглянем на весь код:

Код поля ввода на экране
Dante

 

Хочется верить что мое объяснение понятное, если что можете спрашивать подумаю как перефразировать или точнее объяснить.

 

Давайте рассмотрим еще такую вещь как стиль. Для начала уберем переменную text в классе, чтобы не путалась. Я её просто закомментировал. Теперь добавляем стиль. Для этого в классе пишем

 

public GUIStyle style1;

 

А в функции OnGUI давайте обратно обратимся не к текстовому полю, а возьмем кнопку что я рассматривал немного выше. И добавим после слова «my game» слово style1. У нас должен получится вот такой скрипт:

Кнопка с добавленным стилем
Dante

 

Сохраняем переходим в Unity 3d запускаем игру, и смотрим в окне Inspector в настройках нашего скрипта появились настройки Стиля (Style 1), здесь мы можем добавить текстуры к кнопке, изменить её цвет, и еще много всего иного. Я немного поигрался с настройками стиля, но детальней буду рассматривать в иной раз.

 

Вот пожалуй и все что я хотел написать. Всем спасибо.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *