Содержание
Шаблон
Для платформы WebGL плагин редактирует файлы index.html и style.css. В настройках PluginYG2 есть раздел Templates. Он предназначен для хранения опций различных шаблонов. Все опции стандартного темплейта применимы к платформе Yandex Games.
У вас есть возможность редактировать стандартный шаблон:
- Дизайн загрузочного экрана. Меняйте внешний вид полосы загрузки, добавляйте лого игры, изображение на задний фон или градиент.
- Фиксирование соотношения сторон. Например, для игры с портретной ориентацией экрана. Или, если динамическое изменение экрана вызывает проблемы, можно его статично зафиксировать.
- Оптимизация игры для мобильных устройств, путём снижения разрешения (опция Pixel Ratio).
- Отслеживание номера билда на сервере платформы, чтобы убедиться в актуальности загруженной сборки. За это отвечает опция Developer Build и также она сигнализирует о том, что загруженный билд является тестовым, и перед загрузкой финального билда необходимо выбрать настройки проекта подходящие для релиза.
Так же у вас есть возможность создать собственные настройки и реализацию для редактирования html и css. Или просто опции отображаемые в настройках PluginYG, которые можно использовать для чего угодно.
Опции стандартного шаблона
При загрузке игры можно отобразить изображения лого и заднего фона. Пример:
Для отображения logo или background изображений:
- В папке проекта WebGLTemplates/YandexGames создайте новую папку Images.
- Туда поместите изображения.
- Изображение лого — должно называться logo, а задний фон — background.
- В настройках Templates укажите формат изображений.
Остальные опции не требуют дополнительных манипуляций и имеют всплывающие подсказки.
Создание своей реализации
(Необязательно) Создайте папку со своей реализацией внутри папки PluginYourGames/Modules. Тогда PluginYG2 определит вашу папку как новый модуль.
Работа с шаблоном зачастую касается только Unity Editor. Чтобы лишний код и файлы не попали в сборку игры, помещайте файлы в созданную внутри вашего модуля папку Editor или по обстоятельствам используйте директиву препроцессора #IF UNITY_EDITOR
в C# скриптах.
Создание параметров
Чтобы создать параметры в разделе Templates в настройках плагина — создайте новый скрипт и вставьте в него следующий код:
namespace YG
{
public partial class InfoYG
{
public partial class TemplateSettings
{
// Заголовок:
[HeaderYG("My template")]
// Ваши параметры. Например:
public bool myParam;
// Можете создать свой класс шаблона для отделения параметров
}
}
}
Теперь к параметру myParam можно обращаться в коде:
YG2.infoYG.Templates.myParam
Файл для копирования
Можно создать файл из которого будет копироваться текст и вставляться в index.html или style.css. Название и формат такого файла может быть каким угодно. Но если вы создавали модуль, файл нужно поместить внутри папки с модулем в следующую директорию: Scripts/Editor/CopyCode. То есть внутри модуля создаём эти папки, и внутри папки CopyCode уже помещаем файл для копирования. Это нужно для метода FileTextCopy
, который ищет папку модуля по его названию и далее по директории с папкой CopyCode.
Чтобы удобно редактировать скрипт из файла копирования в каком-либо редакторе кода — можно указать соответствующий скрипту формат файла. Например, если в файле будет код на JS, лучше формат файла выбрать js.
Код для изменения шаблона
Создайте новый скрипт, вставьте и отредактируйте этот код:
#if YandexGamesPlatform_yg // По желанию определите платформу
namespace YG.EditorScr.BuildModify // Скрипт компилируется только в Unity Editor
{
public partial class ModifyBuild
{
// Если создали модуль, назовите метод именем вашего модуля. Иначе имя метода может быть любое.
public static void MyMethod()
{
// В этом методе редактируем index.html или style.css файлы
// Пример использования созданного параметра в настройках Templates
if (YG2.infoYG.Templates.myParam)
{
// Копирование текст из файла
// Если создавали модуль, используйте этот метод копирования. Укажите название файла копирования.
string copyCode = FileTextCopy("Scripts/Editor/MyCopyFile.js");
// Если НЕ создавали модуль, используйте этот метод. Укажите путь к файлу копирования внутри папки Assets.
string copyCode = ManualFileTextCopy("MyFolder/Scripts/Editor/MyCopyFile.js");
// Можете заменять какие то значения в скопированном тексте
copyCode = copyCode.Replace("___TEXT_REPLACE___", YG2.infoYG.Templates.myReplaceText);
// Вставляем текст в файл index.html
AddIndexCode(copyCode, CodeType.JS);
}
}
}
}
#endif // Конец определения платформы
В примере используется
CodeType.JS
— это означает, что код вставиться в index.html внутрь тега <script>
.CodeType можно указать
Head
, Body
и другие, тогда код вставиться в соответствующее метосто в файле index.html.Есть ещё CodeType-ы инициализации. Очерёдность выполнения инициализации:
Init0, Init1, Init2, Init, Start
.Вышеописанные CodeType работают для WebGL шаблона YandexGames. Место для вставки нового кода в index.html определяется с помощью комментариев внутри файла index.html:
<!-- Additional head modules -->
<!-- Additional body modules -->
// Additional script modules
// Additional start modules
// Additional init0 modules
// Additional init1 modules
// Additional init2 modules
// Additional init modules
Для YandexGames работают все CodeType. Для сторонних шаблонов есть CodeType
HeadNative
и BodyNative
. Они могут помочь вставить новый код без редактирования файла index.html. Эти CodeType ищут место для вставки не по комментариям, а по тегам html синтаксиса.
В скрипте для изменения шаблона, внутри класса ModifyBuild
вы можете воспользоваться полями indexFile
и styleFile
. Поле indexFile
— это весь текст файла index.html. styleFile
— соответственно весь текст файла style.css. Если нужно напрямую отредактировать файл, просто редактируйте данные поля. После редактирования ничего применять не нужно. Например, вы можете удалить вообще всё, что есть в файле: indexFile = "";
. И файл index.html станет пустым. Таким образом можно вставить новый код в файл style.css, например:
namespace YG.EditorScr.BuildModify
{
public partial class ModifyBuild
{
string copyCode = YG2.infoYG.Templates.myCSS;
styleFile += $"\n{copyCode}";
}
}
Примеры
Примерами являются скрипты из платформы Яндекс Игры. Они используют опции стандартного Template. Данные скрипты находятся в папке PluginYourGames/Platforms/YandexGames/Scripts/Editor. Эту папку можно даже удалить, тогда изменения шаблона не применятся.