Создание меню со стороны сервера

NozmaD

Администратор
Команда форума
Администратор
Сообщения
166
Баллы
208
Menu2.png

Для игроков, которые не любят работать в клиентской части при создании игрового меню, создан этот скрипт для создания меню непосредственно со стороны сервера всего в несколько строк, используя язык программирования C#.

Один пример, что можно создавать с использованием этого скрипта, вы видите в шапке темы, а один ниже:

Menu1.png


Созданы следующие классы для создания меню:
  1. Banner: Этот класс содержит все используемые баннеры для фона меню
  2. CheckboxItem: Эквивалента UICheckboxItem на стороне клиента (ClientAPI)
  3. ColoredItem: Эквивалента UIColoredItem на стороне клиента (ClientAPI)
  4. ListItem: Эквивалента UIListItem на стороне клиента (ClientAPI)
  5. Menu: Это основной класс для создания меню, которое создаст UIMenu на стороне клиента (ClientAPI)
  6. MenuItem: Эквивалента UIMenuItem на стороне клиента (ClientAPI)
  7. MenuManager: Используется для "отправки" меню на сторону клиента и управления входными данными
Для создания меню необходимо создать, по крайней мере, метод конструктора и метод обратного вызова.
Конструктор используется для создания меню. В процессе создания необходимо указать метод обратного вызова, который будет вызываться при выборе пункта меню. Метод обратного вызова должен управлять действиями в зависимости от выбранного элемента. Создать Вы можете как один обратный вызов всех меню, так и индивидуальный для каждого, это зависит от вас.

Пример:
C#:
private void TestSubMenuBuilder(Client client)
{
    Menu menu = new Menu("TestSubMenu", "Sub Menu", "Another subtitle", 0, 0, Menu.MenuAnchor.Middle, true);
    menu.SetBannerSprite(Banner.Guns);
    menu.Add(new MenuItem("Line 1"));
    menu.Add(new MenuItem("Line 2"));
    menu.Add(new MenuItem("Line 3"));
    ColoredItem coloredItem = new ColoredItem("Back", "", "Back", "#FF00FF", "#00FF00");
    coloredItem.Selectable = true;
    menu.Add(coloredItem);
    MenuManager.CreateMenu(client, menu, TestSubMenuManager);
}
private void TestSubMenuManager(Client client, Menu menu, MenuItem menuItem, int itemIndex, dynamic data)
{
    if (menu.Id == "TestSubMenu" && menuItem.Id == "Back")
        TestMenuBuilder(client);
}

Все данные передаются в формате JSON в обоих направлениях, поэтому входные данные должны быть обработаны динамическим атрибутом, как ниже:

C#:
int listIndex = data["List"]["Index"]; // «List» - это идентификатор используемого объекта MenuItem, вы можете назвать их так, как вы хотите, и использовать определенные имена
string listValue = data["List"]["Value"];
bool checkboxValue = data["Checkbox"];
string inputValue = data["Input"];

В архиве содержится пример проекта (VS2015 / 2017), который создает меню, отображает несколько пунктов меню (простые элементы, флажок, список и цветной элемент), позволяет вводить данные и переходить в подменю с сохранением данных меню.

Архив весит 12МБ, потому что в нём полное решение VS со всеми необходимыми NuGet пакетами
 
Автор
Le Shred

Вложения

  • MenuManager.zip
    11.6 МБ · Просмотры: 4
Автор темы Название темы Категория Ответов Дата темы
NozmaD Создаем меню (MenuClass) Скрипты 0
NozmaD Начало работы с меню Мануалы и уроки 0
Название темы


Верх