Работаю над своей игрушкой и начал со своей удобной (для меня как минимум) OnGUI обёртки. Исходники в копилку сайта, может кому пригодится.
То, что реализовано на данный, момент работает так.
- Создаются поля.
- К полям лепятся, например, ещё поля. И к тем и другим полям добавляются кнопки, спреи, ячейки и т.п.
- Все объекты расположены на своём слое:
- Для полей 1го lvl глобальная система слоёв;
- Для всех объектов любого поля - локальная система слоёв (внутри слоя родительского поля).
- Иерархическая система объектов и их слоёв позволяет быстро найти взаимодействующий с курсором элемент:
- Сначала проверяются поля 1го lvl и если какое из них касается курсора, система останавливается на нем и проверяет его объекты;
- Таким образом имея на экране пару тысяч кнопок, либо ячеек инвентаря затраты на нахождение нужного поля минимальны;
- Полю можно включить отображение, но выключить взаимодействие с курсором или наоборот (смотря что Вам нужно).
Реализовано:
- Создание простого поля (SimpleArea) и прикрепления к нему таких объектов как:
- Spray - спрей;
- Button - прямоугольная кнопка;
- ButtonRound - круглая кнопка;
- OtherObject - объект с индивидуальной отрисовкой в указанном вами методе;
- SimpleArea - простое поле (2 lvl);
- CellAreaBackground/CellAreaTile - поле с ячейками;
- HelpWindow - прямоугольный спрей, при наводе на который всплывает окошко с вашим текстом (подсказка).
- Создание поля с ячейками (CellArea) и система управления предметами этих ячеек, условно "Инвентаря":
- имеется возможность перетаскивать предметы, делать стаки, брать пол стака (ПКМ), выкладывать один предмет из ската (ЛКМ+ПКМ);
- каждое поле с ячейками имеет переменную itemPack, но т.к. это просто обёртка для гуи, следует установить свой класс для itemPack и подогнать AreaItemPackController.cs под свою систему инвентаря.
- всплывающее окошко информации о предмете;
- Отрисовка полей:
- автоматическая с указанными при создании объекта текстурами;
- отключение отрисовки любого объекта поля или поля целиком;
- Объединение полей в группы:
- Запоминание всех enable переменных всех полей и объектов в группе в данный момент и последующим использование. (например, отключить одной командой половину полей группы);
- изменение положения всех полей группы на вектор корректировки;
- Скользящее перемещение:
- перемещение одиночных полей и их объектов;
- перемещение группы полей;
Описание методов давать не буду, в исходниках все XML комментарии на понятном русском (возможно с орфографическими ошибками ).
Синтаксис:
Используется csharp
// Обязательное пространство имён:
using ASGUIEngine;
using ASGUIEngine;
Mini Demo.
HTML код для вашего блога :
ChangeLog
Скрытый текст: