For the complete documentation index, see llms.txt. This page is also available as Markdown.

加载界面自定义

说明如何自定义 Unity WebGL 加载期间显示的画面。

加载画面文件

加载画面存在于两个地方。

路径
作用

WebGLTemplates/AITTemplate/loading.html

SDK默认模板(原始)

Assets/AppsInToss/loading.html

按项目定制的加载画面

AITPackageInitializer[InitializeOnLoad]在编辑器启动时执行, Assets/AppsInToss/loading.html如果没有此文件,则复制 SDK 模板。修改此文件即可应用自定义加载画面。

SDK模板搜索顺序:

  1. Packages/im.toss.apps-in-toss-unity-sdk/WebGLTemplates/AITTemplate/loading.html

  2. Packages/com.appsintoss.miniapp/WebGLTemplates/AITTemplate/loading.html

  3. 基于 Assembly 路径

构建时插入顺序

构建的 CopyWebGLToPublic() 阶段 index.html中的 %AIT_LOADING_SCREEN% 占位符会被替换为完整的加载画面内容。

1. 存在 Assets/AppsInToss/loading.html?
   → 是:使用项目自定义加载画面
   → 否:回退到 SDK 默认模板

2. 如果 SDK 模板也不存在?
   → Debug.LogWarning("找不到加载画面文件。将使用空白加载画面")
   → 替换为空字符串

也就是说加载画面会 在构建时内联到 index.html 中。由于不会作为独立文件加载,因而相对路径引用会以最终 index.html 为基准进行解析。

恢复为默认模板

AIT > Reset Loading Screen执行后会弹出确认对话框,然后将 SDK 模板 Assets/AppsInToss/loading.html重新复制过来。自定义内容会消失,如有需要请先备份。

文件结构

应用信息

加载画面中显示的应用信息按以下顺序确定。

  1. 原生应用环境 (toss 应用内)— SDK 会 getAppsInTossGlobals通过它获取应用信息并覆盖。

  2. 回退 (网页浏览器等)— 使用在 AIT Configuration 中设置的值。

设置
说明

应用名称(displayName)

显示在加载画面中的应用名称

应用图标(iconUrl)

显示在加载画面中的应用图标 URL

默认颜色(primaryColor)

进度条颜色

参考:在实际 toss 应用环境中,原生值优先,因此上述设置主要会在开发·测试环境中看到。

可自定义范围

loading.html可以自由修改其 HTML、CSS、JavaScript。 AITLoading 可以通过 API 接收进度值。接收到的值可以按所需方式自由呈现。

  • UI 设计 — 进度条、饼图、圆形加载等

  • 动画 — CSS 动画、JavaScript 动画、GIF、Lottie

  • 品牌元素 — 吉祥物角色、Logo 动画

  • 交互元素 — 小游戏、提示滑块

使用外部资源

StreamingAssets (推荐)— Assets/StreamingAssets放在这里会自动包含到构建中。

数据 URI — 几 KB 以下的小图片会以内联 Base64 形式嵌入。

CDN — 通过外部 URL 加载。会产生网络依赖,且加载画面本身可能出现得更晚。

AITLoading API

window.AITLoadingindex.html中定义,以下六项就是全部公开接口。 _

开头的成员属于内部实现,请勿依赖。
说明

appInfo

{ iconUrl, displayName, primaryColor }

onReady(callback)

应用信息准备完成

onProgress(callback)

进度更新

onComplete(callback)

加载完成

onError(callback)

发生错误

hide()

隐藏加载画面

appInfo

初始值是构建时替换的 Configuration 值,当原生应用信息到达后会更新为其值。

onReady

在应用信息准备好后调用。用于 UI 初始化。

重要: onReady 回调 不要假定只会调用一次。 初始化时会调用一次,之后如果原生应用信息到达,更新后的 appInfo值会再次调用。请编写幂等的回调,使其多次执行也安全。如果在已经完成初始化后才注册,则会立即调用一次。

onProgress

0.01.0 之间的进度值。

onComplete

加载结束时调用。如果在已完成后才注册,则会立即调用。

onError

{ message } 形式的对象。

参考:WebGL 上下文创建失败(GLctx, WebGL 上下文, 无法创建 系列)由 SDK 通过专用路径处理,因此不会进入此回调。除非你要直接处理设备无法打开 WebGL 的情况,否则可以不用在意。

hide

#ait-loading-wrapper 元素通过 display: none隐藏。

示例

下面是我手写的示例。SDK 实际提供的默认模板(深色主题)请在 Assets/AppsInToss/loading.html中查看。

进度条

百分比显示与错误处理

故障排查

图标未显示

  1. 请检查 AIT Configuration 中是否设置了图标 URL

  2. 可能会因 CORS 策略而阻止外部图片——建议使用同域图片

  3. 在原生应用环境中,应用图标会自动加载,因此可能看不到回退值

自定义加载画面未应用

  1. 文件是否在 Assets/AppsInToss/loading.html中——其他路径不会被识别

  2. 加载画面会在构建时内联,因此只修改文件而不重新构建不会生效

进度未更新

  1. AITLoading.onProgress()是否已注册

  2. 回调应在页面加载早期注册——如果在加载已经开始后注册,将无法接收到之前的进度

appInfo 为空

AITLoading.appInfo不要直接读取, onReady 而应在回调中使用。因为在脚本执行时,应用信息初始化可能尚未完成。

相关文档

这有帮助吗?