Интерфейс JavaScript в веб-сборках Unity
Интерфейс JavaScript в веб-сборках Unity даёт полезные функции и переменные для настройки веб-приложений. Эти функции можно вызывать из кода вашей библиотеки JavaScript (файлов .jslib).
Отображение ошибок, предупреждений или пользовательских баннеров
Используйте unityShowBanner() функцию, чтобы показать баннер с сообщением, либо переопределите её под свои задачи.
| Параметр | Описание |
|---|---|
msg |
Сообщение, которое нужно отобразить. |
type |
Тип отображаемого сообщения. Например:
|
Следующий код из стандартного шаблона 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. Можно изменить только следующие атрибуты:
powerPreferencepremultipliedAlphapreserveDrawingBuffer
Эти параметры применяются только при использовании отображения 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.