StarCraft 2: Как создать нестандартный интерфейс (XML)

» Раздел: 4. Моделирование и текстурирование

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

Прелесть XML Layout

Самое время изучить данные разметки UI (Layout) - они хранятся в формате XML. Открываем Base.SC2Data с помощью Ladik's MPQ Editor:
На вид может показаться слишком запутанно, на самом деле здесь всё логично - есть папка UI, в ней файлы отдельных элементов - каждый файл отвечает за каждый элемент. Элементы разбиты на файлы для модульности - чтобы их можно было добавлять и удалять поотдельности.
Взглянем на файл разметки панели героев (для удобства я использую Notepad++, задав синтаксис XML):
О синтаксисе SC2Layout я рассказывать не буду, т.к. об этом подробно рассказано в статье Данные игрового интерфейса автора F3n1kz.
Слишком много данных для импорта, не так ли?
И тут я подумал, а что если можно как-то "наложить" свой файл SC2Layout на уже существующие в игре? Тоесть, можно ли переопределить уже заданные настройки своими?
В соседней статье я нашёл комментарий от Arty3ooo про файлы GameUIOverride.SC2Layout, после чего полез в Яндекс и открыл пост на battle.net.
To address these needs we have created the Custom Layout File system. Within Game UI Data there exists an array of Asset Paths that can be used to load .SC2Layout files that override and extend the default UI layout files. This list of custom layout files can be modified in the Data Editor under the field name of “Custom Layout Files”. The custom layout files themselves can be added using the Import Editor.

Импорт собственного SC2Layout

Чтобы ввести в игру наш нестандартный файл, открываем Data Editor, жмём значок плюс и выбираем "Advanced -> Game UI Data".
Создастся новая вкладка с настройками интерфейса игры.
Далее слева надо выбрать Default SC2 UI Settings, а справа поле UI: Custom Layout Files.
Здесь указываются нестандартные файлы UI разметки.
Давайте создадим пустой файл с названием "GameUIOverride.SC2Layout" и импортируем его в карту. Это нужно, чтобы задать параметр в редакторе данных и закрыть ненужные окна.
Просто создаёте на рабочем столе текстовый документ, назовите его GameUIOverride.SC2Layout, откройте Import (F9) и импортируйте его в корневую директорию. Сохраните карту.
После этого надо открыть окно Data Editor и в поле "UI: Custom Layout Files", после нехитрых переходов по диалогам, выбрать наш импортированный файл.
Сохраняем карту и закрываем Data Editor.

Приступим к разметке

Чтобы проверить работоспособность, я решил немного поиграться с миникартой, т.к. она первая попадается под руку и работает, даже если не выделено никаких юнитов.
Следующий код переместит её вверх относительно панели управления игрока.
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<Desc>
    <Frame type="MinimapPanel" name="GameUI/UIContainer/ConsoleUIContainer/MinimapPanel" file="GameUI">
        <BatchImages val="true"/>
        <Anchor side="Left" relative="$parent" pos="Min" offset="0"/>
        <Anchor side="Top" relative="$parent" pos="Min" offset="0"/>
        <Width val="391"/>
        <Height val="327"/>
    </Frame>
</Desc>
Стоит остановиться на двух важных атрибутах:
  • Атрибут name должен быть задан полностью, относительно GameUI, тоесть, все родительские фреймы указываются по порядку, через слеш. Это просто узнать, открыв (в моём случае) GameUI.SC2Layout и посмотрев, в какие Frame вложена MinimapPanel;
  • Атрибут file должен указывать на тот файл, в котором находятся данные для переопределения;
  • Кроме того, атрибутаtemplate в переопределённом файле быть не должно.
Просто импортируем наш файл с кодом (GameUIOverride.SC2Layout) заного, по тому же пути и пересохраняем карту.
Результат на лицо! Точнее, на интерфейс:

Обновление

В связи с обновлением, эта статья уже мало кому пригодится =)

Просмотров: 4 602

inoto #1 - 6 лет назад 0
есть же такая же статья xgm.ru/p/sc2/xmlui
или у тебя будет больше?
ScorpioT1000 #2 - 6 лет назад 0
inoto, если ты не видишь разницы, то стена там =)
inoto #3 - 6 лет назад 0
ScorpioT1000, лол, как я понял отличие в том, что ты представляешь оверрайд метод?
И приучайся уже не нападать, а отвечать на вопросы нормально.
ScorpioT1000 #4 - 6 лет назад 0
Приучайся уже сначала читать, потом писать
inoto #5 - 6 лет назад 0
лол, я так и не услышал ответа на
или у тебя будет больше?
так что делай выводы
и укажи как можно ближе к началу что это оверрайд метод
ScorpioT1000 #6 - 6 лет назад 0
лол, я так и не услышал ответа на
если бы ты прочитал, ты бы увидел:
На сегодня пока всё, но в скором времени я постараюсь приложить много интересных примеров.
inoto #7 - 6 лет назад 0
ScorpioT1000, хотелось бы про вставку картинки в один из след разов =)
ScorpioT1000 #8 - 6 лет назад (отредактировано ) 0
просто близзы уроды и опять всё ведёт себя не так как надо...
H #9 - 6 лет назад (отредактировано ) 0
ScorpioT1000 #10 - 6 лет назад (отредактировано ) 0
Уже неактуально. Хотя я опубликую на всякий случай, но не на главную.
Hellcore,
Далее слева надо выбрать Default SC2 UI Settings, а справа поле UI: Custom Layout Files.