icon

Шаблон

Для платформы WebGL плагин редактирует файлы index.html и style.css. В настройках PluginYG2 есть раздел Templates. Он предназначен для хранения опций различных шаблонов. Все опции стандартного темплейта применимы к платформе Yandex Games.
icon
У вас есть возможность редактировать стандартный шаблон:

  • Дизайн загрузочного экрана. Меняйте внешний вид полосы загрузки, добавляйте лого игры, изображение на задний фон или градиент.
  • Фиксирование соотношения сторон. Например, для игры с портретной ориентацией экрана. Или, если динамическое изменение экрана вызывает проблемы, можно его статично зафиксировать.
  • Оптимизация игры для мобильных устройств, путём снижения разрешения (опция Pixel Ratio).
  • Отслеживание номера билда на сервере платформы, чтобы убедиться в актуальности загруженной сборки. За это отвечает опция Developer Build и также она сигнализирует о том, что загруженный билд является тестовым, и перед загрузкой финального билда необходимо выбрать настройки проекта подходящие для релиза.

Так же у вас есть возможность создать собственные настройки и реализацию для редактирования html и css. Или просто опции отображаемые в настройках PluginYG, которые можно использовать для чего угодно.

Опции стандартного шаблона

При загрузке игры можно отобразить изображения лого и заднего фона. Пример:
icon
Для отображения logo или background изображений:

  1. В папке проекта WebGLTemplates/YandexGames создайте новую папку Images.
  2. Туда поместите изображения.
  3. Изображение лого — должно называться logo, а задний фон — background.
  4. В настройках 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. Эту папку можно даже удалить, тогда изменения шаблона не применятся.