Unity 6.3
0 онлайн 85 гостей 3 в системе
Вход
Разработка платформы Шаг 303 из 387

Интерфейс JavaScript в веб-сборках Unity

Интерфейс JavaScript в веб-сборках Unity даёт полезные функции и переменные для настройки веб-приложений. Эти функции можно вызывать из кода вашей библиотеки JavaScript (файлов .jslib).

Отображение ошибок, предупреждений или пользовательских баннеров

Используйте unityShowBanner() функцию, чтобы показать баннер с сообщением, либо переопределите её под свои задачи.

Параметр Описание
msg Сообщение, которое нужно отобразить.
type Тип отображаемого сообщения. Например:
  • Используйте type == error для отображения постоянного сообщения об ошибке в верхней части экрана.
  • Используйте type == warning, чтобы показать желтый цвет над сообщением.

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

function unityShowBanner(msg, type) {
        var warningBanner = document.querySelector("#unity-warning");
        function updateBannerVisibility() {
          warningBanner.style.display = warningBanner.children.length ? 'block' : 'none';
        }
        var div = document.createElement('div');
        div.innerHTML = msg;
        warningBanner.appendChild(div);
        if (type == 'error') div.style = 'background: red; padding: 10px;';
        else {
          if (type == 'warning') div.style = 'background: yellow; padding: 10px;';
          setTimeout(function() {
            warningBanner.removeChild(div);
            updateBannerVisibility();
          }, 5000);
        }
        updateBannerVisibility();
      }

Вы можете вызвать функцию в вашем файле .jslib. Следующий баннер постоянно отображает Сообщение, которое вы хотите показать как сообщение об ошибке:

unityShowBanner('The message you want to show', 'error');

Изменение атрибутов контекста WebGL

Используйте webglContextAttributes для настройки атрибутов создания, с помощью которых инициализируется контекст WebGL. Можно изменить только следующие атрибуты:

  • powerPreference
  • premultipliedAlpha
  • preserveDrawingBuffer

Эти параметры применяются только при использовании отображения WebGL API. Если вы используете отображение WebGPU API, поле webglContextAttributes игнорируется.

Чтобы изменить эти атрибуты, измените объект конфигурации в пользовательском шаблоне WebGL. Например:

script.onload = () => {
  config['webglContextAttributes'] = {

    powerPreference: 'high-performance',
    premultipliedAlpha: false,
    preserveDrawingBuffer: true, 
  };
  createUnityInstance(canvas, config, (progress) => {

Атрибут powerPreference имеет следующие параметры:

Вариант Описание
по умолчанию Позвольте агенту пользователя решить, какая конфигурация GPU является наиболее подходящей. Это значение по умолчанию.
высокая производительность Приоритизирует производительность отображения по отношению к энергопотреблению.
низкоэффективные Приоритет энергосбережения по отношению к производительности рендеринга.

Более подробную информацию о каждом атрибуте см. в документации Mozilla по HTMLCanvasElement: getContext().

Информацию о графиках Unity WebGL см. в WebGL графиках.

Направляйте свой проект на потоковые ресурсы

Если вам нужно разместить потоковые ресурсы на другом CDN, вы можете изменить свойство streamingAssetsUrl в объекте конфигурации createUnityInstance(), чтобы оно указывало на полный URL, где находятся потоковые ресурсы.

var buildUrl = "Build";
var config = {
  dataUrl: buildUrl + "/{{{ DATA_FILENAME }}}",
  frameworkUrl: buildUrl + "/{{{ FRAMEWORK_FILENAME }}}",
  codeUrl: buildUrl + "/{{{ CODE_FILENAME }}}",
#if MEMORY_FILENAME
  memoryUrl: buildUrl + "/{{{ MEMORY_FILENAME }}}",
#endif
#if SYMBOLS_FILENAME
  symbolsUrl: buildUrl + "/{{{ SYMBOLS_FILENAME }}}",
#endif
   streamingAssetsUrl: "https://mygameserver.com/StreamingAssets/",  // Add this line to override the default streaming assets location
  companyName: "{{{ COMPANY_NAME }}}",
  productName: "{{{ PRODUCT_NAME }}}",
  productVersion: "{{{ PRODUCT_VERSION }}}",
};

Кэширование веб-страниц

Используйте cacheControl() функция для контроля за тем, какие URLs кэшированы в UnityCacheФункция принимает URL в качестве параметра и возвращает либо must-revalidate, immutable, или no-store. Эту функцию можно также переопределить под свои задачи.

Пример кода и дополнительные сведения см. в разделе Поведение кэша в Web.

Дополнительные ресурсы