无需重构
保持原引擎工具链与技术栈,无需重写游戏核心逻辑,支持大部分第三方插件。
diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 00000000..e69de29b diff --git a/404.html b/404.html new file mode 100644 index 00000000..4e7cb4f0 --- /dev/null +++ b/404.html @@ -0,0 +1,21 @@ + + +
+ + +404
But if you don't change your direction, and if you keep looking, you may end up where you are heading.
标准版下载地址:微信小游戏Unity转换插件
团结版下载地址:微信小游戏团结引擎转换插件
包含重要bugfix、特性支持
包含重要bugfix、特性支持
包含重要bugfix、特性支持
包含重要bugfix、特性支持
包含重要bugfix、特性支持
【重要更新】包含重要bugfix、特性支持
【普通更新】
【普通更新】
【普通更新】
【重要更新】包含重要bugfix、特性支持
minigame/unity-namespace.js
中函数 isReportableHttpError
忽略非重要网络异常上报,如心跳、数据分析接口WXAssetBundle
且请求了不同版本的资源时报错'readFileSync:fail no such file or directory'更新内容:
Assets/WX-WASM-SDK
(如有二次修改请备份)。若新版本出现异常,可使用旧版本备份包 SDKv1 Unity插件 版本包进行回退 OnKeyboardInputCallbackResult -> OnKeyboardInputListenerResult
getGameClubDataOption -> GetGameClubDataOption
+ openPageOption -> OpenPageOption
disableHighPerformanceFallback
修改WX.ReportScene
接口,用于游戏自定义场景上报,可参见github文档,或mp文档 https://developers.weixin.qq.com/minigame/dev/guide/performance/perf-action-start-reportScene.htmlRmdir
及RmdirSync
接口GetCachePath
接口PluginCachePath
压缩纹理回退使用png时也支持缓存逻辑
使用node命令时同时查找默认安装路径 修复Win7下使用Unity2021生成symbols时导致的卡死问题
SetDataCDN
,以及js接口GameGlobal.manager.setDataCDN
SetPreloadList
,以及js接口GameGlobal.manager.setPreloadList
RemoveFile
参数转字符串dataFileSubPrefix
时iOS首包资源下载bug更新独立域插件版本1.0.60
更新独立域插件版本1.0.58
RemoveFile
CleanFileCache
,CleanAllFileCache
CleanFileCache
streamingUrlSubPath
支持传自定义拼接到streamingcdn后面的路径增加bundle相关导出配置
WXWebAssembly
未定义,未弹框提示更新客户端游戏内存大小
字段: 从Unity 2019开始已不支持设置PlayerSettings.WebGL.memorySize
独立域插件更新为(1.0.11)
.untiy3d
拓展名文件视为bundle文件,可做缓存。转换导出插件勾选"Profiling-funcs", 请勿使用Development(该模式将极大降低性能)。 发布上线版本请务必关闭该选项!
在Android微信小游戏打开调试进行录制
停止性能数据录制
与步骤1相似,在相同的菜单中选择Stop CPU Profile
传输录制文件到PC
录制结束后,Android会生成一份xxx.cpuprofile,该文件格式可以使用chrome进行解析。 因此我们需要将录制后的文件传输到PC使用chrome进行分析。 文件路径通常为:Android/data/com.tencent.mm/MicroMsg/appbrand/trace
利用PC(Windows/Mac)的Edge/Chrome加载数据
以Edge为例:浏览器菜单打开"更多工具-开发人员工具-右上角...-更多工具-JavaScript探测器",然后点击加载前面导出的cpuprofile文件即可。
视图有多种方式,可选择"图表"(Chart)分析每一帧游戏函数耗时情况
使用JavaScriptProfile进行数据分析
注意:
const gl = GameGlobal.canvas.getContext('webgl')
+ gl.clear(gl.COLOR_BUFFER_BIT);
+ setTimeout(() => {
+ gameManager.startGame();
+ GameGlobal.manager = gameManager;
+ }, 10000);
.cpuprofiler
,或是通过以下方式将它在浏览器显示出来: 可通过转换工具配套提供的资源优化工具,将游戏内纹理资源针对webgl导出做优化。
菜单栏-微信小游戏-资源优化工具
其中,自动减半根据当前纹理尺寸,将maxsize设置为纹理宽高最大值的一半。
微信小游戏对后端服务无任何限制,可以根据自身需求选择,比如:
登录态参考登录态管理 通过 websocket 或者 HTTP 通信,理论上 App 和微信小游戏大部分后端服务可以直接复用
以实现一个服务端校验内容安全的云函数为例对云开发流程进行简单介绍,更多文档和示例请参考云函数文档
注意:此示例仅供参考云函数使用流程,正常情况下对内容进行安全校验的逻辑应该是内容校验通过+内容存储到后端在同一个云函数中实现,避免直接调用存储接口绕开校验的情况出现。
新建一个云函数的空工程 云函数可以和前端的游戏逻辑独立创建为不同的项目。当然也可以在同一个项目中(project.config.json 中指定 cloudfunctionRoot,避免云函数代码被业务逻辑代码一同打包发布到外网),以下示例为独立项目的模式
该小游戏首次使用云开发需要先开通云开发
云开发有一个基本的免费套餐,请求量达到一定上限后需要配额调整或申请代金券后更换配额套餐
实现一个云函数 以“内容安全检查”云函数(msgSecCheck)为例,复制示例中 login 文件夹,重命名为 msgSecCheck,修改 index.js 中的内容实现服务端逻辑:
/*
+ * // msgSecCheck
+ * message Request {
+ * string content;
+ * }
+ * message Response {
+ * int code; // 返回码, 0:内容正常; 1:参数非法; 87014: 内容含有违法违规内容
+ * }
+ */
+
+const cloud = require('wx-server-sdk')
+
+cloud.init({
+ env: cloud.DYNAMIC_CURRENT_ENV
+})
+
+function Response(code) {
+ return {
+ code,
+ }
+}
+
+exports.main = async (event, context) => {
+ if (!event.content) return Response(1);
+ try {
+ // https://developers.weixin.qq.com/minigame/dev/api-backend/open-api/sec-check/security.msgSecCheck.html
+ await cloud.openapi.security.msgSecCheck({
+ content: event.content,
+ });
+ return Response(0);
+ } catch (e) {
+ return Response(e.errorCode);
+ }
+}
修改 config.json,增加对 openapi.security.msgSecCheck 的声明,如没有用到 openapi 则无需修改 config.json:
"permissions": {
+ "openapi": [
+ "security.msgSecCheck"
+ ]
+ }
openapi 更多使用细节参考云调用文档
wx.cloud.init({env:"product"})
+
+wx.cloud.callFunction({
+ name: 'msgSecCheck',
+ data: {
+ content: "hello cf"
+ },
+ success:function(res) {
+ console.log("call success", res);
+ const isContentOk = (res.result && res.result && res.result.code === 0);
+ console.log("IsContentOk", isContentOk)
+ },
+ fail: function(res){
+ console.log("call fail", res);
+ }
+})
早期 Unity(2018-2020) 不支持对 ASTC 纹理格式进行导出,因此在移动端中无法充分利用 GPU 完成硬件的解码渲染。为弥补这一缺陷,微信 Unity SDK 提供压缩纹理按需加载的能力工具。使用该工具将对项目获得如下增益:
压缩纹理工具将纹理资源从 Bundle 中分离单独托管,因此 Bundle 体积将变小,这有助于加快游戏运行进度。对于被分离的纹理资源将在游戏实际的使用过程中按渲染需要动态加载。
使用压缩后的纹理本身将节约更多的内存空间,这对于内存吃紧的游戏至关重要。微信压缩纹理工具将对同一个纹理资源生成多种不同格式的压缩纹理(如ASTC、DXT……),在游戏运行中如需按需加载,根据实际运行设备 GPU 下载可被识别的压缩纹理。对于资源体积而言将更小,由 GPU 实现硬件解码,效率更高。
Unity引擎自带压缩纹理:
更统一的工作流;ASTC能支持最近3-4年大部分机型;但PC端不支持ASTC依然需要解压。
微信小游戏压缩纹理工具:
支持不同平台的自适应(ETC2,ASTC,DXT);同时纹理从ab中剥离出来,使得ab占用内存更小。
建议:
如引擎版本高于2021, 可使用引擎自身的ASTC压缩格式(移动端覆盖率较广,PC微信、微信开发者工具将软解为RGAB32)。对于重度游戏(如MMO、SLG等)内存压力大时,可结合使用WXAssetBundle减少ab体积造成的文件内存
低版本引擎(2018-2020)应使用 微信UnitySDK压缩纹理工具 进行处理。
压缩纹理工具对于 Unity 2019、2020、2021 的部分版本有支持,目前已知一些版本无法使用(如 2021.3.x 、 2020.3.36 等不可用)。为了确保压缩纹理工具的顺利进行,建议开发者根据 年份大版本 的基础上选用我们已经验证可行的 Unity 版本:2019.4.28f1c1 、2020.3.10f1c1、2021.2.18f1c1,使用新的 Unity 版本后需要重新构建 Bundle 。
Unity引擎自带压缩纹理 | 微信小游戏压缩纹理工具 | |
---|---|---|
版本支持 | Unity 2019支持部分;Unity 2020支持部分格式;Unity 2021支持 | 2019、2020、2021均有版本支持 |
格式支持 | Unity 2019支持DXT等;Unity 2020支持DXT、ETC,但不支持ASTC;Unity 2021支持多数 | DXT、ASTC、ETC均支持 |
按设备加载 | 不支持 | 支持 |
请务必确保使用压缩纹理工具时,导出的游戏工程来自 同版本 的 微信 Unity SDK
主要的执行过程如下图所示:
下载并安装 Node.JS 并检查环境变量是否生效。
新版本已不再依赖 Node.js。
项目中若使用 bundle 文件,需先构建 AB包。请勿开启 crc 对 bundle 进行校验。
纹理资源的 WebGL Settings
的 Format
配置项支持列表:
Format | 支持情况 | |
---|---|---|
R 8 / R 16 bit | 支持 | |
RGBA Crunched DXT5|BC3 | 不支持 | |
RGB Crunched DXT1|BC1 | 不支持 | |
RGBA Compressed DXT5|BC3 | 支持 | |
RGB Compressed DXT1|BC1 | 支持 | |
Alpha 8 | 支持 | |
RGBA Compressed ETC2 8 bits | 不支持 | |
RGB Compressed ETC2 4 bits | 支持 | |
RGB Compressed ETC 4 bits | 请勿使用 | 资源占位符专用,全游戏工程请勿使用! |
ASTC 请参考配置说明 | - | - |
RGB(A) Compressed BC7 | 支持 | |
RGBA 32 bit | 支持 |
ASTC 是多数移动设备中游戏运行的主要支持的纹理格式,因此也是微信小游戏环境下主要使用到的压缩的纹理资源。
在 2021版本 Unity 纹理资源的 WebGL Settings
的 Format
配置项中,工具支持识别 RGB(A) Compressed ASTC 8x8、6x6、5x5、4x4 block 这三种压缩格式,其余格式请勿设置,并且不支持 ASTC HDR 系列的格式。
若以上述4种格式配置后,最终生成的多份格式资源中,ASTC 资源将保持对应的 Block Size。值得注意的是,默认推荐使用 Block Size 8x8 格式,4x4 最清晰内存占用也会升高,开发者应根据实际调试后运行效果按需配置。
点击微信小游戏 - 转换小游戏 - 导出WEBGL并转化为小游戏
导出游戏工程。请注意!任何时候当 微信Unity SDK 更新后,均需要重新执行该步骤(导出游戏工程)再使用同版本的压缩纹理工具完成后续操作,不可混版本使用。
点击 微信小游戏 - 包体瘦身--压缩纹理
,可点击 打开bundle配置面板
查看识别情况,并按需忽略部分不希望执行压缩纹理的bundle资源,点击 处理资源
开始处理。
调试模式
将只生成 ASTC 格式(开发者工具中使用PNG资源,移动设备使用 ASTC格式资源),调试结束后可再次选用全量模式
(默认采用增量逻辑不会额外增加处理时间)
该步骤根据项目实际情况不同,处理时间也会有差异,执行完成后请留意控制台提示信息,不可存在多个警告消息。
执行完上述步骤后,将 webgl-min
目录中的资源上传至 CDN 服务器中,如 Assets 目录、StreamingAssets目录、xxx.webgl.data.unityweb.bin.txt 等文件。
微信纹理压缩目前已支持WebGL2.0模式下的Gamma与Linear颜色空间渲染,但仅支持2019、2020、2021 3个年限中部分版本,其中2019必须使用Unity与微信合作的Instant Game版本,其余年限跟随微信纹理压缩支持版本进行选择。该能力仍在兼容一些特殊的应用场景,开发者使用后需要进行详细的真机测试。
对于微信压缩纹理工具处理后部分资源渲染效果较差、甚至无法处理的情况,开发者使用忽略处理能力完成对资源的保留在AB包内,从 微信压缩纹理 - 打开配置面板
进入配置页,默认情况下配置页面中将扫描当前项目所有可被处理的AB包资源,对于AB包的忽略直接在右侧 忽略
勾选项选中后保存即可。 有时忽略整个AB包并不是一种好的策略,仅仅是AB包内部分纹理资源渲染不佳,此时若已经执行过微信压缩纹理能力时,扫描的资源将包含AB包内的单个纹理资源信息,可通过右上角搜索栏检索快速查找对应的纹理资源进行忽略设置,保存后只需再次执行即可。若此前从未执行过微信压缩纹理,需要点击 解包纹理
按钮,等待完全解包后可进行纹理的配置操作,该过程等同执行微信压缩纹理的「阶段一」,大型工程可能花费一些时间。
位于 微信小游戏转换工具面板 - 首资源包优化
能力隶属于微信压缩纹理工具的扩展范畴。该功能能够将首资源包中 Unity Editor 默认打包的资源(但游戏从未使用过)进行剔除,从而再次降低首资源包体积,该功能可以在不开启微信压缩纹理工具的情况下使用。 默认情况下无需开发者进行手动的配置(工具已经能够识别多数Unity Editor的无用资源),但该能力仍然允许开发者进行手动的进行资源选择,来自定义剔除。请注意当开发者手动配置时需要自行判断资源是否是游戏中的必要资源,不慎剔除将导致游戏的渲染异常。
微信纹理压缩升级了全新的内核程序,尽管发布前进行了多数Unity年限版本与常见机型的测试,目前仍处于初期测试使用,若使用期间存在异常影响正常的游戏发布可前往issues提出问题,并使用上一代稳定版微信纹理压缩包(旧)导入工程后采用旧版本完成游戏发布。旧版本使用指引请参阅:微信压缩纹理使用说明(旧)
微信纹理压缩工具底层原理是将bundle内纹理资源分离,将资源指针替换至原bundle内,分离出的资源将被处理成多种不同GPU所支持的纹理格式托管至CDN中,游戏实际运行时将劫持渲染时根据资源指针以及当前设备GPU所支持的纹理格式进行远程加载,成功加载立即上传GPU后将从系统内存释放。这样的工作原理即做到了不同硬件所支持的纹理格式按需加载,又相比于bundle全部加载至内存时占用过多的系统内存。经过微信小游戏团队测试,该工具能够降低游戏的运行时内存情况,不同的游戏之间使用的场景、纹理差异降低值是不相同的。
PC端上预览的时候展示的是PNG图片会比较大,手机上用的是带txt后缀的,如astc.txt, 这些文件压缩率很高,注意正式环境CDN一定要开启Brotli或者Gzip,这样加载的时候纹理就会很小。速度快很多。建议优先使用Brotli。
上传至CDN时,请注意要按二进制传输,强制storebinary,如果按文本传输也会出现加载回来的图片成黑色。
移动设备中大多数使用 ASTC 作为主要的纹理资源格式,ASTC 是不受纹理资源高宽影响的,因此非 4 倍数底层逻辑处理并不会对移动设备上的表现有差异。而对于 DXT 格式是 PC 小游戏中主要的纹理资源格式,该格式是要求高宽必须为 4 的倍数,微信纹理压缩工具在资源处理的过程中识别了资源能否正确的被压缩处理,并在渲染期间做了兜底的渲染策略,在 PC 的表现上,若资源支持以 DXT 格式,则将采用 DXT 渲染,否则遵循兜底策略,其格式优先级为: ASTC、ETC2、DXT、PNG,最差的情况将使用 PNG 格式渲染。
压缩纹理工具执行需要依赖 Node.js 解释器,若执行前已安装 Node.js 但执行时提示未找到则需手动填入本机 Node.js 路径。请将 Node.js 的绝对路径填写至 Assets/WX-WASM-SDK/Editor/TextureEditor/WXAssetsTextTools.cs
文件的 NODE_PATH
变量中。若开发者使用API调用执行,可对该变量进行直接赋值。
不会。标准的CDN服务会支持http2协议,因此看似多条的请求背后系统仅会创建1条TCP/IP链路,所以并不会增加额外的请求开销。宏观来说你开启了CDN压缩情况下,游戏所需资源下载的总量没变、链接次数没变,却享受了不同设备按需使用纹理格式的能力。
因为 Unity 自带 Mono 配置错误 libgdiplus.dylib 文件路径。有两种解决方案选择其一即可。
本地安装官方 Mono 后,代码配置微信压缩纹理工具用于执行的 Mono 解释器完整路径。
// 在合理的时机进行路径配置:
+#if UNITY_EDITOR_OSX
+ WXAssetsTextTools.MONO_PATH = "/usr/bin/mono"; // 本机安装的 Mono 解释器完整路径
+#endif
先下载 libgdiplus.dylib 文件后,将其放在 UnityEditor /Applications/Unity/Hub/Editor/{$Unity_Editor_Version}/Unity.app/Contents/MonoBleedingEdge/lib/libgdiplus.dylib
路径下,并编辑 /Applications/Unity/Hub/Editor/{$Unity_Editor_Version}/Unity.app/Contents/MonoBleedingEdge/etc/mono/config
文件,将 target= .../libgdiplus.dylib
路径内容均变更为下载文件的存放完整路径,重启 Unity Editor 即可。
为方便开发者构建个性化的工程导出能力,微信压缩纹理工具提供了相应的 API 调用接口,开发者可以在游戏内自助构建游戏导出脚本,完成发布上传前的自动化操作。
提示:为简化调用,忽略ab、工程路径等数据均来自面板配置此处不提供相应参数传入,面板配置后将被存盘记录无需每次执行前进行配置。
void WXAssetsTextTools.CompressText(Action<bool, string> complete = null, string bundleDir = null, string outBundleDir = null, bool debug = false, bool force = false)
执行微信压缩纹理流程,该函数为异步函数。该方法对应【包体瘦身--压缩纹理】面板中「处理资源」按钮的执行,其中小游戏工程导出目录路径来自【转换小游戏】面板中配置。
参数 | 类型 | 说明 |
---|---|---|
complete | Action | 执行结束的回调函数,形参1(bool) 返回执行是否成功,形参2(string)返回执行错误时的错误提示信息。 |
bundleDir | string | 可缺省,若存在独立的AB包目录,则此处填写目录的绝对路径。 |
outBundleDir | string | 可缺省,若填写bundleDir则不可省略,独立AB包处理后的输出目录。 |
debug | bool | 可缺省,默认全量生成(false),true时仅生成ASTC格式纹理。 |
force | bool | 可缺省,默认遵循增量逻辑(false),true时将强制生成(已生成资源仍然生成并覆盖)。 |
例子:
WXAssetsTextTools.CompressText((result, msg) =>
+ {
+ if (result)
+ {
+ Debug.Log("微信压缩纹理转换完成!");
+ }else{
+ Debug.LogError(msg);
+ }
+ },
+ null,
+ null,
+ false,
+ false);
void WXAssetsTextTools.GetAssetBundles(Action<string[]> callback = null, string bundleDir = null)
获取微信压缩纹理工具所能扫描到的符合条件的AB包路径数组。相同参数情况下,所扫描到的资源列表则为实际可被执行处理的资源。
参数 | 类型 | 说明 |
---|---|---|
callback | Action | 扫描结束的回调函数,形参(string[]) 返回扫描到的ab包资源绝对路径。 |
bundleDir | string | 可缺省,若存在独立的AB包目录,则此处填写目录的绝对路径。 |
由于Unity WebGL启动加载需要一定时间,因此需要使用视频或图片等内容作为过渡以留住玩家。Unity Loader默认使用图片+进度信息,铺满全屏呈现。
开发者可自定义以下内容
bgImageSrc: 启动封面图;-- $BACKGROUND_IMAGE
+VideoUrl: 启动视频;-- $LOADING_VIDEO_URL
+HideAfterCallMain: 是否callmain完成后立即隐藏封面;-- $HIDE_AFTER_CALLMAIN
样式配置未提供对应的转换插件配置入口,需要修改unity工程中,小游戏模板wechat-default/game.js
hideAfterCallmain: $HIDE_AFTER_CALLMAIN,// 是否需要callmain结束后立即隐藏封面视频
+// 加载页配置项
+loadingPageConfig: {
+ totalLaunchTime: 15000, // 默认总启动耗时,即加载动画默认播放时间,可根据游戏实际情况进行调整
+ /**
+ * !!注意:修改设计宽高和缩放模式后,需要修改文字和进度条样式。默认设计尺寸为667*375
+ */
+ designWidth: 0, // 设计宽度,单位px
+ designHeight: 0, // 设计高度,单位px
+ scaleMode: '', // 缩放模式, 取值和效果参考,https://docs.egret.com/engine/docs/screenAdaptation/zoomMode
+ // 以下配置的样式,尺寸相对设计宽高
+ textConfig: {
+ firstStartText: '首次加载请耐心等待', // 首次启动时提示文案
+ downloadingText: ['正在加载资源'], // 加载阶段循环展示的文案
+ compilingText: '编译中', // 编译阶段文案
+ initText: '初始化中', // 初始化阶段文案
+ completeText: '开始游戏', // 初始化完成
+ textDuration: 1500, // 当downloadingText有多个文案时,每个文案展示时间
+ // 文字样式
+ style: {
+ bottom: 64,
+ height: 24,
+ width: 240,
+ lineHeight: 24,
+ color: '#ffffff',
+ fontSize: 12,
+ }
+ },
+ // 进度条样式
+ barConfig: {
+ style: {
+ width: 240,
+ height: 24,
+ padding: 2,
+ bottom: 64,
+ backgroundColor: '#07C160',
+ }
+ },
+ // 一般不修改,控制icon样式
+ iconConfig: {
+ visible: true, // 是否显示icon
+ style: {
+ width: 64,
+ height: 23,
+ bottom: 20,
+ }
+ },
+ // 加载页的素材配置
+ materialConfig: {
+ // 背景图或背景视频,两者都填时,先展示背景图,视频可播放后,播放视频
+ backgroundImage: '$BACKGROUND_IMAGE', // 背景图片,推荐使用小游戏包内图片;当有视频时,可作为视频加载时的封面
+ backgroundVideo: '$LOADING_VIDEO_URL', // 加载视频,网络url
+ iconImage: 'images/unity_logo.png', // icon图片,一般不更换
+ }
+},
下面根据配置介绍两种加载效果的实现
实现默认效果很简单,开发者只需在导出时配置启动素材即可
所需配置项
bgImageSrc: 启动封面图;-- $BACKGROUND_IMAGE
+VideoUrl: 启动视频;-- $LOADING_VIDEO_URL
+HideAfterCallMain: 是否callmain完成后立即隐藏封面;-- $HIDE_AFTER_CALLMAIN
+loadingBarWidth: 加载进度条宽度;-- $LOADING_BAR_WIDTH
启动loader提供的默认加载界面为了契合不同游戏,做得相对通用,但游戏可能会存在定制启动loading的需求,以达到和游戏更贴近的体验。
小游戏表现
设计稿 设计尺寸:1600*720
loadingPageConfig: {
+ totalLaunchTime: 15000, // 默认总启动耗时,即加载动画默认播放时间,可根据游戏实际情况进行调整
+ designWidth: 1600,
+ designHeight: 720,
+ scaleMode: scaleMode.fixedHeight,
+ textConfig: {
+ firstStartText: '', // 首次启动时提示文案
+ downloadingText: ['红中在手,天下我有'], // 加载阶段循环展示的文案
+ compilingText: '牌从门前过,不如摸一个', // 编译阶段文案
+ initText: '牌从门前过,不如摸一个', // 初始化阶段文案
+ completeText: '牌从门前过,不如摸一个', // 初始化完成
+ textDuration: 1500, // 当downloadingText有多个文案时,每个文案展示时间
+ style: {
+ bottom: 115,
+ height: 45,
+ width: 1045,
+ lineHeight: 45,
+ color: '#ffffff',
+ fontSize: 28,
+ }
+ },
+ barConfig: {
+ style: {
+ width: 1045,
+ height: 15,
+ padding: 2,
+ bottom: 78,
+ backgroundColor: '#66b71f'
+ }
+ },
+ materialConfig: {
+ // 背景图或背景视频,两者都填时,先展示背景图,视频可播放后,播放视频
+ backgroundImage: 'images/background.jpg',
+ iconImage:'images/unity_logo.png'
+ }
+}
scaleMode
取值// https://docs.egret.com/engine/docs/screenAdaptation/zoomMode
+export const scaleMode = {
+ noBorder: 'NO_BORDER', // 常用之一,不留黑边
+ exactFit: 'EXACT_FIT',
+ fixedHeight: 'FIXED_HEIGHT', // 常用之一,高度适配
+ fixedWidth: 'FIXED_WIDTH', // 常用之一,宽度适配
+ showAll: 'SHOW_ALL',
+ fixedNarrow: 'FIXED_NARROW',
+ fixedWide: 'FIXED_WIDE',
+}
本地化 URP 包
Packages:In Project
,在 Packages - Unity 一栏显示的是 当前项目安装的 官方 Packages Universal RP
项,选中,面板右测会显示 URP版本信息,右小角有 Remove 按钮Universal RP
包,URP 还会安装其他依赖包,主要有 Core RP Library
和 Shader Graph
Core RP Library
是 URP 依赖的基础代码包Universal RP
是 URP 本身的代码包Shader Graph
是 Shader 可视化编辑器的包Packages:Unity Registry
,才会看到 Core RP Library
和 Shader Graph
等包的情况Universal RP
和 Core RP Library
这两个包Universal RP
和 Core RP Library
这两个包从项目工程的缓存目录里拷贝出来 com.unity.render-pipelines.universal@12.1.10
和 com.unity.render-pipelines.core@12.1.10
两个子文件夹 D:/custom_packages/
,路径随意,只要不要放到工程目录下即可)Package Manager
窗口找到 Universal RP
选中,然后点击面板右下角的 Remove 按钮,移除掉官方的 URP版本 Universal RP
包,Core RP Library
和 Shader Graph
包也会同时被移除Core RP Library
包 +
号按钮,在弹出列表选择 Add package from disk
Select package on disk
窗口,选择 D:/custom_packages/com.unity.render-pipelines.core@12.1.10/package.json
文件打开Universal RP
包 再次点击 左上角 +
号按钮,选择 D:/custom_packages/com.unity.render-pipelines.universal@12.1.10/package.json
文件打开Core RP Library
,然后再导入Universal RP
. 顺序不能反! (否则会自动引入官方的Core RP Library
包)Package Manager
窗口 选择 Packages:In Project
, 在 Packages - Other
一栏会看到Core RP Library
和 Universal RP
准备条件编译宏
WX_PERFORMANCE_MODE
WX_PERFORMANCE_MODE
WebGL settings
标签页 Scripting Define Symbols
+
号,添加宏WX_PERFORMANCE_MODE
,然后点击Apply
让其生效WX_PERFORMANCE_MODE
的定义WX_PERFORMANCE_MODE
com.unity.render-pipelins.core@12.1.10/ShaderLibrary/Common.hlsl
和 com.unity.render-pipeline.universal@12.1.10/ShaderLibrary/Input.hlsl
这两个文件的开头新增以下代码:#ifndef WX_PERFORMANCE_MODE
+ #if (defined(SHADER_API_GLES) || defined(SHADER_API_GLES30) || defined(SHADER_API_GLES3))
+ #define WX_PERFORMANCE_MODE 1
+ #else
+ #define WX_PERFORMANCE_MODE 0
+ #endif
+ #ifndef SHADER_API_MOBILE
+ #define SHADER_API_MOBILE WX_PERFORMANCE_MODE
+ #else
+ #if !SHADER_API_MOBILE && WX_PERFORMANCE_MODE
+ #undef SHADER_API_MOBILE
+ #define SHADER_API_MOBILE WX_PERFORMANCE_MODE
+ #endif
+ #endif
+#endif
WX_PERFORMANCE_MODE
来定制代码#if WX_PERFORMANCE_MODE // 表示 微信 WebGL 平台
+...
+#endif
+
+#if !WX_PERFORMANCE_MODE // 表示 非微信 WebGL 平台
+...
+#endif
WX_PERFORMANCE_MODE
不是 WebGL 平台特有的,而是通过 SHADER_API_GLES* 宏来开启的,除了 WebGL 平台会启用 SHADER_API_GLES* 宏,还有 安卓 GLES 平台也会启用这个宏WX_PERFORMANCE_MODE
是不生效的,而 C# 的是生效的WX_PERFORMANCE_MODE
宏,还会启用SHADER_API_MOBILE
宏 SHADER_API_MOBILE
宏是 Unity 对移动平台的一个优化项,在 WebGL 平台是没有开启这一项优化,这里顺带把它开启了定制本地化 URP 管线
供参考的 URP 定制版本
minigamedevop08
获取微信定制版的 URP 源码WX_PERFORMANCE_MODE
来做条件编译,改动详情可参考源代码微信 URP 定制版本的性能数据对比
版本 | FPS | GPU 利用率% | 半精度利用率% | 全精度利用率% | Total CPU 利用率% |
---|---|---|---|---|---|
官方URP | 59.8 | 50 | 11.92 | 35.24 | 23 |
定制URP | 59.9 | 38.2 | 8.87 | 45.5 | 23.1 |
版本 | FPS | GPU 利用率% | 半精度利用率% | 全精度利用率% | Total CPU 利用率% |
---|---|---|---|---|---|
官方URP | 59.8 | 70.8 | 5.88 | 43.72 | 22.9 |
定制URP | 59.9 | 51.1 | 8.59 | 35.39 | 23.2 |
注意事项
WX_PERFORMANCE_MODE
宏来控制,因此 Shader 变体这部分开发者可以在定制的过程中剔除掉不需要的功能 Package Manager
窗口的 Add package by name
,输入com.unity.render-pipelines.universal
即可在转换完成后,会在导出路径下生成如下目录
.
+├── minigame
+└── webgl
其中webgl目录结构如下:
.
+├── 01367b188873c923.webgl.data.unityweb.bin.txt
+├── Assets
+│ ├── 15032.wav
+│ ├── Audio
+│ └── Textures
+├── Build
+│ ├── UnityLoader.js
+│ ├── webgl.data.unityweb
+│ ├── webgl.json
+│ ├── webgl.wasm.code.unityweb
+│ ├── webgl.wasm.framework.unityweb
+│ └── webgl.wasm.symbols.unityweb
+├── StreamingAssets
+│ └── AssetBundles
+├── index.html
+└── texture-config.js
导出目录中,webgl目录如下三个文件和目录是可能需要远程部署的资源:
.
+├── 01367b188873c923.webgl.data.unityweb.bin.txt
+├── Assets
+├── StreamingAssets
首资源包即01367b188873c923.webgl.data.unityweb.bin.txt
,包含Unity builtin + 勾选的导出场景 + Resources资源。 注意:加载方式取决于导出选项中的首包资源加载方式
。同时由于小游戏总包体不能超过20MB,实际首包资源加载方式会根据包体决定,更多信息可查看UnityLoader-首包资源加载方式
如果有用到纹理压缩和微信音频API,导出插件自动生成。将此目录部署到服务器即可
AssetBundle和Addressables资源目录。 如果是用的AA,构建时默认打包到StreamingAssets目录下。但如果是用的AB,或者自定义了bundle的生成目录,需要将bundle移动到StreamingAssets目录
请注意!!! bundle的配置文件,比如aa的
setting.json
和catalog.json
,以及AssetBundles
打包生成的配置文件通常没有带上hash,为了避免新版本发布时由于cdn缓存导致加载到旧版本资源,需要避免这些文件使用缓存。通常有以下两种方式避免。
version1/xxxx
,version2/xxxx
no-cache
,请自行查询对应cdn服务商文档进行设置同时,由于通过HTTP请求的资源会自动缓存,不希望被缓存的文件请添加到缓存忽略目录,具体可阅读后续资源缓存规则文档
除非了解小程序更新机制,请勿删除旧版本资源,否则可能导致旧版本游戏的用户运行报错,具体请移步版本更新
这里主要讲UnityLoader的资源缓存策略。
请阅读资源缓存
`,27),l=[t];function h(p,k,r,d,o,F){return i(),a("div",null,l)}const b=s(e,[["render",h]]);export{c as __pageData,b as default}; diff --git a/assets/Design_DataCDN.md.DB7Md4ck.lean.js b/assets/Design_DataCDN.md.DB7Md4ck.lean.js new file mode 100644 index 00000000..1a02257d --- /dev/null +++ b/assets/Design_DataCDN.md.DB7Md4ck.lean.js @@ -0,0 +1 @@ +import{_ as s,c as a,o as i,a4 as n}from"./chunks/framework.CzhHXMZi.js";const c=JSON.parse('{"title":"资源部署与缓存","description":"","frontmatter":{},"headers":[],"relativePath":"Design/DataCDN.md","filePath":"Design/DataCDN.md"}'),e={name:"Design/DataCDN.md"},t=n("",27),l=[t];function h(p,k,r,d,o,F){return i(),a("div",null,l)}const b=s(e,[["render",h]]);export{c as __pageData,b as default}; diff --git a/assets/Design_DebugAndException.md.Br_5LFCR.js b/assets/Design_DebugAndException.md.Br_5LFCR.js new file mode 100644 index 00000000..8681c30b --- /dev/null +++ b/assets/Design_DebugAndException.md.Br_5LFCR.js @@ -0,0 +1,14 @@ +import{_ as e,c as n,a as s,a4 as a,l as i,o as t}from"./chunks/framework.CzhHXMZi.js";const l="/minigame-unity-webgl-transform/assets/debugexception4.DSUeoQnT.png",p="/minigame-unity-webgl-transform/assets/debugexception5.CVudNa9e.png",o="/minigame-unity-webgl-transform/assets/debugexception1.BCEW4Vpv.png",h="/minigame-unity-webgl-transform/assets/debugexception9.W-PbBU-g.png",r="/minigame-unity-webgl-transform/assets/debugexception8.c2_HLQJn.png",g="/minigame-unity-webgl-transform/assets/debugexception7.DPXuZd9S.png",c="/minigame-unity-webgl-transform/assets/debugexception6.B1QYPPoJ.png",d="/minigame-unity-webgl-transform/assets/debugexception3.BbzACAPG.png",k="/minigame-unity-webgl-transform/assets/debugexception2.DcBQavmG.png",P=JSON.parse('{"title":"错误调试与异常排查","description":"","frontmatter":{},"headers":[],"relativePath":"Design/DebugAndException.md","filePath":"Design/DebugAndException.md"}'),u={name:"Design/DebugAndException.md"},m=a('本文阐述开发者在遇到转换后的游戏在开发者工具或真机遇到异常时,如何找到对应堆栈并解决问题。
小游戏出现异常或错误时,通过以下方式打开 console:
开发者工具:调试器->Console
真机:
步骤1(打开调试模式):右上角菜单->打开调试->出现vconsole 或者 game.js增加代码"wx.setEnableDebug({enableDebug: true})"
步骤2(打开vconsole):点击vconsole打开日志面板(启动阶段点三次封面视频下方Unity Logo出现 vconsole)
注意:在WASM代码分包情况下,应该使用jxxx的数字作为函数id
默认情况下,函数堆栈是不可读的函数id,那么可通过以下两种方法之一来获得可读函数名
转换面板勾选profiling-funcs, 导出的代码包中将包含可读函数名。 正式上线版本请务必关闭profiling-funcs,或使用代码分包(可自动剔除函数名)。
以文本方式打开导出目录/webgl/Build/xxx.symbols 文件
',15),b=a('这里有个小工具可以帮助替换日志(在WASM代码分包情况下,需要自行稍做修改)
推荐配置(转换插件默认设置)
BuildSettings->Player Settings->Publish Settings->Enable Exceptions 选项表示 Unity 引擎捕捉哪种级别的异常
什么是异常级别? 简单来说,就是确定哪些异常由引擎捕捉,未被捕捉的异常将抛给 WASM 虚拟机,最终会导致 VM 结束。
以代码为例
// 程序捕捉异常
+ try
+ {
+ GameObject go = null;
+ Debug.Log(go.name);
+ }
+ catch (Exception ex)
+ {
+ Debug.Log(ex);
+ }
+
+ // 程序未捕捉异常
+ GameObject go2 = null;
+ Debug.Log(go2.name);
这段代码有两处异常: 1. 程序捕捉的异常, 2.程序未捕捉异常(通常是问题所在)
None:
异常捕捉:不捕捉任何异常,引擎或业务代码导致的异常都会抛出到 WASM,并导致程序 Crash。 该选项性能最高,但必须保证游戏不使用任何异常,try catch 也无法捕捉任何异常。从下图看到程序在第 1 个 Exception 产生时已终止,代码是无法 catch 该异常的。
异常信息:取决于虚拟机,在开发者工具有出现详细堆栈函数 ID,在真机环境则无。
Explicitly Thrown Exceptions Only:
异常捕捉: 游戏代码的异常将被捕捉,如果非致命异常(不在关键路径上),逻辑代码可以继续。try catch 有效。
异常信息:Debug.Log 等函数等与程序未捕捉异常可输出简要的异常信息,无堆栈信息。
Full Without Stacktrace:
异常捕捉: 同"Explicitly Thrown Exceptions Only", 且引擎还会增加额外的底层异常检查,比如”Null References Out of Bounds Array accesses“。
异常信息: Debug.Log 等函数与程序未捕捉异常都只有输出简要的异常信息,无堆栈信息。
Full With Stacktrace:
异常捕捉: 同"Full Without Stacktrace"
异常信息: Debug.Log 等函数得到完整的堆栈,程序未捕捉异常有最浅层堆栈函数名。
注意:
None 性能最高,但此模式必须保证游戏代码(包括第三方插件)不使用异常,一旦命中异常即使 catch 也无效,会直接导致程序终止。Explicitly Thrown Exceptions Only 是几种选择中鲁棒性和信息提示较为均衡的,推荐发布使用。Full With Stacktrace 会严重影响性能,切忌在发布版本中使用。
BuildSettings->Player Settings->Publish Settings->DebugSymbols
',27),E=i("h3",{id:"development-build",tabindex:"-1"},[s("Development Build "),i("a",{class:"header-anchor",href:"#development-build","aria-label":'Permalink to "Development Build"'},"")],-1),y=i("img",{src:k,width:"800"},null,-1);function _(x,f,D,F,S,B){return t(),n("div",null,[m,s(" 通过日志的函数id找到对应的原始函数名,分析调用堆栈。 "),b,s(" Debug Symbols将产生函数id与函数名之间的映射关系,使用文本方式打开即可。 通常我们从异常log中找到函数id,此时可通过该文件找到C#源代码中的函数名。 "),E,y,s(' Development Build会在异常产生时直接附带完整的函数名,与"Full With Stacktrace"类似,且程序未捕捉异常也有详细堆栈。该选项产生的代码体积较大,且对性能有较大影响。 ')])}const q=e(u,[["render",_]]);export{P as __pageData,q as default}; diff --git a/assets/Design_DebugAndException.md.Br_5LFCR.lean.js b/assets/Design_DebugAndException.md.Br_5LFCR.lean.js new file mode 100644 index 00000000..645946bb --- /dev/null +++ b/assets/Design_DebugAndException.md.Br_5LFCR.lean.js @@ -0,0 +1 @@ +import{_ as e,c as n,a as s,a4 as a,l as i,o as t}from"./chunks/framework.CzhHXMZi.js";const l="/minigame-unity-webgl-transform/assets/debugexception4.DSUeoQnT.png",p="/minigame-unity-webgl-transform/assets/debugexception5.CVudNa9e.png",o="/minigame-unity-webgl-transform/assets/debugexception1.BCEW4Vpv.png",h="/minigame-unity-webgl-transform/assets/debugexception9.W-PbBU-g.png",r="/minigame-unity-webgl-transform/assets/debugexception8.c2_HLQJn.png",g="/minigame-unity-webgl-transform/assets/debugexception7.DPXuZd9S.png",c="/minigame-unity-webgl-transform/assets/debugexception6.B1QYPPoJ.png",d="/minigame-unity-webgl-transform/assets/debugexception3.BbzACAPG.png",k="/minigame-unity-webgl-transform/assets/debugexception2.DcBQavmG.png",P=JSON.parse('{"title":"错误调试与异常排查","description":"","frontmatter":{},"headers":[],"relativePath":"Design/DebugAndException.md","filePath":"Design/DebugAndException.md"}'),u={name:"Design/DebugAndException.md"},m=a("",15),b=a("",27),E=i("h3",{id:"development-build",tabindex:"-1"},[s("Development Build "),i("a",{class:"header-anchor",href:"#development-build","aria-label":'Permalink to "Development Build"'},"")],-1),y=i("img",{src:k,width:"800"},null,-1);function _(x,f,D,F,S,B){return t(),n("div",null,[m,s(" 通过日志的函数id找到对应的原始函数名,分析调用堆栈。 "),b,s(" Debug Symbols将产生函数id与函数名之间的映射关系,使用文本方式打开即可。 通常我们从异常log中找到函数id,此时可通过该文件找到C#源代码中的函数名。 "),E,y,s(' Development Build会在异常产生时直接附带完整的函数名,与"Full With Stacktrace"类似,且程序未捕捉异常也有详细堆栈。该选项产生的代码体积较大,且对性能有较大影响。 ')])}const q=e(u,[["render",_]]);export{P as __pageData,q as default}; diff --git a/assets/Design_DevelopmentQAList.md.BnIfKRTH.js b/assets/Design_DevelopmentQAList.md.BnIfKRTH.js new file mode 100644 index 00000000..eca9bfb0 --- /dev/null +++ b/assets/Design_DevelopmentQAList.md.BnIfKRTH.js @@ -0,0 +1,20 @@ +import{_ as i,c as a,o as e,a4 as s}from"./chunks/framework.CzhHXMZi.js";const g=JSON.parse('{"title":"技术常见问题QA","description":"","frontmatter":{},"headers":[],"relativePath":"Design/DevelopmentQAList.md","filePath":"Design/DevelopmentQAList.md"}'),l={name:"Design/DevelopmentQAList.md"},t=s(`pluginid: wx7a727ff7d940bb3f, permission deny
字样错误 Q:
A: 新版导出插件使用小游戏插件来渲染关系链数据,因此需要添加插件。可通过微信开发者工具控制台-添加插件的报错信息添加插件,即可正常使用。同时需要注意实际未使用关系链数据时请删掉game.json中plugins.Layout配置。如果开发者工具控制台没有添加插件的入口请手动在MP端添加插件或者升级至最新版本的开发者工具。
webgl.wasm.symbols.unityweb
不会被上传,是做什么用的 WXConvertCore.cs
脚本提供的 DoExport()
方法实现导出,参考代码如下:if (WXConvertCore.DoExport() == WXConvertCore.WXExportError.SUCCEED) {
+ Debug.Log("成功");
+ //... 后续操作
+} else {
+ Debug.LogError("失败");
+}
Failed running "../il2cppcore/il2cppcore.dll"
错误解决办法 报错原因:Unity 2020及以前(如2019)版本构建 WebGL 仍然需要 Python2 ,而Mac OS 12.3版本起已经不再内置 Python2。
一种解决办法:
(1)前往 python 官网下载对应的 python2.7.dmg 安装包直接进行安装;
(2)在 Unity 工程目录任意位置创建 .cs
脚本文件,内容如下:
#if UNITY_EDITOR
+using UnityEditor;
+using UnityEditor.Build;
+using UnityEditor.Build.Reporting;
+using UnityEngine;
+
+public class PreBuildProcessing : IPreprocessBuildWithReport
+{
+ public int callbackOrder => 1;
+ public void OnPreprocessBuild(BuildReport report)
+ {
+ System.Environment.SetEnvironmentVariable("EMSDK_PYTHON", "/Library/Frameworks/Python.framework/Versions/2.7/bin/python");
+ }
+}
+#endif
其中 Python 路径请自行检查,若由步骤(1)方式安装的一般无需改动,至此问题解决。
内网使用微信开发者工具时需要放开这些域名的限制方可正常使用
参考 https://developers.weixin.qq.com/community/develop/article/doc/000e426d34c788ac39ad82e1756813
https://mp.weixin.qq.com
+
+https://open.weixin.qq.com
+
+https://long.open.weixin.qq.com
+
+https://lp.open.weixin.qq.com
+
+https://servicewechat.com
+
+https://dldir1.qq.com
+
+https://res.wx.qq.com
+
+https://tcb.cloud.tencent.com
+
+https://scf.tencentcloudapi.com
+
+https://flexdb.tencentcloudapi.com
+
+https://tcb.tencentcloudapi.com
+
+wss://wxagame.weixin.qq.com
+
+https://long.wxagame.weixin.qq.com
+
+https://cube.weixinbridge.com
+
+https://repot.url.cn
+
+https://fuwu.weixin.qq.com
+
+https://res.servicewechat.com
考虑到游戏体积与逻辑复杂度,目前建议中轻度2D/3D游戏进行转换,游戏类目包括:
对重度游戏如MMO/FPS等游戏需根据实际情况评估
版本建议:
Unity版本支持从2018到最新的2021版本
建议使用LTS版本,尽量使用2021(更快编译和更小体积、压缩纹理、压缩音频等支持)
能力 | 是否支持 | 解决方案 |
---|---|---|
Unity基础模块 | 支持 | 支持动画、物理、AI、UI等基础模块 |
渲染管线 | 支持 | 支持标准渲染管线、URP,但依赖WebGL2.0的特性处于Beta测试 |
资源加载 | 支持 | Addressable、AssetBundle网络异步加载 |
Lua脚本 | 支持 | 支持标准Lua与常见binding(如xlua, tolua等), 不支持Luajit。需根据实际游戏在真机验证性能 |
PureTS | 支持 | iOS系统需14.5以上, 支持JIT |
Unity音频 | 支持 | UnityAudio基本能力支持,支持fmod插件(长音频请使用UnityAudio), 但不支持wwise。 |
第三方插件 | 部分支持 | 支持大部分插件,C#插件与非平台相关的C原生插件 |
网络系统 | 需调整 | HTTP使用UnityWebRequest,TCP使用WX SDK适配或WebSocket通信替代(如开源的UnityWebSocket插件),UDP使用WX SDK适配 |
渲染接口 | 支持 | 仅支持WebGL1.0(相当于OpenGLES2.0),2.0支持处于Beta测试阶段 |
多线程 | 不支持 | 删除多线程用法,使用异步等其他替代方式 |
文件API | 需调整 | 不支持System.File接口,但可使用微信小游戏WX SDK实现文件存储,大小限制为200MB。玩家存档请使用服务器或云开发;AssetsBundle缓存适配插件已自动支持 |
小游戏主要存在三种类型的资源:
wasm.code.unityweb
文件webgl.data.unityweb
文件其中,wasm代码和首资源包框架会强制缓存,开发者无需关心。本篇重点介绍业务资源的缓存规则。
与APP游戏不同,在小游戏中推荐将资源包拆分成为一个个小文件加载。结合启动Loader有以下优势:
大致流程如图:
当使用以下API发起网络请求时会检查是否需要缓存,以及是否命中缓存。
游戏业务侧无需关心资源是否有缓存,按照本地没有缓存来使用,正常调用API即可,当有缓存时,Loader插件会构造正常响应返回给游戏
Assets/WX-WASM-SDK/Editor/MiniGameConfig.asset
中以下配置与缓存相关
// 业务资源相关
+bundlePathIdentifier: 需要缓存的路径,用 \`;\`分隔 eg: StreamingAssets;bundles;
+excludeFileExtensions: 不需要缓存的文件类型,用 \`;\`分隔 eg: .json;.hash
+bundleHashLength: bundle中hash占多少长度
+// 纹理相关
+needCacheTextures: 是否缓存纹理
+texturesPath: 纹理存放路径
+texturesHashLength: 纹理中hash长度
+// 缓存淘汰相关
+defaultReleaseSize: 清理缓存时默认额外清理的大小,单位Bytes,默认值30MB
+maxStorage: 最大缓存容量,单位MB,默认值200MB
其中部分配置可通过转换插件面板快速修改: bundleExcludeExtensions
: 对应不自动缓存文件类型
配置 bundleHashLength
: 对应Bundle名中Hash长度
配置
存在业务的bundle资源和使用微信压缩纹理工具后的纹理资源,不同资源的缓存细节略有不同。
默认URL中包含StreamingAssets
的请求会被识别为资源文件被自动缓存,可修改 bundlePathIdentifier
为你期望的值
并非所有文件都适合持久化缓存,因此缓存规则也支持忽略某些文件,默认.json
的文件不会被自动缓存,可修改 bundleExcludeExtensions
。等同于修改导出插件面板的不自动缓存文件类型
配置
默认会缓存纹理,修改needCacheTextures
可控制是否缓存纹理资源。
通过texturesPath
可让Loader识别一条请求是否为纹理,默认为Assets/Textures
如开篇的流程图所示,当需要自动缓存的文件在写入本地之前,若本地已经有此文件的旧缓存,则先清理旧缓存,再执行写入,那么需要一个手段来区分资源版本。
框架不会做额外计算来验证资源版本,通过文件名中带资源hash,可以在资源更新时,识别不同版本的资源。
以Addressables
为例,打包参数加上BuildAssetBundleOptions.AppendHashToAssetBundleName,会携带32位长度的hash拼接到文件名末尾。
默认hash长度为32
,可通过bundleHashLength
修改。等同于修改导出插件面板的Bundle名中Hash长度
以下几种命名都能识别到版本号8d265a9dfd6cb7669cdb8b726f0afb1e
eg1: font_8d265a9dfd6cb7669cdb8b726f0afb1e eg2: font-8d265a9dfd6cb7669cdb8b726f0afb1e eg3: font_8d265a9dfd6cb7669cdb8b726f0afb1e.ttf
因纹理打包规则不一致,hash长度也不一样,默认hash长度为8
,可通过texturesHashLength
配置。
随着游戏进度的推进,累计资源体积可能会超过允许的最大值。
注意!!!此最大值通过
maxStorage
修改,未前往mp后台-能力地图-生产提效包-空间提升
开通空间提升的游戏,请勿设置超过200MB的值
达到缓存上限后,一些游戏前期的资源已经不需要再被使用。 此时Loader会按照LRU规则,清理出所需大小,并且为了避免频繁触发清理,会默认多清理30MB
的空间,可通过defaultReleaseSize
修改。
同时,在清理时也支持忽略一些文件,永不被自动清理,只可通过fs接口主动删除。
通过导出的小游戏minigame/untiy-namespace.js
中isErasableFile
javascript函数自行控制
// 清理缓存时是否可被自动清理;返回true可自动清理;返回false不可自动清理
+unityNamespace.isErasableFile = function (info) {
+ // 用于特定AssetBundle的缓存保持
+ if (unityNamespace.WXAssetBundles.has(info.path)) {
+ return false;
+ }
+ // 达到缓存上限时,不会被自动清理的文件
+ // 例如,font文件不希望自动清理
+ const inErasableIdentifier = ['font_8d265a9dfd6cb7669cdb8b726f0afb1e.ttf'];
+ if (inErasableIdentifier.some(identifier => info.path.includes(identifier))) {
+ return false;
+ }
+ return true;
+};
假设有以下配置
1. DATA_CDN: https://weixin.qq.com/webgl
+2. bundlePathIdentifier: ['StreamingAssets']
+3. bundleHashLength: 32
在写入缓存前需要经过三步
那么:
注意:资源实际部署的CDN前缀必须与转换面板填写的CDN地址一致,否则无法按照前文的缓存规则获得资源的唯一标识。导致缓存失败
StreamingAssets/textures_cdb8b726f0afb1e8d265a9dfd6cb7669
在写入缓存前,插件认为已经本地已经有同名文件StreamingAssets/textures
,但hash与本次写入的文件不一致,则需要删除StreamingAssets/textures_cdb8b726f0afb1e8d265a9dfd6cb7669
支持的bundle命名:需以-
或_
分割,当以其他符号分割时,无法正确处理版本信息,故无法正确删除旧版本资源
转换插件相关配置
bundleHashLength: bundle中hash的长度
转换插件相关配置
defaultReleaseSize: 清理时,默认额外清理的大小,单位Bytes,1MB = 1024KB = 1024*1024Bytes
+maxStorage: 最大缓存容量,修改此值需要联系研发助手开通权限,否则无效
minigame/unity-namespace.js
打开详细日志开关enableDebugLog: true
[PLUGIN LOG 10:32.52.915] CacheXMLHttpRequest_onload: shadowreceiverdepth_9551162e.bundle, 耗时:222ms,无缓存,执行缓存逻辑
[PLUGIN LOG 10:32.53.073] 缓存 shadowreceiverdepth_9551162e.bundle成功;size: 1.78KB,耗时: 79ms
[PLUGIN LOG 20:18.38.275] CacheXMLHttpRequest_onload: scene999_tw_5b9ef7d7.bundle使用缓存, 耗时:37ms
Bundle名中Hash长度
来自定义。比如游戏自己计算了crc,可将Bundle名中Hash长度
设置为crc长度。缓存文件在usr目录下
mp后台-能力地图-生产提效包-空间提升
的游戏,修改maxStorage
超过200MB会导致出现写缓存失败。在提升Unity WebGL游戏启动速度章节我们提到过:
在timelog中呈现的首场景耗时即为引擎初始化与开发者首帧逻辑,关于该阶段耗时,开发者需要注意的是:
- MonoBehaviour脚本的首帧Start/Awake应足够少逻辑,优先将画面呈现
- 初始场景不宜过大,通常呈现Splash场景即可
- 初始场景中需要后续主场景或配置加载时可采取分帧策略,切勿在Start/Awake阻塞
下面介绍如何通过在小游戏下通过Profile的方式对小游戏首场景耗时进行针对性优化。
微信小游戏在安卓平台提供了CPU Profile能力,使用姿势为: 1.采集Profile: 点击右上角菜单 -> 开发调试 -> Start CPU Profile -> Stop CPU Profile; 2.导出Profile文件 当点击Stop CPU Profile之后,会弹出浮窗告知profile文件的存储路径,通过USB链接电脑或者第三方文件管理器即可将Profile文件传输至电脑。
3.Chrome导入Profile文件 打开Chrome浏览器,右键审查元素或者按F12即可打开控制台界面。选中JavaScript Profile tab(如果默认没有,可能在右上角的三个点展开菜单->More tools里面),点击load导入步骤2的profile文件,Profile文件的使用可以参考Google的开发文档: https://developers.google.com/web/tools/chrome-devtools/rendering-tools/js-execution
参考文档小游戏启动流程中提到的,当游戏代码包下载编译完成和首包资源下载完成后会运行游戏逻辑,最开始执行的逻辑是CallMain主函数。 在WebGL模式下,CallMain的主要是initWebGLPlayer调用,主要分成两部分调用:
下表为针对Unity Benchmark项目在不同设备上的callmain耗时分析,Benchmark项目链接:https://github.com/Unity-Technologies/Benchmark
下面实验均采用Unity 2018.4.24f1版本,Development模式会对性能有一定影响,下表数据均为Development模式下数据。
initWebGLPlayer主要函数 | 安卓魅族6s | OPPO A37m | 安卓小米10 | 开发者工具 |
---|---|---|---|---|
InitializeIl2CppFromMain | 525ms | 954ms | 113ms | 39.90ms |
RuntimeInitialize | 139ms | 649ms | 50.2ms | 2.33ms |
PlayerInitEngineNoGraphics | 463.8ms | 1.24s | 154ms | 10.46ms |
PlayerInitEngineGraphics | 1.4s | 2.94s | 403ms | 126ms |
PlayerLoadFirstScene | 815ms | 2.12s | 213ms | 70.75ms |
1.改造小游戏代码 因为安卓采集Profile文件需要手动控制,而CallMain会在码包下载编译完成和首包资源下载完成后就执行,为了录制启动阶段完整的Profile,需要保证Profile的录制开始之后才真正执行游戏开始逻辑,找到项目的game.js文件,改造最后几行即可:
// gameManager.startGame();
+
+wx.onTouchStart((result) => {
+ console.log('真正执行开始游戏逻辑');
+ gameManager.startGame();
+})
+
+GameGlobal.manager = gameManager;
通过上面的改造,在进入小游戏后,可以按照这个流程采集Profile:Start CPU Profile -> 点击屏幕触发真正的开始游戏逻辑 -> 看到游戏界面后Stop Profile。
2.导入步骤1的启动过程Profile文件
导入文件后,我们只需要关注CallMain调用的PlayerLoadFirstScene函数,如果PlayerLoadFirstScene耗时占比过高,大多是因为在首场景执行了不必要的操作,比如大量反序列化操作、配置解析操作,按需剔除后再次Profile即可验证效果。
',6);function u(b,y,S,C,k,v){const a=n("font");return p(),s("div",null,[P,o("p",null,[t("目前为止,开发者可以操作的主要是PlayerLoadFirstScene函数的调用,参照Unity的Benchmark项目,要尽可能将PlayerLoadFirstScene的耗时控制在整个CallMain耗时的"),r(a,{color:"#dd0000"},{default:l(()=>[t("20%")]),_:1}),t("左右,如果CallMain耗时过大,可以借助上面提到的Profile工具进行优化,下面简单分析流程。")]),_])}const T=i(f,[["render",u]]);export{M as __pageData,T as default}; diff --git a/assets/Design_FirstSceneOptimization.md.BIBDhOxu.lean.js b/assets/Design_FirstSceneOptimization.md.BIBDhOxu.lean.js new file mode 100644 index 00000000..c0ea9f4b --- /dev/null +++ b/assets/Design_FirstSceneOptimization.md.BIBDhOxu.lean.js @@ -0,0 +1 @@ +import{_ as i,D as n,c as s,l as o,a as t,I as r,w as l,a4 as e,o as p}from"./chunks/framework.CzhHXMZi.js";const d="/minigame-unity-webgl-transform/assets/profile.yCnwPQ6L.png",c="/minigame-unity-webgl-transform/assets/stop.CFvG6dL8.png",m="/minigame-unity-webgl-transform/assets/stopprofile.DmPV0U4-.png",h="/minigame-unity-webgl-transform/assets/chromeload.sYqunEFg.png",g="/minigame-unity-webgl-transform/assets/benchmarkprofile.BvHHzfgK.png",M=JSON.parse('{"title":"首场景启动优化","description":"","frontmatter":{},"headers":[],"relativePath":"Design/FirstSceneOptimization.md","filePath":"Design/FirstSceneOptimization.md"}'),f={name:"Design/FirstSceneOptimization.md"},P=e("",13),_=e("",6);function u(b,y,S,C,k,v){const a=n("font");return p(),s("div",null,[P,o("p",null,[t("目前为止,开发者可以操作的主要是PlayerLoadFirstScene函数的调用,参照Unity的Benchmark项目,要尽可能将PlayerLoadFirstScene的耗时控制在整个CallMain耗时的"),r(a,{color:"#dd0000"},{default:l(()=>[t("20%")]),_:1}),t("左右,如果CallMain耗时过大,可以借助上面提到的Profile工具进行优化,下面简单分析流程。")]),_])}const T=i(f,[["render",u]]);export{M as __pageData,T as default}; diff --git a/assets/Design_Guide.md.CPnFEg05.js b/assets/Design_Guide.md.CPnFEg05.js new file mode 100644 index 00000000..acd3ae20 --- /dev/null +++ b/assets/Design_Guide.md.CPnFEg05.js @@ -0,0 +1 @@ +import{_ as a,c as e,o as t,a4 as r}from"./chunks/framework.CzhHXMZi.js";const o="/minigame-unity-webgl-transform/assets/guide1.BFcCfH8z.png",f=JSON.parse('{"title":"Unity 游戏接入微信小游戏指南","description":"","frontmatter":{},"headers":[],"relativePath":"Design/Guide.md","filePath":"Design/Guide.md"}'),i={name:"Design/Guide.md"},l=r(' 下图中介绍了新游戏接入微信小游戏平台的主要转换流程,下文将介绍每一个阶段的工作:
相关手册:兼容性评估 、推荐引擎版本、更多小游戏成功转换案例 、技术常见问题QA
新计划接入游戏的开发者应阅读本节相关手册内容,参考已转化的案例游戏并结合自身游戏情况评估转化的可行性。
本节内容将指引开发者如何让自己的游戏工程在微信小游戏平台成功运行。
相关下载: 微信 Unity 插件下载
相关手册:快速开始:转换工具导出微信小游戏
阅读 快速开始:转换工具导出微信小游戏 快速熟悉工具的使用并完成一次简单的转化工作!
相关手册:资源按需加载概述 、AA(Addressable) 进行资源按需加载 、 AB(AssetBundle)进行资源按需加载 、Instant Game 实践指南
区别于原生 APP 游戏很少考虑场景内的资源规划问题,开发时通常将资源在游戏启动时全加载到内存中,而小游戏需要做到“即点即玩”,影响游戏的呈现速度因素中如首资源包的下载往往占比较大,因此需要根据场景中的主次内容进行资源上的优化分包处理。有关分包策略可参阅 资源按需加载概述 选择符合当前游戏的方案,具体实施可阅读具体指引文档。
区别于原生环境,WebGL模式(JavaScript环境)是不支持使用原生套接字(Socket)实现网络通信。对于游戏中使用到网络请求的操作,需要进行相应的适配。将 HTTP 请求使用 UnityWebRequest 类实现,全双工通信改用 WebSocket 协议实现,可参考手册案例完成适配。
游戏导出小游戏包(/minigame)将使用微信开发者工具打开,而资源目录(/webgl 或 /webgl-min)需要上传至开发者的 CDN 服务器中,并前往 MP 后台配置安全域名白名单,对于进一步提升 iOS 下的游戏运行效率可前往 MP 申请 iOS 高性能模式,请阅读相关手册完成相应的部署。
相关手册:开发错误调试与排查
小游戏存在开发者工具、真机(Android/iOS/PC Windows),当游戏出现异常时可通过日志进行错误堆栈分析。
相关手册:WX SDK 平台能力适配 、屏幕适配 、 输入法适配 、 排行榜与微信关系数据
Unity 游戏接入微信小游戏平台将获得微信提供的 API 以及开放能力,开发者根据需要进行按需接入。微信 API 支持的能力包括登陆、设备(存储、震动)、开放数据、广告等等。
相关手册:启动留存数据上报统计
在小游戏中玩家对启动时长与体验十分敏感(尤其从“广告”等买量场景进入的玩家),因此需要在必要的位置进行相关的数据上报,Unity Loader 插件为游戏提供了一些基础上报数据,但游戏内部关键帧位置仍需要开发者自行上报,可参阅相关手册完成上报配置。
截止本阶段,开发者的 Unity 游戏将在微信小游戏平台成功启动运行,但为了能够达到更佳的游戏体验开发者应继续进行对游戏工程的调优工作,本节将介绍目前微信小游戏平台为开发者提供的调优能力完成上线前的最后优化工作。
相关手册:提升Unity WebGL游戏启动速度 、启动流程与时时序 、 首场景启动优化
根据统计数据反应,小游戏玩家对于游戏的启动时长是较为敏感的,过长的启动时间会导致用户的显著流失,因此如何快速呈现游戏场景是 Unity 原生 APP 游戏接入微信小游戏平台的一个重点优化的工作。首场景启动优化的并不是一个简单的步骤就可以完全优化,在初始 Unity 工程时开发者应主要对游戏代码如首帧逻辑进行修改,具体可参阅首场景启动优化手册。
相关手册:使用预下载功能
在 UnityLoader 加载过程中是存在CPU处理密集而 网络空闲 的情况,因此可以充分利用该时机进行一些必要的资源下载可有助于提升游戏场景等资源的载入速度。
相关手册:优化Unity WebGL的运行性能、使用 Android CPU Profiler 性能调优、使用 Unity Profiler 性能调优、优化 Unity WebGL 内存
游戏转化完成后仍需要对各项的性能指标进行量化测试。
相关手册: 压缩纹理优化
压缩纹理工具是微信SDK提供的一种能够根据不同的游戏运行平台而按需加载压缩后纹理资源的能力。它的优点是:
纹理压缩对于 提升运行速度 与 减少内存 的优化方面均有不错的表现效果,对于重度游戏而言,均建议进行该优化。
相关手册:使用代码分包工具
Unity 导出小游戏项目后代码将存储在 wasm 文件中,而游戏启动时需要完整的 wasm 文件才可以运行,于是微信小游戏提供了WASM代码分包能力,将原本的 wasm 文件根据游戏逻辑的主次内容分为 2 个 wasm 文件,一个用于启动加载另一个将被延迟加载,这样就允许先加载较小的首包快速进入主场景。该能力可以有效降低内存的使用,以及减少脚本编译的时间。
相关手册:启动封面
由于 Unity WebGL 的启动加载需要一定的时间,微信小游戏支持通过配置封面图/视频等内容作为加载期间的过渡来留住玩家,微信小游戏支持如下自定义配置项:
审核发布可参考 MP 文档 小游戏接入指南 自助完成,游戏相关运行数据请前往 微信公众平台。
',57),n=[l];function h(s,p,d,u,c,m){return t(),e("div",null,n)}const q=a(i,[["render",h]]);export{f as __pageData,q as default}; diff --git a/assets/Design_Guide.md.CPnFEg05.lean.js b/assets/Design_Guide.md.CPnFEg05.lean.js new file mode 100644 index 00000000..6dc09f0b --- /dev/null +++ b/assets/Design_Guide.md.CPnFEg05.lean.js @@ -0,0 +1 @@ +import{_ as a,c as e,o as t,a4 as r}from"./chunks/framework.CzhHXMZi.js";const o="/minigame-unity-webgl-transform/assets/guide1.BFcCfH8z.png",f=JSON.parse('{"title":"Unity 游戏接入微信小游戏指南","description":"","frontmatter":{},"headers":[],"relativePath":"Design/Guide.md","filePath":"Design/Guide.md"}'),i={name:"Design/Guide.md"},l=r("",57),n=[l];function h(s,p,d,u,c,m){return t(),e("div",null,n)}const q=a(i,[["render",h]]);export{f as __pageData,q as default}; diff --git a/assets/Design_HowToDebug.md.9HIIlwN3.js b/assets/Design_HowToDebug.md.9HIIlwN3.js new file mode 100644 index 00000000..dc1ab926 --- /dev/null +++ b/assets/Design_HowToDebug.md.9HIIlwN3.js @@ -0,0 +1,2 @@ +import{_ as e,a}from"./chunks/export.Cp8QqQgk.js";import{_ as t,c as i,o as l,a4 as o}from"./chunks/framework.CzhHXMZi.js";const n="/minigame-unity-webgl-transform/assets/howtodebug1.D6NuTfM8.png",_=JSON.parse('{"title":"调试错误与异常处理","description":"","frontmatter":{},"headers":[],"relativePath":"Design/HowToDebug.md","filePath":"Design/HowToDebug.md"}'),r={name:"Design/HowToDebug.md"},s=o('本文描述Unity WebGL游戏运行过程中,如果遇到异常(业务代码、引擎)时开发者应该如何进行调试。
默认情况下,使用“转换插件”这两个选项都已设置完成。
需要说明的是:
由于Unity WebGL运行时是基于WebAssembly,该格式并非“人类可读”,直接对WebAssembly进行调试会非常困难。 因此我们建议开发者使用日志与异常堆栈进行问题排查。对于未知问题,开发者往往需要异常产生时的堆栈找到蛛丝马迹,下文将引导开发者如何去根据WebAssembly找到对应的游戏工程源码所在位置。
python3 -m pip install brotli
下载 Unity插件, 并导入至游戏项目中
添加需要导出的scene
建议仅勾选Loading场景,后续场景使用AssetsBundle/Addressable进行按需加载。
导出WEBGL并转换为小游戏
按钮 ,等待转换完成。其中:
/
,若没有用到AB包则不需要填 生成目录下 webgl目录为游戏对应的webgl版本,minigame目录为转化后的小游戏代码。注意:
webgl/ProjectName.data.unityweb.bin.txt
上传至“游戏资源CDN”。您的CDN最好支持Brotli或gzip压缩txt文件,这样能减少网络传输数据和时间。至此,可以在微信开发者工具打开转化后的小游戏进行预览。
如果你希望将导出插件集成到自己的发布流程,想脚本调用的话,可修改 Assets/WX-WASM-SDK/Editor/MiniGameConfig.asset配置,然后调用WXEditorWindow 的 DoExport方法导出小游戏
var win = new WXEditorWindow();
+win.DoExport();
为什么运行时出现奇怪的“Maximun call stack size exceeded.RangeError”或“Not Impletemented: Class::FromIL2CPPType”? Unity WebGL 首包资源data文件含有metadata,如果data资源包和wasm对不上会有各种问题,尤其在浏览器运行时需清理IndexedDB中的缓存。
为什么资源或网络请求在打开"vConsole"正常,关闭时下载失败? 网络请求必须配置安全域名:https://developers.weixin.qq.com/minigame/dev/guide/base-ability/network.html 打开"vConsole"时,小游戏默认不检查因此能请求通过。
中文字体适配 字体必须打包到项目中,才能正常展示。
音频被切到后台会停止 小游戏被切到后台会停止播放音频需代码中监听 WX.OnShow事件和 WX.OnAudioInterruptionEnd事件,在该事件之后重新播放音频
在小游戏中Unity游戏唤不起输入法,需要使用WX_SDK中提供的方法来唤起输入法,并做简单的逻辑修改来适配。
详细示例请参考API Demo
以UGUI的Input组件为例,需要给Input 绑定以下脚本:
using UnityEngine;
+using System.Collections;
+using WeChatWASM;
+using UnityEngine.UI;
+using UnityEngine.EventSystems;
+
+public class Inputs : MonoBehaviour, IPointerClickHandler, IPointerExitHandler
+{
+ public InputField input;
+ private bool isShowKeyboard = false;
+ public void OnPointerClick(PointerEventData eventData)
+ {
+ Debug.Log("OnPointerClick");
+ ShowKeyboard();
+ }
+
+ public void OnPointerExit(PointerEventData eventData)
+ {
+ Debug.Log("OnPointerExit");
+ if (!input.isFocused)
+ {
+ HideKeyboard();
+ }
+ }
+
+ public void OnInput(OnKeyboardInputListenerResult v)
+ {
+ Debug.Log("onInput");
+ Debug.Log(v.value);
+ if (input.isFocused)
+ {
+ input.text = v.value;
+ }
+ }
+
+ public void OnConfirm(OnKeyboardInputListenerResult v)
+ {
+ // 输入法confirm回调
+ Debug.Log("onConfirm");
+ Debug.Log(v.value);
+ HideKeyboard();
+ }
+
+ public void OnComplete(OnKeyboardInputListenerResult v)
+ {
+ // 输入法complete回调
+ Debug.Log("OnComplete");
+ Debug.Log(v.value);
+ HideKeyboard();
+ }
+
+ private void ShowKeyboard()
+ {
+ if (!isShowKeyboard)
+ {
+ WX.ShowKeyboard(new ShowKeyboardOption()
+ {
+ defaultValue = "xxx",
+ maxLength = 20,
+ confirmType = "go"
+ });
+
+ //绑定回调
+ WX.OnKeyboardConfirm(OnConfirm);
+ WX.OnKeyboardComplete(OnComplete);
+ WX.OnKeyboardInput(OnInput);
+ isShowKeyboard = true;
+ }
+ }
+
+ private void HideKeyboard()
+ {
+ if (isShowKeyboard)
+ {
+ WX.HideKeyboard(new HideKeyboardOption());
+ //删除掉相关事件监听
+ WX.OffKeyboardInput(OnInput);
+ WX.OffKeyboardConfirm(OnConfirm);
+ WX.OffKeyboardComplete(OnComplete);
+ isShowKeyboard = false;
+ }
+ }
+}
除常规使用 AA/AB 分包方案外,Unity 官方也提供了 AutoStreaming 转换工具可以实现 Unity 游戏转化至微信小游戏平台的能力。开发者可阅读本文自行选择转换方案。
Instant Game 能够快速有效的将原生 APP 游戏工程在较少的代码修改的情况下完成微信小游戏平台的运行,这得益于 Unity 引擎基于底层实现对游戏资源的异步加载能力,并将这些资源托管至 CCD 服务中。对于开发者而言,若游戏为休闲关卡类等小型游戏,使用 Instant Game 能够减少游戏的转化工时。适用于 Instant Game 转化的游戏一般具备:
Instant Game 对于极小的休闲类游戏将具备更快更小修改代价将游戏迁移至微信小游戏环境内运行,若追求较好的游戏品质,无论哪一种方案都需要开发者专项的适配。在部署方面 Instant Game 需要使用平台提供的 CDN 服务,不支持开发者自建。
请前往 Unity微信小游戏专区 (https://unity.cn/instantgame/docs/WechatMinigame/Demo) 阅读转换指引。
经过 AutoStreaming 转换后开发者应在微信开发者工具检查控制台中Network面板资源是否加载正常,若存在404时,需要查看资源是否正确上传、读取路径是否正确等。
',11),o=[r];function s(l,m,h,c,d,u){return e(),t("div",null,o)}const g=a(i,[["render",s]]);export{p as __pageData,g as default}; diff --git a/assets/Design_InstantGameGuide.md.CuNEhmgx.lean.js b/assets/Design_InstantGameGuide.md.CuNEhmgx.lean.js new file mode 100644 index 00000000..ddca6d71 --- /dev/null +++ b/assets/Design_InstantGameGuide.md.CuNEhmgx.lean.js @@ -0,0 +1 @@ +import{_ as a,c as t,o as e,a4 as n}from"./chunks/framework.CzhHXMZi.js";const p=JSON.parse('{"title":"使用 AutoStreaming 进行资源按需加载","description":"","frontmatter":{},"headers":[],"relativePath":"Design/InstantGameGuide.md","filePath":"Design/InstantGameGuide.md"}'),i={name:"Design/InstantGameGuide.md"},r=n("",11),o=[r];function s(l,m,h,c,d,u){return e(),t("div",null,o)}const g=a(i,[["render",s]]);export{p as __pageData,g as default}; diff --git a/assets/Design_IssueAndContact.md.-eWumM_X.js b/assets/Design_IssueAndContact.md.-eWumM_X.js new file mode 100644 index 00000000..c558ef71 --- /dev/null +++ b/assets/Design_IssueAndContact.md.-eWumM_X.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a,a4 as s}from"./chunks/framework.CzhHXMZi.js";const i="/minigame-unity-webgl-transform/assets/issueandcontact1.BeCR63tr.png",r="/minigame-unity-webgl-transform/assets/issueandcontact2.B0AIavMG.jpg",f=JSON.parse('{"title":"问题反馈与联系我们","description":"","frontmatter":{},"headers":[],"relativePath":"Design/IssueAndContact.md","filePath":"Design/IssueAndContact.md"}'),n={name:"Design/IssueAndContact.md"},o=s('开发者使用转换方案时,如果遇到问题可以随时反馈给我们。目前可通过Git Issue和“研发助手号”微信两种方式。
开发者遇到BUG或者希望新增特性优先使用Git Issue,因为这里可以更好进行问题沉淀、讨论与跟踪。
问题复现尽可能详细,包括以下内容:
开发者也可以通过“研发助手号”直接与小游戏团队进行技术交流
',10),c=[o];function l(m,u,_,h,d,p){return a(),t("div",null,c)}const b=e(n,[["render",l]]);export{f as __pageData,b as default}; diff --git a/assets/Design_IssueAndContact.md.-eWumM_X.lean.js b/assets/Design_IssueAndContact.md.-eWumM_X.lean.js new file mode 100644 index 00000000..4ac3634a --- /dev/null +++ b/assets/Design_IssueAndContact.md.-eWumM_X.lean.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a,a4 as s}from"./chunks/framework.CzhHXMZi.js";const i="/minigame-unity-webgl-transform/assets/issueandcontact1.BeCR63tr.png",r="/minigame-unity-webgl-transform/assets/issueandcontact2.B0AIavMG.jpg",f=JSON.parse('{"title":"问题反馈与联系我们","description":"","frontmatter":{},"headers":[],"relativePath":"Design/IssueAndContact.md","filePath":"Design/IssueAndContact.md"}'),n={name:"Design/IssueAndContact.md"},o=s("",10),c=[o];function l(m,u,_,h,d,p){return a(),t("div",null,c)}const b=e(n,[["render",l]]);export{f as __pageData,b as default}; diff --git a/assets/Design_IssueForProduction.md.BAJVpqnp.js b/assets/Design_IssueForProduction.md.BAJVpqnp.js new file mode 100644 index 00000000..7e830c86 --- /dev/null +++ b/assets/Design_IssueForProduction.md.BAJVpqnp.js @@ -0,0 +1 @@ +import{_ as r,c as i,a as t,a4 as e,o as a}from"./chunks/framework.CzhHXMZi.js";const o="/minigame-unity-webgl-transform/assets/issueforproduction1.bg6Fx4u1.png",s="/minigame-unity-webgl-transform/assets/issueforproduction2.DBTokemQ.png",n="/minigame-unity-webgl-transform/assets/issueforproduction3.CSZPVLs2.png",l="/minigame-unity-webgl-transform/assets/issueforproduction4.BR2EWzID.png",x=JSON.parse('{"title":"现网错误日志上报与排查","description":"","frontmatter":{},"headers":[],"relativePath":"Design/IssueForProduction.md","filePath":"Design/IssueForProduction.md"}'),p={name:"Design/IssueForProduction.md"},c=e('当游戏发布到现网时,开发者需要收集玩家遇到的错误、异常等问题并进行排查原因,本文阐述在微信小游戏环境的最佳实践。 开发者可通过三种途径收集到游戏异常数据:
数据入口:MP平台-用户反馈
当玩家游戏中出现问题时,进行功能反馈将会提交“用户反馈日志“,开发者可以在后台下载到对应数据:
该功能需要两个必要条件:
玩家提交反馈
开发者埋点打印日志
数据入口:MP平台-开发管理-实时日志
实时日志为帮助小程序开发者快捷地排查小程序漏洞、定位问题.
',12),_=e('但需要开发者上报游戏关键节点信息与异常日志。
数据入口:MP平台-开发管理-错误日志
微信小游戏框架会在顶层监控到任何未捕捉的JS异常。
使用Unity WebGL转换方案的游戏通常会有这几种错误会产生:
Unity微信小游戏首次启动会花费较长的加载时间,这段等待期间游戏与玩家之间没有更多的交互,这是新用户的留存率影响的重要因素,微信小游戏希望能够提供一些更早的交互行为来提升这段等待空窗期的用户访问体验,为游戏的主逻辑争取更多的下载、加载时间。由此推出「启动剧情」能力,对于希望进一步提升游戏启动留存的开发者可以基于该能力精心设计用于“迎新”的剧情内容,进而提升玩家的代入感与游戏的顺畅体验。
<等待更多优秀游戏作品入驻>
演示工程源码 由于启动剧情为Unity启动加载耗时过久而推出的能力,因此主要配置由 JavaScript 脚本实现(早于WASM初始化)。
剧本设计请阅读 启动剧情剧本自助设计工具及文档 完成设计与调试;
剧本产物:资源目录 launchOperaPlay
。
Assets/WX-WASM-SDK-V2/Runtime/wechat-default
目录;launchOperaPlay
资源放到 wechat-default
目录中;wechat-default/game.js
文件,该文件是 JavaScript 运行的入口文件,在文件底部增加启动剧情初始化配置。// game.js
+
+... // 原有的代码
+
+// 底部增加启动剧情配置
+// launchOperaInit 是用于初始化剧情的回调事件
+// 配置工作需要在该回调中使用「同步」方式完成,请勿使用异步函数
+GameGlobal.events.on("launchOperaInit", (operaHandler) => {
+
+ // 如需读取本地缓存请使用 getStorageSync 读取,请勿使用异步方式
+ // 如需异步请查阅「基于异步干预剧情发展」
+ let play = true;
+ try {
+ var value = wx.getStorageSync('launchOperaLocalDataXXX'); // 自行管理的本地缓存 Key-Value
+ if (value) { // 本地有特定缓存标识意味已经不是首次访问可以不播放
+ play = false;
+ }
+ } catch (e) { }
+
+ // 合理位置标记为非新用户,也可以在 C# 侧完成标记
+ wx.setStorageSync('launchOperaLocalDataXXX', { anydata: 0 });
+
+ // 开始配置启动剧情
+ operaHandler.config = { // 配置本地剧本路径,若 playPath 文件不存在或读取失败则自动放弃启动剧情
+ playPath: play ? '/launchOperaPlay/operaPlay.obj' : null,
+ }
+
+ // 注册一些其他的启动剧情事件回调
+ operaHandler.onEnd((logger) => {
+ console.log('剧情播放结束');
+ })
+
+ operaHandler.onErr((err) => {
+ console.log('发生异常');
+ operaHandler.end(); // 发生异常时强制结束,避免用户无法退出剧情插件模式
+ })
+
+ // 弱网处理
+ operaHandler.onWeakNetwork((info) => {
+
+ })
+
+});
初始化期间可以同步读取本地资源简单判断是否需要播放剧情,但对于有网络存档的游戏而言,显然不是可靠的判断新用户的方案(用户新设备或本地缓存丢失时也将判定为新用户),这将涉及到异步方式来干预启动剧情插件的工作。异步由于存在不确定的结果返回时间,游戏的启动自然不能始终等待这段空隙,因此在异步结果返回前,我们应让启动剧情插件正常启动,并在后续合理的时机完成故事线的切换。下图给出一种推荐的做法:
我们可以看到,默认的剧情将固定播放一段大约3~5秒钟的启动动画(可以是游戏厂家Logo、防沉迷提醒等),在3~5秒期间 JavaScript 脚本尝试用一些途径来确定后续的剧情发展(可以通过网络交互、本地读取等),当确认后,启动剧情插件允许配置相关变量进而干预剧情发展。 值得注意的是,异步的获取时间明显是不可控的,因此是有可能在5秒的启动动画结束后,仍未得到期望的结果,因此推荐的设计是默认情况下仅播放5秒的启动动画,后续剧情不播放,当5秒内明确了后续播与不播放的选择时,按结果配置,若仍未得到结果,可以按照老用户立即结束剧情即可。具体如何抉择,开发者可以自行设计。
异步干预剧情需要使用到 全局变量 能力,Beta期间请联系研发助手设计剧情期间咨询异步干预能力。
启动剧情是一个持续较长时间的业务内容,这段时间中任何时刻均会有用户离开,因此上报剧情期间用户不同阶段的行为对于分析剧情内容与留存率是非常重要的。启动剧情的“剧本”由开发者定义,因此开发者更清楚一个剧情的不同阶段的时间点,所以需要开发者自行对不同阶段剧情进行上报打点。开发者配置上报后,MP管理后台提供了漏斗图的数据可视化看板,将方便开发者进行数据分析。 有关自定义上报详细内容请参考 启动场景上报分析 。
启动剧情能力工作期间,仍然提供了加载进度外显能力,这有助于在剧情播放期间通过截图方式反馈一些加载进度信息,默认情况下位于小游戏底部区域,如图所示:
启动剧情外显进度条默认为用户开启,并且进度条前70%固定为Unity小游戏封面启动进度,开发者可以自行补充后30%进度的显示,若开发者未定义后30%显示进度则启动剧情插件将在首资源包与WASM初始化完成后以平滑动画完成100%进度显示。
如需关闭/样式调整外显进度条,如下配置:
GameGlobal.event.on("launchOperaInit", (operaHandler) => {
+
+ // other codes...
+
+ // 配置外显进度条
+ operaHandler.config = {
+ progressStyle: { // 外显进度条配置,所有配置项均可缺省,以下为默认值
+ position: 1, // 0 顶部 1 底部
+ hidden: false, // 是否隐藏
+ color: '#FFFFFF', // 进度条颜色
+ backgroundColor: '#000000', // 进度条背景颜色
+ height: 3, // 进度条高度
+ },
+ useCustomProgress: true, // 声明控制后30%显示,默认不控制将以动画自动补间
+ }
+
+});
如开启 useCustomProgress
则可在游戏侧完成控制
launchOpera.percentage = 0.6; // 开发者输入 .0~1.0 浮点数,对应控制剩余 30%
启动剧情通常以视频内容呈现为主,网络流畅度对用户体验是存在直接关系,除了开发者需要确保使用可靠的CDN服务托管视频资源确保足够的输出带宽,用户的实际网络也是影响的重要因素。微信小游戏启动剧情对可能影响用户体验的弱网情况做了相应的回调事件,也对网络情况做了三个级别的分级,请开发者对弱网的反馈同样做出合理的处理提升用户体验。
弱网级别:
请参阅 .onWeakNetwork API描述。
启动剧情的运行环境主要以 JavaScript 为主,当然我们也提供了部分 C# 侧需要用到的访问接口。JavaScript 侧指的是导出目录中 minigame
文件夹中的脚本,这是微信开发者工具打开的脚本目录,minigame/game.js
是整个游戏客户端启动的入口,我们通常也是从该入口进行能力迭代。不过值得注意的是,minigame
目录是导出产物,在重新导出游戏时将会被覆盖,所以正确的修改目录应该位于 Assets/WX-WASM-SDK-V2/Runtime/wechat-default
目录中,这里是导出 minigame
的模板文件,并且能够跟随项目Git等代码版本托管迭代。
C# 侧指的是游戏在 Unity 环境中的函数调用,区别于 JavaScript 他的时机将更晚,因为 C# 侧需要等待 WASM 准备充分(首场景加载完成)后才能够进行一系列的函数调用,因此配置性的操作是不能此完成(请在 JavaScript 完成),当剧情启动并给到充分的 WASM 启动后,C# 将得到一些信息反馈,如:何时结束剧情、外显进度条的进度设置等。
在 JavaScript 中除了 launchOperaInit
回调函数参数中可获得句柄外, 全局变量 GameGlobal.launchOpera
可以让开发者在任意位置访问到控制句柄;
只读属性,获得当前剧情插件运行状态,true
代表正在播放剧情,false
为未运行或已播放结束资源析构。
console.log(GameGlobal.launchOpera.running); // true or false
在初始化期间对启动剧情组件进行相关配置。
GameGlobal.launchOpera.config = {
+ playPath: '', // 可选,剧本文件路径,填写该项则意味开启启动剧情
+ progressStyle: { // 外显进度条配置,所有配置项均可缺省,以下为默认值
+ position: 1, // 0 顶部 1 底部
+ hidden: false, // 是否隐藏
+ color: '#FFFFFF', // 进度条颜色
+ backgroundColor: '#000000', // 进度条背景颜色
+ height: 3, // 进度条高度
+ },
+ useCustomProgress: false, // 是否接入自定义外显进度条
+}
提前结束启动剧情。
注册当剧情结束时的回调事件。
当产生该回调时意味着启动剧情组件资源已经完全析构,同时自动释放注册的事件(如 .onErr 、.onEnd),无需开发手动释放。
注销当剧情结束时配置的回调事件。
注册当发生异常时的回调事件。
引发异常的可能是:剧本文件读取失败、剧本与启动剧情插件版本不兼容、插件环境异常、CDN视频资源播放失败等。
为避免发生异常时用户无法退出启动剧情插件,推荐开发者在 onErr 强制结束启动剧情。
launchOpera.onErr((err) => {
+ launchOpera.end(); // 强制结束
+});
注销当发生异常时的回调事件。
当发生1-2级弱网情况时发生的回调事件。
一种推荐的配置:
launchOpera.onWeakNetwork((info) => {
+ /**
+ * info 结构:
+ * interface info {
+ * level: number; // 弱网级别
+ * url: string; // 产生本次回调的远程资源url
+ * }
+ */
+ if (info.level == 1) {
+ wx.showToast({
+ title: '网络较弱正在缓冲...',
+ icon: 'none',
+ });
+ // 使用 GlobalVar 显示跳过/退出按钮
+ // code...
+ } else { // 不是 level 1 则为 level 2
+ wx.showToast({
+ title: '网络较差,以为您跳过剧情',
+ icon: 'none',
+ });
+ launchOpera.end(); // 强制结束
+ }
+});
注销当发生弱网情况时的回调事件。
设置启动剧情全局变量值。
读取启动剧情全局变量值。
当启动剧情全局变量变化时回调。
注销启动剧情全局变量变化时回调。
var launchOperaHandler = WX.GetLaunchOperaHandler();
当开启自定义外显进度条时(useCustomProgress)可控制进度条进度,value 接受 .0 ~ 1.0 区间浮点数,对应外显进度条的 70% ~ 100% 进度。
获得当前剧情插件运行状态,true
代表正在播放剧情,false
为未运行或已播放结束资源析构。
提前结束启动剧情。
注册当剧情结束时的回调事件。
由于 C# 代码启动较晚,如果在开发者注册时剧情已经结束,则在注册该方法时会立即产生回调,注册的回调只会产生1次。
// On LaunchOpera End
+WX.GetLaunchOperaHandler().onEnd((status) =>
+{
+ WX.ShowToast(new ShowToastOption()
+ {
+ title = "C#(WASM) received the ending callback event!",
+ icon = "none",
+ });
+});
注销当剧情结束时配置的回调事件。
设置启动剧情全局变量值。
读取启动剧情全局变量值。
`,97),p=[e];function k(r,E,d,o,c,g){return i(),a("div",null,p)}const b=s(t,[["render",k]]);export{u as __pageData,b as default}; diff --git a/assets/Design_LaunchOpera.md.DckyZBgK.lean.js b/assets/Design_LaunchOpera.md.DckyZBgK.lean.js new file mode 100644 index 00000000..fe8ce138 --- /dev/null +++ b/assets/Design_LaunchOpera.md.DckyZBgK.lean.js @@ -0,0 +1 @@ +import{_ as s,c as a,o as i,a4 as n}from"./chunks/framework.CzhHXMZi.js";const l="/minigame-unity-webgl-transform/assets/image-0.j3jmWdo-.png",h="/minigame-unity-webgl-transform/assets/image-1.BvWojOYk.png",u=JSON.parse('{"title":"启动剧情(Beta)","description":"","frontmatter":{},"headers":[],"relativePath":"Design/LaunchOpera.md","filePath":"Design/LaunchOpera.md"}'),t={name:"Design/LaunchOpera.md"},e=n("",97),p=[e];function k(r,E,d,o,c,g){return i(),a("div",null,p)}const b=s(t,[["render",k]]);export{u as __pageData,b as default}; diff --git a/assets/Design_OpenData.md.BG3v4AR0.js b/assets/Design_OpenData.md.BG3v4AR0.js new file mode 100644 index 00000000..160ae1a2 --- /dev/null +++ b/assets/Design_OpenData.md.BG3v4AR0.js @@ -0,0 +1,87 @@ +import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.CzhHXMZi.js";const t="/minigame-unity-webgl-transform/assets/opendataframework.2OxzAkk1.png",h="/minigame-unity-webgl-transform/assets/o2.BiHxPfHa.png",e="/minigame-unity-webgl-transform/assets/opendata.BgWhdjkg.png",l="/minigame-unity-webgl-transform/assets/demo1.BsKsD89o.jpeg",p="/minigame-unity-webgl-transform/assets/demo2.ByJUMFjf.jpeg",k="/minigame-unity-webgl-transform/assets/demo3.Bj8Y-kOy.jpeg",r="/minigame-unity-webgl-transform/assets/demo6.BEnu5duc.jpeg",E="/minigame-unity-webgl-transform/assets/demo7.BJ_h8aov.jpeg",d="/minigame-unity-webgl-transform/assets/demo4.D7PXjFbO.jpeg",g="/minigame-unity-webgl-transform/assets/demo5.jD5F1kVF.jpeg",w=JSON.parse('{"title":"Unity中如何展示排行榜这类微信关系数据","description":"","frontmatter":{},"headers":[],"relativePath":"Design/OpenData.md","filePath":"Design/OpenData.md"}'),o={name:"Design/OpenData.md"},y=n('小游戏提供了一系列接口获取好友关系链数据,为了安全,绝大部分接口都只能在开放数据域内调用。
开放数据域虽然乍一看有点复杂,但只需要核心理解几个点即可:
Unity 里面要实现 sharedCanvas 的绘制,核心在于 hook Unity 的渲染,完整的原理为:
在游戏需要展示的地方创建一个 RawImage,其中 Texture 属性自己选择透明的图片即可,后续展示时会被动态替换。因为unity纹理与 Web 的绘制存在倒立的差异,请将先将 rotation的x 设置为180,即让 UI控件延X轴旋转180度
再调整到游戏中合适的位置,如下图
WX.ShowOpenData
WX.ShowOpenData(rawImage.texture, x, y, width, height);
其中 :
WX.ShowOpenData 最终会调用 minigame/unity-sdk/open-data.js 内的 WXShowOpenData 方法,核心是三个作用:
openDataContext.postMessage({
+ type: "WXRender",
+ x: x,
+ y: y,
+ width: width,
+ height: height,
+ devicePixelRatio: window.devicePixelRatio,
+});
WX.HideOpenData
这一步非常重要,如果仅仅在 Unity 侧隐藏了 RawImage 而没有调用 WX.HideOpenData,很可能导致排行榜关闭之后文理错乱,比如有些地方的纹理变成了排行榜对应的纹理。
如果需要在 Unity 中向开放域页面传递数据,可以调用WX.GetOpenDataContext
,如下代码:
[System.Serializable]
+public class OpenDataMessage
+{
+ // type 用于表明时间类型
+ public string type;
+}
+
+OpenDataMessage msgData = new OpenDataMessage();
+msgData.type = "showFriendsRank";
+string msg = JsonUtility.ToJson(msgData);
+WX.GetOpenDataContext().PostMessage(msg);
开放域JS代码可以通过:
wx.onMessage(data => {
+ console.log("[WX OpenData] onMessage", data);
+
+ if (typeof data === "string") {
+ try {
+ data = JSON.parse(data);
+ } catch (e) {
+ console.error("[WX OpenData] onMessage data is not a object");
+ return;
+ }
+ }
+
+ if (data.type === 'showFriendsRank') {
+ // 执行好友排行榜渲染
+ }
+});
这一步会做两个事情:
开放数据域的开发和普通小游戏并无区别,暂时只能通过 js 来开发,对技术选型并无要求,可以不依赖任何引擎调用 Canvas2D API 执行渲染,但如果需要事件点击、滚动列表等处理,就会显得很麻烦;也可以选择完整的 JS 游戏引擎比如 Cocos,但这会使得代码包明显增大进而影响启动速度。
因此插件内置的示例采用的是微信自研的轻量级渲染引擎,压缩后只有几十k,这需要你掌握一些简单的 Web 开发知识,包括 Flex布局、CSS,参照示例修修改改很快能够上手。
可以参考Demo/Ranking下面的Unity工程。插件导出的 open-data 已经是一个比较功能完备的工程,进行简单的魔改就能够满足需求。
void ShowOpenData()
+{
+ RankMask.SetActive(true);
+ RankingBox.SetActive(true);
+ //
+ // 注意这里传x,y,width,height是为了点击区域能正确点击,x,y 是距离屏幕左上角的距离,宽度传 (int)RankBody.rectTransform.rect.width是在canvas的UI Scale Mode为 Constant Pixel Size的情况下设置的。
+ /**
+ * 如果父元素占满整个窗口的话,pivot 设置为(0,0),rotation设置为180,则左上角就是离屏幕的距离
+ * 注意这里传x,y,width,height是为了点击区域能正确点击,因为开放数据域并不是使用 Unity 进行渲染而是可以选择任意第三方渲染引擎
+ * 所以开放数据域名要正确处理好事件处理,就需要明确告诉开放数据域,排行榜所在的纹理绘制在屏幕中的物理坐标系
+ * 比如 iPhone Xs Max 的物理尺寸是 414 * 896,如果排行榜被绘制在屏幕中央且物理尺寸为 200 * 200,那么这里的 x,y,width,height应当是 107,348,200,200
+ * x,y 是距离屏幕左上角的距离,宽度传 (int)RankBody.rectTransform.rect.width是在canvas的UI Scale Mode为 Constant Pixel Size的情况下设置的
+ * 如果是Scale With Screen Size,且设置为以宽度作为缩放,则要这要做一下换算,比如canavs宽度为960,rawImage设置为200 则需要根据 referenceResolution 做一些换算
+ * 不过不管是什么屏幕适配模式,这里的目的就是为了算出 RawImage 在屏幕中绝对的位置和尺寸
+ */
+
+ CanvasScaler scaler = gameObject.GetComponent<CanvasScaler>();
+ var referenceResolution = scaler.referenceResolution;
+ var p = RankBody.transform.position;
+
+ WX.ShowOpenData(RankBody.texture, (int)p.x, Screen.height - (int)p.y, (int)((Screen.width / referenceResolution.x) * RankBody.rectTransform.rect.width), (int)((Screen.width / referenceResolution.x) * RankBody.rectTransform.rect.height));
+}
OpenDataMessage msgData = new OpenDataMessage();
+msgData.type = "showFriendsRank";
+
+string msg = JsonUtility.ToJson(msgData);
+WX.GetOpenDataContext().PostMessage(msg);
整体流程示意:
/**
+ * 使用群排行功能需要特殊设置分享功能,详情可见链接
+ * https://developers.weixin.qq.com/minigame/dev/guide/open-ability/share/share.html
+ */
+WX.UpdateShareMenu(new UpdateShareMenuOption()
+{
+ withShareTicket = true,
+ isPrivateMessage = true,
+});
WX.ShareAppMessage(new ShareAppMessageOption()
+{
+ title = "最强战力排行榜!谁是第一?",
+ query = "minigame_action=show_group_list",
+ imageUrl = "https://mmgame.qpic.cn/image/5f9144af9f0e32d50fb878e5256d669fa1ae6fdec77550849bfee137be995d18/0",
+});
WX.OnShow((OnShowCallbackResult res) =>
+{
+ string shareTicket = res.shareTicket;
+ Dictionary<string, string> query = res.query;
+
+ if (!string.IsNullOrEmpty(shareTicket) && query != null && query["minigame_action"] == "show_group_list")
+ {
+ OpenDataMessage msgData = new OpenDataMessage();
+ msgData.type = "showGroupFriendsRank";
+ msgData.shareTicket = shareTicket;
+
+ string msg = JsonUtility.ToJson(msgData);
+
+ ShowOpenData();
+ WX.GetOpenDataContext().PostMessage(msg);
+ }
+});
整体流程示意:
Q1. 为什么第一次调用 WX.ShowOpenData 之后画面先黑一下再展示排行榜?
A1. WX.ShowOpenData 在 openDataContext.postMessage WXRender 的事件之后立马就会开始 hook Unity 的渲染,如果开放数据域在监听到 WXRender 事件之后没有任何渲染行为,那么 sharedCanvas 纹理就还没有准备好,Unity 侧就可能出现黑一下的情况,解决办法是保证监听到 WXRender 事件之后有个同步的渲染行为,比如绘制个文案”好友数据加载中..."。
Q2. 为什么我关闭排行榜之后界面上有些问题错乱了?
A2. 基本上只可能是没调用 WX.HideOpenData,建议 WX.HideOpenData 打些日志来辅佐排查。
Q3. 为什么开放数据域滚动事件不生效?
A4. WX.ShowOpenData(rawImage.texture, x, y, width, height)
的后面四个参数,核心目的是告诉开放数据域 sharedCanvas 最终被绘制在了屏幕的位置和尺寸,开放数据域才能够正确处理事件监听,遇到事件不生效的问题,首先排查传进来的参数是否符合预期,比如 x / y 不应该是负数。
Unity WebGL游戏通常比普通H5(JS)游戏占用更大的内存,在操作系统的控制策略下超出阈值时非常容易被OOM。
为了提高游戏在中低端机型的稳定性,内存优化极为重要。那么,多大的内存是合理的呢? 我们建议内存峰值控制在以下范围(性能评估标准):
相对而言,Android机型的内存更为宽松。
iOS低档机为iPhone 6sp/7/8等RAM 2G机型为主,中高档机为iPhone 7P/8P/iPhoneX/iPhone11等RAM 3G或以上机型。
Unity WebGL内存结构可先参考:
Unity博客:了解 Unity WebGL 中的内存 (Understanding Memory in Unity WebGL)
Unity博客:Unity WebGL 内存:Unity 堆 (Unity WebGL Memory: The Unity Heap)
',12),f=i('适配在小游戏后,小游戏进程也就成为了“容器”,虽然不再是标准的浏览器,但内存组成结构与上图基本一致,典型游戏的内存占用如下图所示:
基础库+Canvas:在小游戏环境中并不存在DOM,但依然会存在一些基本消耗,比如小游戏公共库,Canvas画布等。典型地,小游戏公共库约占用内存100~150MB,Canvas 画布与设备物理分辨率相关,比如iPhone 11 Promax占用约80MB。
Unity Heap: 托管堆、本机堆与原生插件底层内存。举例,游戏逻辑分配的C#对象等托管内存、Unity管理的AssetBundle和场景结构等本机内存、第三方原生插件(如lua)调用的malloc分配。
WASM编译: 代码编译与运行时指令优化产生的内存,在Android v8、iOS JavascriptCore中还需要大量内存进行JIT优化
GPU内存:纹理或模型Upload GPU之后的显存占用, 由于Unity2021之前不支持压缩纹理,纹理内存会造成明显膨胀。
音频:Unity将音频传递给容器(浏览器或小游戏)后,播放音频时将占用的内存。目前UnityAudio将自动适配微信小游戏,特别地请避免使用fmod播放长音频。
其他:
我们从大到小各个角度去监控和分析游戏的内存情况:
进程级别: Perfdog、Android Studio、 Mac Xcode Instrument
UnityHeap(CPU主内存): 性能面板、ProfilingMemory、JavaScript Heap
引擎与资源:UnityProfiler
查看总内存时,我们需要先确定监控的小游戏进程名称:
使用“Activity Monitor”,选择对应的设备-all processes-捕捉,即可看到所有进程的CPU与内存情况.
使用Perfdog选择对应的设置-进程名,即可看到相关性能数据,iOS设备应以紫色的XcodeMemory为准。
UnityHeap非常关键,典型由以下几部分组成:
分析手段:
每项指标有三个数值:当前帧、最小值、最大值。
通常而言:MonoHeap + NativeReserverd + 原生插件内存 = DynamicMemory, 因此开发者需要关注这几部分内存。
Unity引擎视角:
MonoHeapReserved: 托管堆的内存预留内存
MonoHeap:托管堆(如C#业务逻辑)当前的内存使用量
NativeReserverd:本机堆(Native)内存分配峰值
NativeUnused:本机堆(Native)空闲内存值
NativeAllocated:本机堆(Native)当前的内存使用量
注意:第三方原生插件(如lua)分配内存并未呈现,需开发者自行分析。
底层分配器视角:
底层分配器:
ProfilingMemory可以分析UnityHeap底层分配器的分配细节,任何分配都会产生记录,因此我们可以通过该能力分析更详细具体的分配行为。
关于该能力的使用请查阅使用ProfilingMemory分析内存
当发现UnityHeap(尤其是Native)占用比较高时,可通过UnityProfiler进一步分析问题所在。关于该工具在微信小游戏的使用请查阅使用 Unity Profiler 性能调优,推荐使用Unity InstantGame版本增强的Profiler功能,下载地址请查阅推荐引擎版本。
由于Unity WebGL是托管在浏览器环境中,因此JavaScript Heap包含了大部分(并非全部)我们关注的内存, 通常我们可以使用浏览器自带的内存工具。 但需要注意的是JavaScript Heap通常无法看出具体内存使用,发现该部分内存明显大于我们预留的UnityHeap,应检查是否有使用Unity Cache进行文件缓存,务必避免这样使用。
计算公式: 小游戏基础库 + Cavnas + 编译内存 + UnityHeap + Gfx显存 + 音频 + JavaScript内存。 UnityHeap = max(托管/Mono内存) + max(Native/Reserved内存 + C原生代码内存)
以iOS高性能模式为例,一款代码(导出目录/webgl/Build/xxx.code.unityweb或code.wasm)大小为30MB的游戏占用内存为: 小游戏基础库(130MB) + Cavnas(70MB) + 编译内存(300MB) + UnityHeap + Gfx显存 + 音频 + JavaScript(通常<100MB)。
假如游戏需要支持低档机型,将内存控制到1G以内,业务侧(UnityHeap, Gfx显存,音频,JavaScript)需控制在500MB左右。我们此处给出转换游戏中最容易遇到的内存问题与解决方案,如果开发者遇到内存问题时请逐个排查优化。
Q: 如何解决iOS高性能模式出现内存过大导致游戏关闭,常见优化步骤如何?
Q: 在Unity Profiler看到内存才200MB+,是否代表游戏内存无问题
Q: 转换面板设置内存值多少合适?
Unity WebGL是以WebAssebly(WASM)+WebGL为核心的技术方案,运行性能会极大影响可承载的游戏内容玩法。
本文主要介绍Unity WebGL与基于JS引擎的普通H5游戏、原生APP手游之间技术栈导致的性能差异,以及不同系统平台(Android、iOS、Windows PC)之间的性能差异。其次阐述在微信小游戏环境下最佳的性能优化工具与常见优化手段。
CPU性能差异
这是导致了Unity WebGL与APP存在性能差距的最主要因素。通常而言,Unity WebGL是APP手游性能的1/3,开发者应该特别注意CPU侧的性能瓶颈。
可通过Benchmarking Unity performance in WebGL了解Unity不同模块与手游APP的性能差异。
GPU性能差异
因此,两者在实际使用时并不能简单以语言算力对比,需要以实测游戏为准。
由于Unity WebGL的性能无法完全达到原生APP的性能水平,开发者需要根据不同品类的游戏建立不同的最低机型要求和流畅度标准。 建议:
详细的基准机型与性能要求可参考性能评估标准,微信小游戏平台对上线无严格的性能要求,需要开发者根据自身游戏商业化要求制定。
微信小游戏请使用 Android CPU Profiler 性能调优,在勾选Profile-funcs选项后,使用工具在真机上获取Profile数据以分析热点函数和性能瓶颈,非常建议开发者熟练使用,无论是启动耗时或运行时流畅分析都非常有用。
Unity Profiler的运行原理是在Unity Editor监听固定端口,Unity WebGL游戏运行时以WebSocket连接并定期发送性能数据。
小游戏云测是使用大量真实的移动设备测试游戏的功能、性能、兼容性。
不用使用XML、JSON解析大文件,尤其是在游戏启动阶段,字符串类型解析器将耗费大量CPU算力与产生GC。比如大型游戏在使用Addressable时catalog文件往往会超过10MB,导致解析过慢而影响启动速度,此时应使用其他资源管理比如AssetBundle来减少资源索引文件大小。同样地,在游戏过程中也尽量避免这类CPU消耗。
Unity WebGL环境的lua不支持JIT,因此需要避免用于重度逻辑。可使用 Android CPU Profiler 性能调优查看LUA的耗时占比。
请参考文档优化物理性能,适当调整Fixed Timestep与 Maximum Allowed Timestep降低计算频率。
由于Unity WebGL是单线程模型,因此耗时长的CPU运算会影响帧率。较为普遍的是AssetBundle加载与Prefab实例化,通过优化逻辑分帧加载可大幅度提升游戏体验。
限制帧率有利于降低设备发热量与提升游戏时长,对帧率不敏感游戏建议使用, 可使用Application.targetFramerate限帧,当帧率为15/30/60使用raf分片处理,其余值使用timer控制。
限制分辨率以一定的画质牺牲来降低对设备消耗,在小游戏平台请勿使用Unity的SetResulution等接口修改分辨率,应使用DevicePixelRatio来控制(仅支持ios、android)。设备默认DevicePixelRatio(最后一列dpi)如下:
如需设置iOS的设备分辨率可以在game.js增加以下代码:
if(wx.getSystemInfoSync().platform == 'ios') window.devicePixelRatio = 2;
在压缩纹理不支持的情况下,纹理会由于需要在CPU中软解为RGB/RGBA32造成巨大的CPU和内存消耗,运行中的这种行为会造成明显的帧率卡顿问题,建议使用压缩纹理优化。
大量DC会造成非常大的CPU压力,当场景渲染物件过多时应该采取适当的措施减少Drawcall
Uinty WebGL的SRP Batcher需要两个先决条件:Unity 2021以上 + WebGL2.0
const debugInfo = gl.getExtension('WEBGL_debug_renderer_info');
+ const vendor = gl.getParameter(debugInfo.UNMASKED_VENDOR_WEBGL);
+ const renderer = gl.getParameter(debugInfo.UNMASKED_RENDERER_WEBGL);
+ console.log(vendor);
+ console.log(renderer);
Unity性能评测标准用于开发者优化游戏性能数据,提升用户体验。评测标准根据小游戏整体的性能数据表现,结合操作系统、机型分档等多种维度建立。
- 性能基线机型并非特定,但建议综合CPU、内存、GPU等选取性能相当的机型
- 更新时间:2023-05-17
档位 | Android参考机型 | iOS参考机型 |
---|---|---|
高档 | ⼩⽶10(⾼通骁⻰865) | iPhone13 |
中档 | VIVO S7(⾼通骁⻰765G)、红米k30 | iPhone11 |
低档 | OPPO r9s(通骁⻰625) | iPhone7/8/X |
Unity小游戏的启动可参考启动流程与时序
定义 | 测量方法 | |
---|---|---|
首资源包 | 游戏首个data资源文件 | 位于导出目录/webgl/md5.webgl.data.unityweb.bin.txt, CDN使用gzip压缩 |
WASM代码 | 游戏代码压缩包 | 位于导出目录/minigame/wasmcode/md5.webgl.wasm.code.unityweb.wasm.br, CDN使用gzip压缩 |
核心资源 | 除首资源包外进入游戏核心玩法所需的资源量 | 业务自定下载,通常为AssetBundle |
CALLMAIN | 引擎和首场景(Loading)初始化 | 通过timelog,或日志查看“CALLMAIN耗时” |
游戏初始化完成 | 引擎和首场景完成,出现首个业务场景 | 通过timelog, 或日志查看“游戏启动耗时” |
游戏可交互完成 | 游戏核心场景完成 | 通常定义为用户可交互的时机,可通过启动留存上报能力上报统计。eg:休闲游戏为核心玩法,RPG游戏为创角 |
内存峰值 | 内存峰值 | 进程内存峰值,测量方法请参考优化Unity WebGL的内存 |
内存Crash运行时长 | 由于内存不足而使小游戏发生Crash时,当前游戏的运行时长,表示游戏的稳定运行时长 | 通过小游戏数据助手查看(仅包含线上用户数据) 数据路径:数据 - 性能分析 - 运行性能 - 内存异常退出分析 |
帧率 | 核心玩法的平均帧率 | 测量5分钟以上游戏核心玩法帧率,取平均值 |
卡顿率 | 核心玩法的平均卡顿率 | 测量5分钟以上游戏核心玩法卡顿率,取平均值 |
能力 | 下载量 |
---|---|
首资源包(gzip压缩后) | <5MB |
WASM代码(br压缩后) | <5MB |
核心玩法资源 | <30MB |
使用网络模拟工具1MB/s条件,使用Unity适配提供TimeLog窗口、运行日志或小游戏云测试获取性能数据。
使用PerfDog测试,PerfDog记录性能数据并上传,取平均值,每种机型测试3组数据再取平均,内存峰值取最大值。
评测标准更新时间:2023-05-17(历史现网标准请查阅文档)
评测标准依赖于 现网真实玩家上报的性能数据 和 人工批量测试数据 统计得出。
阶段 | 重点关注指标 |
---|---|
启动 | 1. 游戏初始化完成耗时 2. 游戏可交互耗时 |
运行 | 1. 内存峰值 2. FPS均值 3. 卡顿率 4. 内存Crash率(iOS) 5. 内存Crash运行时长 |
兼容性问题 | 1. 逻辑异常 2. 黑/白屏 3. JS Error |
分类 | 定义 |
---|---|
重度 | 玩法较复杂,通常包含较多游戏场景或支持多人在线游戏(eg: MMO、SLG品类等) |
中度 | 包含一定养成玩法、内置内购商城等(eg: 模拟经营、卡牌等) |
轻度 | 仅包含简单操作、无养成体系、无内购,以休闲娱乐为主(eg: 棋牌等) |
启动性能
运行性能
重点关注:内存峰值
、GC后内存峰值
、内存Crash率
、内存Crash运行时长
启动性能
运行性能
',35),l=[h];function c(m,b,g,p,u,f){return a(),e("div",null,l)}const y=t(s,[["render",c]]);export{q as __pageData,y as default}; diff --git a/assets/Design_PerfMeasure.md.BU_sW3Dr.lean.js b/assets/Design_PerfMeasure.md.BU_sW3Dr.lean.js new file mode 100644 index 00000000..5903430a --- /dev/null +++ b/assets/Design_PerfMeasure.md.BU_sW3Dr.lean.js @@ -0,0 +1 @@ +import{_ as t,c as e,o as a,a4 as r}from"./chunks/framework.CzhHXMZi.js";const d="/minigame-unity-webgl-transform/assets/ios_start_performance.DKHEzdfl.png",o="/minigame-unity-webgl-transform/assets/ios_running_performance.C2YhXpAi.png",n="/minigame-unity-webgl-transform/assets/android_start_performance.B_mgYBnj.png",i="/minigame-unity-webgl-transform/assets/android_running_performance.0A9W-niz.png",q=JSON.parse('{"title":"Unity WebGL小游戏适配方案性能标准","description":"","frontmatter":{},"headers":[],"relativePath":"Design/PerfMeasure.md","filePath":"Design/PerfMeasure.md"}'),s={name:"Design/PerfMeasure.md"},h=r("",35),l=[h];function c(m,b,g,p,u,f){return a(),e("div",null,l)}const y=t(s,[["render",c]]);export{q as __pageData,y as default}; diff --git a/assets/Design_PerfMeasure_old.md.Ctegrx3B.js b/assets/Design_PerfMeasure_old.md.Ctegrx3B.js new file mode 100644 index 00000000..4db64828 --- /dev/null +++ b/assets/Design_PerfMeasure_old.md.Ctegrx3B.js @@ -0,0 +1 @@ +import{_ as t,c as d,o as a,a4 as e}from"./chunks/framework.CzhHXMZi.js";const u=JSON.parse('{"title":"Unity WebGL小游戏适配方案性能标准","description":"","frontmatter":{},"headers":[],"relativePath":"Design/PerfMeasure_old.md","filePath":"Design/PerfMeasure_old.md"}'),r={name:"Design/PerfMeasure_old.md"},h=e('性能评测标准希望能引导开发者优化相关性能数据,提升用户体验。
从小游戏的运行周期来看,主要由启动和运行两个阶段产生性能问题。
启动阶段:启动时长,该数据将显著影响用户打开留存率 运行阶段:内存峰值、流畅度、CPU占用、网络等 其他兼容性问题,包括逻辑异常、黑屏等严重问题
机型档位
能力 | Android参考机型 | iOS参考机型 |
---|---|---|
高档 | ⼩⽶10(⾼通骁⻰865) | iPhone13 |
中档 | VIVO S7(⾼通骁⻰765G) 红米k30 | iPhone11 |
低档 | OPPO r9s(通骁⻰625) | iPhone7/8/X |
指标与测量方法
Unity小游戏的启动可参考启动流程与时序
定义 | 测量方法 | |
---|---|---|
首资源包 | 游戏首个data资源文件 | 位于导出目录/webgl/md5.webgl.data.unityweb.bin.txt, CDN使用gzip压缩 |
WASM代码 | 游戏代码压缩包 | 位于导出目录/minigame/wasmcode/md5.webgl.wasm.code.unityweb.wasm.br, CDN使用gzip压缩 |
核心资源 | 除首资源包外进入游戏核心玩法所需的资源量 | 业务自定下载,通常为AssetBundle |
callmain | 引擎和首场景(Loading)初始化 | 通过timelog,或日志查看“callMain耗时” |
游戏初始化完成 | 引擎和手场景完成,出现首个业务场景 | 通过timelog, 或日志查看“游戏启动耗时” |
游戏可交互完成 | 游戏核心场景完成 | 业务自定义,典型地:休闲游戏为核心玩法,RPG游戏为创角 |
内存 | 内存峰值 | 进程内存峰值,测量方法请参考优化Unity WebGL的内存 |
帧率 | 核心玩法的平均帧率 | 测量5分钟以上游戏核心玩法帧率,取平均值 |
启动性能: 使用网络模拟工具1MB/s条件,使用Unity适配提供TimeLog窗口或运行日志获取性能数据。
运行性能: 使用PerfDog测试,PerfDog记录性能数据并上传,取平均值,每种机型测试3组数据再取平均,内存峰值取最大值。
能力 | 下载量 |
---|---|
首包资源(gzip压缩后) | <5M |
WASM代码(br压缩后) | <5M |
核心玩法资源 | <30MB |
高档机 | 中档机 | 低档机 | |
---|---|---|---|
首资源包下载 | <3s | <4s | <5s |
callmain | <3s | <5s | <7s |
游戏初始化完成 | <8s | <10s | <12s |
游戏可交互完成 | <12s | <15s | <20s |
运行性能
高档机 | 中档机 | 低档机 | |
---|---|---|---|
内存 | <1.5G | <1.2G | <1G |
帧率 | >50 | >40 | >30 |
高档机 | 中档机 | 低档机 | |
---|---|---|---|
首资源包下载 | <3s | <4s | <5s |
callmain | <2s | <4s | <5s |
游戏初始化完成 | <6s | <8s | <10s |
游戏可交互完成 | <10s | <12s | <15s |
运行性能
高档机 | 中档机 | 低档机 | |
---|---|---|---|
内存 | <1.4G | <1.2G | <800MB |
帧率 | >50 | >40 | >30 |
Unity WebGL导出形式相对于原生APP应用,需要开发者更关注性能与体验调优。有以下几点原因:
因此,相对于原生APP,无论从启动还是运行上我们都需要做进一步性能优化。
根据平台在不同游戏类型/机型下的评测,我们给出Unity WebGL小游戏可以参照的的性能评估标准,开发者依此对游戏的启动与运行性能进行调优。
更多信息请参考:
更多信息请阅读:
更多信息请阅读:
更多信息请阅读:
更多信息请阅读:
',28),o=[r];function n(h,s,d,u,m,p){return a(),l("div",null,o)}const _=i(t,[["render",n]]);export{c as __pageData,_ as default}; diff --git a/assets/Design_PerfOptimization.md.CDt1GD6q.lean.js b/assets/Design_PerfOptimization.md.CDt1GD6q.lean.js new file mode 100644 index 00000000..a4702acf --- /dev/null +++ b/assets/Design_PerfOptimization.md.CDt1GD6q.lean.js @@ -0,0 +1 @@ +import{_ as i,c as l,o as a,a4 as e}from"./chunks/framework.CzhHXMZi.js";const c=JSON.parse('{"title":"性能优化总览","description":"","frontmatter":{},"headers":[],"relativePath":"Design/PerfOptimization.md","filePath":"Design/PerfOptimization.md"}'),t={name:"Design/PerfOptimization.md"},r=e("",28),o=[r];function n(h,s,d,u,m,p){return a(),l("div",null,o)}const _=i(t,[["render",n]]);export{c as __pageData,_ as default}; diff --git a/assets/Design_PerformanceMonitor.md.BHfyGixH.js b/assets/Design_PerformanceMonitor.md.BHfyGixH.js new file mode 100644 index 00000000..ab4e1299 --- /dev/null +++ b/assets/Design_PerformanceMonitor.md.BHfyGixH.js @@ -0,0 +1,79 @@ +import{_ as a,c as s,o as n,a4 as l}from"./chunks/framework.CzhHXMZi.js";const e="/minigame-unity-webgl-transform/assets/monitor-dialog.DkmXCKiX.png",i="/minigame-unity-webgl-transform/assets/monitor-console.DO12gbRg.png",o="/minigame-unity-webgl-transform/assets/detail-log.DbHrWCWi.png",t="/minigame-unity-webgl-transform/assets/network-profile.D4dnTarY.png",C=JSON.parse('{"title":"最佳实践检测工具","description":"","frontmatter":{},"headers":[],"relativePath":"Design/PerformanceMonitor.md","filePath":"Design/PerformanceMonitor.md"}'),p={name:"Design/PerformanceMonitor.md"},c=l(`为了使游戏达到比较好的性能表现,仍需要开发者结合游戏实际情况进行优化。平台针对启动和运行输出了大量优化手段,使用最佳实践检测,可帮助开发者在开发阶段针对问题进行优化
版本要求:转换插件版本 > 202305230000
导出小游戏默认在开发版和体验版开启检测,可通过minigame/unity-namespace.js
修改
// 最佳实践检测配置
+unityNamespace.monitorConfig = {
+ enableMonitor: true, // 是否开启检测(只影响开发版/体验版,线上版本不会检测)
+ fps: 10, // 帧率低于此值的帧会被记录,用于分析长耗时帧,做了限帧的游戏应该适当调低
+ showResultAfterLaunch: true, // 是否一直检测到游戏可交互完成
+ monitorDuration: 30000, // 仅当showResultAfterLaunch=false时有效, 在引擎初始化完成(即callmain)后多长时间停止检测
+}
默认检测条件如上。插件并不知道什么时候检测截止,可选择可交互上报后或在引擎初始化完成(callmain
)后多少ms截止,根据游戏实际情况修改。
有上报游戏可交互WX.ReportGameStart()
的游戏 应该设置showResultAfterLaunch=true
,同时会忽略monitorDuration
的值
未上报游戏可交互上报的游戏 应设置showResultAfterLaunch=false
,此时根据monitorDuration
的值截止检测
优化建议通过弹框提示,详细内容通过vconsole打印
检查框架启动阶段的耗时和资源大小
{
+ assetLoadCost: number; // 首资源包下载耗时,单位ms
+ assetContentLength: number; // 首资源包大小(未压缩原始大小),单位bytes
+ useContentEncoding: boolean; // 首资源包是否开启服务器压缩
+ wasmLoadCost: number; // wasm包下载耗时,ms
+ wasmContentLength: number; // 启动下载的wasm包大小,单位bytes
+ useCodeSplit: boolean; // 是否使用了wasm代码分包
+ callmainCost: number; // 引擎初始化耗时,ms
+}
当提示优化建议时,可采用对应的优化手段
未使用wasm代码分包
useCodeSplit
为false
,未使用wasm代码分包首资源包较大
assetContentLength
超过15 * 1024 * 1024,即未压缩的首资源包超过15MB首资源包未开启服务器压缩
useContentEncoding
值为false
,服务器未开启br或gzipcallmain耗时较长,请用安卓cpuprofile分析热点函数
callmainCost>1500
或安卓平台callmainCost>3000
检查预下载列表使用情况,分为引擎初始化完成(callmain
)和检测完成时两个结果
vconsole输出如下:
预下载基本信息: xxx , callmain完成时预下载信息: xxx
。其中xxx为js对象
{
+ loadedCount: number; // 已预下载完成数量
+ loadingCount: number; // 正在预下载数量
+ loadedSizeStr: string; // 已预下载完成大小字符串表示, eg: 10.1MB
+ loadedSize: number; // 已预下载完成大小,bytes
+ hitCacheCount: number; // 命中CDN缓存的数量
+ useH2: boolean; // 是否启用HTTP2
+ useContentEncoding: boolean; // 是否开启了服务器压缩
+ preloadListLength: number; // 预下载资源个数
+}
未使用预下载能力
preloadListLength=0
; 即导出时未配置预下载列表已发起预下载,但未完成,请检查预下载资源是否过大,或是否下载过慢
loadingCount != 0
且 loadedCount = 0
; 表示预下载已发起但未完成预下载资源较小,请将大资源调整到预下载列表顶部
loadedSize < 1 * 1024 * 1024 (1MB)
或停止检测时 loadedSize < 5 * 1024 * 1024 (5MB)
预下载资源个数较多
preloadListLength > 15
;即预下载列表数大于15预下载资源量较大
loadedSize > 20 * 1024 * 1024 (20MB)
;即总预下载大小超过20MB使用wasm代码分包后,检查wasm分包代码的加载时机,加载分包造成的卡顿时长,用来分析分包收集是否合理。若加载时机过早、阻塞时间过长,则需要优化。
tips: 在新包做wasm分包期间可能会频繁提示优化建议
{
+ loadSubWasmPackageStartTime: number; // 开始下载wasm子包的时间,ms
+ loadSubWasmPackageCostTime: number; // (仅安卓)加载子包耗时,ms
+ loadDurationCallmain: boolean; // 是否在引擎初始化期间加载子包
+ maxFetchPendingTime: number; // (仅iOS高性能)最大阻塞时间,ms。iOS高性能加载子包代码时会卡顿
+ costTimeAfterCallmain: number; // 引擎初始化完成后多长时间开始加载子包,ms
+}
wasm子包在callmain期间加载,请使用分包工具继续收集
loadDurationCallmain=true
wasm子包加载时机过早,请使用分包工具继续收集
costTimeAfterCallmain < 30000 (30s)
缺失函数过多,请使用分包工具继续收集
maxFetchPendingTime > 2000
检查可缓存资源配置、CDN配置、并发数数、请求量、资源量
{
+ useH2: boolean, // 是否开启HTTP2.0
+ useContentEncoding: boolean, // 是否开启服务器压缩
+ cacheSettings: boolean, // settings.json是否自动缓存
+ cacheCatalog: boolean, // catalog.json是否自动缓存
+ appendHashToCatalog: boolean, // catalog.json是否带上了hash或其他用于区分版本的信息
+ requestCataHash: boolean, // 是否请求了catalog.hash文件用于资源热更新
+ requestBundleSettings: boolean, // 是否请求了settings.json
+ requestBundleCatalog: boolean, // 是否请求了catalog.json
+ loadCount: number, // 已发起请求数
+ loadedCount: number, // 已完成请求数
+ loadedSizeStr: string, // 请求回包总大小的字符串表示,eg: 10.1MB
+ loadedSize: number, // 请求回包总大小,bytes
+ hitCacheCount: number, // 命中CDN缓存个数
+ cacheableCount: number, // 可自动缓存个数
+ loadFromCacheCount: number, // 使用本地缓存的个数
+ startTime: number, // 首个请求开始时间
+ duration: number, // 监控时长
+ networkTime: number, // 有网络请求的总时长
+ maxLoadingCount: number, // 最大并发数,基于业务侧统计,会大于10个,表示有请求会排队
+ avgLoadingCount: number, // 平均并发数
+ loadedTasks: IBaseRequestInfo[], // 已下载完成请求详细信息
+}
+
+// 请求详细信息如下
+interface IBaseRequestInfo {
+ url: string; // 请求URL
+ startTime: number; // 请求开始时间
+ statusCode?: number; // 服务器状态码
+ enableContentEncoding?: boolean; // 是否开启了服务器压缩
+ endTime?: number; // 请求介绍时间
+ duration?: number; // 请求耗时
+ protocol?: string; // 网络协议,h2或http1.1
+ receivedBytedCount?: number; // 回包大小,bytes
+ hitCache?: boolean; // 是否命中CDN缓存
+ isReadFromCache?: boolean; // 是否使用本地缓存
+ cacheable?: boolean; // 是否自动缓存的资源
+}
未开启http2
useH2=false
未命中CDN缓存
hitCacheCount=0
请勿缓存settings.json
requestBundleSettings=true
且 cacheSettings=true
settings.json
文件用来记录打包配置,不应该缓存到本地。取消此文件的自动缓存,哪些资源会自动缓存可将catalog.json配置为可缓存文件
requestBundleCatalog=true
且 cacheCatalog=false
catalog.json
记录了所有资源文件的描述信息和依赖关系,一般大小较大,推荐缓存到本地,哪些资源会自动缓存catalog.json被缓存且无hash/版本信息, 会导致无法更新
requestBundleCatalog=true
且 cacheCatalog=true
且 appendHashToCatalog=false
catalog.json
缓存到本地若无版本标识,会导致无法更新到最新版本, 缓存规则请勿请求catalog.hash来做资源热更新,小游戏平台不支持
requestCataHash=true
catalog.hash
记录了catalog.json
的hash,用来热更新资源,但小游戏平台不支持,推荐使用catalog.json
文件名带hash的方式来管理catalog版本,参见建议第五点可缓存文件过少,检查缓存配置
cacheableCount < loadCount / 2
,可缓存资源小于总请求数的一半网络并发数过少
avgLoadingCount < 5
,平均并发数小于5网络未充分利用
networkTime / duration < 0.7
, 网络时间占监控时长占比不足70%检查是否有大长帧,标记大长帧出现的位置,辅助定位是cpu耗时还是网络耗时导致启动慢
{
+ frames: string[]; // 长耗时的帧
+ frameCount: number; // 长耗时帧的个数
+ longestFrame: { // 最长帧信息
+ frame: string; // 帧数
+ frameCost: number; // 单帧耗时, ms
+ runtime: number; // 游戏运行时长, ms
+ };
+ frameInfo: IWrongFrame; // 长耗时帧信息
+ totalJankTime: number; // 总卡帧时长, ms
+ currentRuntime: number; // 当前游戏运行时长, ms
+ jankRate: number; // 卡顿率
+}
卡帧问题,均需要使用cpuprofile定位。使用Android CPU Profiler性能调优、使用Unity Profiler性能调优
存在长耗时帧cost=xxxms,runtime=xxxms
longestFrame.frameCost > 1000 (1s)
总卡顿时长xxxms
totalJankTime > 5000 (5s)
卡顿时长占比xx%
jankRate > 0.3
导出选项时勾选"Development Build"与"Autoconnection Profiler"
打开Unity-Window-Analysis-Profile窗口
Unity将自启动监听端口34999等待调试链接,对于WebGL版本会启动websockify.js(用于websocket转发)。 此时,导出的WebGL游戏在浏览器时能自动连接到Unity Profiler。
微信开发者工具小游戏Profile 使用转换脚本导出微信小游戏包并启动小游戏,微信小游戏将自动连接到Unity Profiler
真机调试 Android或iOS启动之后将使用"ws://ip:port"自动连接到“Unity Profiler”, 如果无法连接请关注vConsole输出的IP:Port是否可达。 如果需要手工调整端口可通过修改以下代码:
一般来说,保持端口为54998,如修改端口需重启websocketfy.js: windows: "$UNITY_PATH/Editor/Data/Tools/nodejs/node.exe" "$UNITY_PATH/Editor/Data/PlaybackEngines/WebGLSupport/BuildTools/websockify/websockify.js" 0.0.0.0:port localhost:34999 mac: /Applications/Unity/Hub/Editor/$Verson/Unity.app/Contents/Tools/nodejs/bin/node /Applications/Unity/Hub/Editor/$Verson/PlaybackEngines/WebGLSupport/BuildTools/websockify/websockify.js 0.0.0.0:port localhost:34999 -vv
附录:
',8),c=[p];function d(_,f,u,m,P,y){return s(),r("div",null,c)}const k=e(a,[["render",d]]);export{w as __pageData,k as default}; diff --git a/assets/Design_Profile.md.DdKaV9K4.lean.js b/assets/Design_Profile.md.DdKaV9K4.lean.js new file mode 100644 index 00000000..b0181e7c --- /dev/null +++ b/assets/Design_Profile.md.DdKaV9K4.lean.js @@ -0,0 +1 @@ +import{_ as o,a as t,b as i}from"./chunks/profile3.CffCZqR8.js";import{_ as e,c as r,o as s,a4 as n}from"./chunks/framework.CzhHXMZi.js";const l="/minigame-unity-webgl-transform/assets/profile4.CDVkeqdb.png",w=JSON.parse('{"title":"使用Unity Profiler性能调优","description":"","frontmatter":{},"headers":[],"relativePath":"Design/Profile.md","filePath":"Design/Profile.md"}'),a={name:"Design/Profile.md"},p=n("",8),c=[p];function d(_,f,u,m,P,y){return s(),r("div",null,c)}const k=e(a,[["render",d]]);export{w as __pageData,k as default}; diff --git a/assets/Design_RenderOptimization.md.BElxYZhb.js b/assets/Design_RenderOptimization.md.BElxYZhb.js new file mode 100644 index 00000000..a5d16c7b --- /dev/null +++ b/assets/Design_RenderOptimization.md.BElxYZhb.js @@ -0,0 +1 @@ +import{_ as l,c as i,o as e,a4 as a}from"./chunks/framework.CzhHXMZi.js";const k=JSON.parse('{"title":"RenderOptimization","description":"","frontmatter":{},"headers":[],"relativePath":"Design/RenderOptimization.md","filePath":"Design/RenderOptimization.md"}'),t={name:"Design/RenderOptimization.md"},r=a('WebGL1.0 还是 WebGL2.0
选择哪种渲染管线
线性颜色空间 还是 Gamma 颜色空间
渲染性能优化的一些建议
光照和阴影
材质和Shader
#pragma multi_compile
、#pragma multi_compile_local
、#pragma shader_feature
和shader_feature_local
语句,如果有用不到的关键字要记得删除掉纹理设置
网格和蒙皮
DrawCall 相关
摄像机 Camera
渲染分辨率
后处理
特效
在小游戏环境下,玩家对启动时长与体验非常敏感(尤其从“广告”等买量场景进入的玩家)。开发者往往需要分析玩家从点击到进入游戏核心玩法的整个过程流失率。 Unity Loader的数据统计功能如下:
为了帮助开发者分析广告渠道的留存数据,达到最好的买量效果,Loader提供了上报广告参数的能力,用于区分不同广告位/广告类型/素材类型的数据。
广告买量时,带上广告相关自定义参数,Loader自动上报 eg: adSpaceType=1&adType=1&materialType=1
取值范围:1-200; 默认为0
为了详细统计玩家的流失情况以便开发者进行优化,我们拆分了三个部分。 其中自动上报为Unity Loader自动完成开发者无需关注,但自定义阶段与启动加载完成需开发者主动调用接口进行上报。详细接口可参考C# SDK中的WX.cs,文档可查看启动场景上报分析 及 wx.reportScene
1. 游戏完成所有加载时上报
当游戏完成所有加载阶段,进入核心玩法时(如进入新手引导或大厅)调用
WX.ReportGameStart()
2. 上报当前自定义阶段错误信息
WX.ReportGameSceneError(int sceneId, int errorType, string errStr, string extJsonStr)
sceneId同启动场景上报分析
errorType取值:[0,10000]
示例:
// 假设Loading场景中A资源完成为1001, 需要知道完成的留存率
+ WX.ReportScene(new ReportSceneParams()
+ {
+ sceneId = 1001,
+ costTime = 100,
+ metric = new Dictionary<string, string>()
+ {
+ { "testkey1", "1" },
+ { "testkey2", "2" }
+ },
+ dimension = new Dictionary<string, string>()
+ {
+ { "testkey1", "testvalue1" },
+ { "testkey2", "testvalue2" }
+ },
+ complete = (res) =>
+ {
+ Debug.Log("ReportScene complete" + res);
+ },
+ success = (res) =>
+ {
+ Debug.Log("ReportScene success: " + res);
+ },
+ fail = (res) =>
+ {
+ Debug.Log("ReportScene fail: " + res);
+ }
+ });
+
+ // 所有加载完成,玩家可以交互(如休闲游戏已进入核心玩法、MMO游戏进入创角时), 需要知道留存率
+ WX.ReportGameStart();
从启动时序可以知道Loader启动阶段分为以下五个阶段
当业务侧需要使用Loader启动数据时,可以使用Loader暴露的进度事件上报到自己的系统
tips: 目前只支持js调用
gameManager.onLaunchProgress = (e) => {
+ // e: LaunchEvent
+ // interface LaunchEvent {
+ // type: LaunchEventType;
+ // data: {
+ // costTimeMs: number; // 阶段耗时
+ // runTimeMs: number; // 总耗时
+ // loadDataPackageFromSubpackage: boolean; // 首包资源是否通过小游戏分包加载
+ // isVisible: boolean; // 当前是否处于前台,onShow/onHide
+ // useCodeSplit: boolean; // 是否使用代码分包
+ // isHighPerformance: boolean; // 是否iOS高性能模式
+ // };
+ // }
+ if (e.type === launchEventType.launchPlugin) {
+
+ }
+ if (e.type === launchEventType.loadWasm) {
+
+ }
+ if (e.type === launchEventType.compileWasm) {
+
+ }
+ if (e.type === launchEventType.loadAssets) {
+
+ }
+ if (e.type === launchEventType.readAssets) {
+
+ }
+ if (e.type === launchEventType.prepareGame) {
+
+ }
+}
请注意!需前往【公众平台 - 能力地图 - 生产提效包 - 快适配 】开通后,方可查看数据
数据报表包含Unity Loader自动上报与开发者自定义阶段。关注总体流失漏斗以确定需要优化的方向,同时分阶段的耗时分布有利于帮助我们分析该阶段的对应耗时的用户占比。
数据报表统计分析请参考文档启动场景上报分析-数据分析 进行查看。
注:
转换插件版本<202211101011
(对应Unity Loader版本<1.1.2
),数据统计报表需要建联小游戏研发助手获取。 区别于原生 APP 游戏通常安装与启动时将资源都下载完成,小游戏需要做到“即点即玩”,启动仅能加载少量资源,其余部分都必须放CDN进行延迟加载,如何合理与高效地进行资源按需加载是非常重要的事情。
目前分包将基于 AA/AB 包的按需加载,以及 Unity Instant Game 三种方案。值得注意的是,微信小游戏环境中不支持对本地的 Bundle 进行加载,因此无论哪种方案最终都采用上传 CDN 方式在游戏运行时异步按需下载。
相关手册:AA(Addressable) 进行资源按需加载 、 AB(AssetBundle)进行资源按需加载 、Instant Game 实践指南
AA/AB 包是常规的分包解决方案,关于他们的选择对于轻度游戏来说两者没有特别要求,倒是功能强大的 AA包 使用门槛更低一些,而对于重度游戏,平台目前所反馈到的结论是使用 AB包 的性能要比 AA包 更好,AA包较大项目时生成的未压缩的 catalog 较大,加载效率低,改用 AB包后,效果提升明显。
Instant Game 是由 Unity 官方提供的自动加载方案,有关 Instant Game 详细内容可查阅 Instant Game 实践指南,本节说明三种方案的差异:
常规资源加载方案(AA/AB包) | Instant Game 工具 | |
---|---|---|
技术原理 | 基于 AA/AB 包的异步资源管理 | Unity引擎底层资源异步加载策略 |
引擎版本 | 不限制 | 目前需指定版本 2021.2.5 |
转化人力 | 适中 | 较少/适中 |
懒加载资源类型 | 常见纹理资源 | 纹理、模型、骨骼动画、音频资源 |
自选CDN | 支持 | 不支持(需使用腾讯云CDN服务) |
必要的代码修改 | 通常需要适配 | 较少/达到最佳仍需要 |
首资源包处理 | 通常需要适配 | 默认不需要/达到最佳仍需要 |
选择建议:
不同的游戏所需要的性能不尽相同,转化过程中的复杂度以及关注的侧重点自然也是不同的。游戏开发者可以根据自己游戏的类型进行不同的优化策略来提升实际的游戏体验,本节总结的列举开发者对不同类型的游戏应重点关注的优化内容。
特点:游戏原本发布原生 APP 平台,将游戏资源以 AA/AB 包方式存放于磁盘本地,在游戏运行时适宜的位置进行加载/卸载。
优化建议:
特点:游戏总包体积较小,“关卡”休闲类小游戏等。
优化建议:
特点:游戏较大,但未使用 AA/AB 包方式进行分包管理,或较少使用,场景中必须与非及时资源在启动时一并加载。
优化建议:
为兼容历史团结/Unity版本的使用,微信小游戏团队将SDK分为如下两种模式安装使用。
目前团结引擎、Unity 2019及以后版本推荐使用 Package 方式安装WXSDK。
打开游戏工程
-> 团结/Unity Editor 菜单栏
-> Package Manager
-> 右上方 “+”
-> Add package from git URL
URL地址为:
https://github.com/wechat-miniprogram/minigame-tuanjie-transform-sdk.git
即可完成SDK导入。
对于 Unity 2018 版本引擎使用资源包方式可安装 WXSDK
如果当前版本暂不支持 PackageManager 导入,请 下载UnitySDK 后导入游戏工程中。
我们希望SDK与工程代码节藕,如此一来也更方便开发者的代码版本维护。因此 PackageManager 模式下,微信SDK内容将不再存放在游戏工程的Assets目录中。为兼容需要,仍然会自动在 Assets 目录下创建 WX-WASM-SDK-V2
数据目录,如需保持相关的应用配置应始终保留该目录内容。
常见的情况是发生在如空项目或游戏代码中从未使用WXSDK的任何Runtime能力时,引擎导出项目将微信Runtime包裁剪,解决办法是在游戏合理位置增加对WXSDK的使用即可。 如:
// 无直接的API能力调用可使用读取系统信息等API
+WX.GetSystemInfo(new GetSystemInfoOption()); // 读取SystemInfo
文档为使用Unity WebGL适配小游戏方案的部分上线游戏。
转换案例目的是分享学习,若作者认为不适合分享,请联系小游戏研发助手删除。 如开发者希望分享案例,也可通过小游戏开发助手添加。
超好玩的3D跑酷手游!简单的上手操作,丰富的游戏画面,众多的城市场景,让你爱不释手!
一款独具创新的魔幻三消策略小游戏,神奇的消除战争之旅!带你探索不一样的魔幻体验!
重度MMO品类
重度SLG品类, 3D恐龙自由捕捉
2023年度热门休闲小程序《小小蚁国》,建立你的地下王国!
模拟经营游戏,玩家将体验到富有风险的翡翠原石选石过程,通过切石,设计,抛光的流程获得精美的翡翠雕刻成品,让自己的翡翠珍宝展馆发展壮大,熠熠生辉;在得到成就感的同时收获相关的翡翠知识。
喜欢武侠世界,曾梦想惩恶扬善、和志同道合的伙伴携手闯仗剑走天涯!
由乐动卓越研发的精美3D手游,延续了传统《我叫MT》的经典特色。钓鱼挖矿,外域探险玩法都将为您呈现独一无二的掌中魔幻世界!
Unity WebGL转换的小游戏主要依靠Unity Loader进行初始化,典型的流程如下图所示:
关键过程:
有哪些文件需要放CDN服务器? 首资源包:webgl/ProjectName.data.unityweb.bin.txt 资源分包:Adressable/AssetsBundle生成的文件
资源(data)或资源包是否需每次下载? 为加快二次启动,默认loader再次启动时资源(首包资源或资源分包)将直接使用本地缓存。如需手动删除缓存可在真机中小游戏下拉历史栏将小游戏删除。
微信小游戏具有“即开即用“的特性,手游APP则往往需要较长时间的下载。小游戏玩家对于启动时长更为敏感,因此过长的启动时间将导致用户显著流失。
目前普通小游戏普遍启动时间为7~10s,而如果不经优化的Unity WebGL游戏启动会是该时间的2-3倍以上。我们建议开发者将启动优化作为上线前最为重要的事项。
通过修改unity-namespace.js中hideTimeLogModal为false,显示timelog开发者可以看到小游戏目前的启动首屏时长:
要知道各个阶段的含义,我们必要理解启动流程
小游戏启动主要由三部分影响:
- 首包资源下载
- WASM代码下载和编译
- 引擎初始化与开发者首帧逻辑
建议首屏启动时间控制在5~10s甚至更短。
首包资源(webgl/Build目录下的data文件)主要有以下组成:
可使用AssetStudio查看文件内的所有资源。
首次下载或更新首资源包时,需要在小游戏的启动前期下载,因此文件大小极为影响游戏的启动速度。
- 网络条件绝大部分为wifi或4G(另,微信广告可指定网络条件)
- 玩家平均下载速度约2MB/s
- 微信用户存在不少<300KB/s的低网速玩家
- 务必对首资源包压缩: 转换面板勾选“压缩首资源包” 或 CDN管理后端针对首资源包(后缀.txt)“开启gzip/br压缩“
- 中文显示需要自定义字体,打包在首资源包或Bundle;请尽量使用2~3MB以内的精简字体以免影响游戏启动速度
建议: 务必对首资源包进行压缩传输,使用微信开发者工具的network标签确认传输量,网络传输大小应控制在3~5MB。
WASM分包的大小会直接影响代码下载时长以及程序初始化编译的时间,关于WASM代码对启动速度的影响,开发者需要注意:
- 转换工具会将Unity WebGL包自动进行br压缩(压缩至原code包的20%)
- WASM代码下载与首包资源并行下载,因此占用下载带宽
- WASM编译需要CPU资源,对于低端机来说时间依然可观
我们建议原始代码包(webgl/Build目录下的code文件)不超过30MB, 建议开发者勾选"Strip Engine Code"并设置"Managed Stripping Level"为High。同时,强烈建议开发者可以使用代码分包工具将代码包减少到原始尺寸的到1/3。如果使用Unity2021以上版本,可更改PlayerSettings面板IL2CPP选项为更小尺寸(SIZE)以减少函数量。
在timelog中呈现的首场景耗时即为引擎初始化与开发者首帧逻辑,关于该阶段耗时,开发者需要注意的是:
- MonoBehaviour脚本的首帧Start/Awake应足够少逻辑,优先将画面呈现
- 初始场景不宜过大,通常呈现Splah场景即可
- 初始场景中需要后续主场景或配置加载时可采取分帧策略,切勿在Start/Awake阻塞。
- 对于计算耗时 请使用Android CPU Profiler性能调优分析每一帧的耗时部分。
我们建议开发者使用预下载功能,该功能可以利用此阶段的网络空闲期进行资源下载。
前面我们提到开发者需要将资源从首包分离以较少首屏加载时间,同理,而对于其余的资源开发者最好使用按需加载的方式进行加载,减少玩家进行核心玩法的等待时间。 优化可参考 使用Addressable Assets System或AssetBundle进行资源按需加载。
我们总结下启动时序以及开发者、平台提升启动性能的优化事项:
当分析出小游戏需要进行启动优化时,请继续阅读:
https://github.com/Perfare/AssetStudio
一款开源的资源查看工具,可以检查data首包以及AssetsBundle(或新Addressable)的资源内容,对于分析打包的资源正确性和冗余具有很好的帮助。
https://assetstore.unity.com/packages/tools/utilities/build-report-tool-8162?locale=zh-CN
很好的前端用于查看Unity编译信息,BRT显示了编译时包括的每个资源占用的存储空间以及未使用资源情况。
https://assetstore.unity.com/packages/tools/utilities/asset-hunter-pro-135296
资源清理插件,可将项目中无用资源清理
https://docs.unity3d.com/Packages/com.unity.addressables@1.16/manual/index.html Unity全新资源管理流程
',49),n=[o];function h(d,u,p,c,m,b){return t(),e("div",null,n)}const g=a(s,[["render",h]]);export{f as __pageData,g as default}; diff --git a/assets/Design_StartupOptimization.md._IBSG9Zt.lean.js b/assets/Design_StartupOptimization.md._IBSG9Zt.lean.js new file mode 100644 index 00000000..3d12c0da --- /dev/null +++ b/assets/Design_StartupOptimization.md._IBSG9Zt.lean.js @@ -0,0 +1 @@ +import{_ as a,c as e,o as t,a4 as i}from"./chunks/framework.CzhHXMZi.js";const l="/minigame-unity-webgl-transform/assets/startupop1.BD5F2llA.png",r="/minigame-unity-webgl-transform/assets/startupop2.ClyZL3O9.png",f=JSON.parse('{"title":"提升Unity WebGL游戏启动速度","description":"","frontmatter":{},"headers":[],"relativePath":"Design/StartupOptimization.md","filePath":"Design/StartupOptimization.md"}'),s={name:"Design/StartupOptimization.md"},o=i("",49),n=[o];function h(d,u,p,c,m,b){return t(),e("div",null,n)}const g=a(s,[["render",h]]);export{f as __pageData,g as default}; diff --git a/assets/Design_Summary.md.C1UZ4q8e.js b/assets/Design_Summary.md.C1UZ4q8e.js new file mode 100644 index 00000000..9b32b0d8 --- /dev/null +++ b/assets/Design_Summary.md.C1UZ4q8e.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a,a4 as r}from"./chunks/framework.CzhHXMZi.js";const l="/minigame-unity-webgl-transform/assets/summary1.B7mzdmu-.png",g=JSON.parse('{"title":"Unity WebGL小游戏适配方案概述","description":"","frontmatter":{},"headers":[],"relativePath":"Design/Summary.md","filePath":"Design/Summary.md"}'),i={name:"Design/Summary.md"},s=r('Unity的BuildTarget支持WebGL平台,WebGL导出包是基于WebAssembly技术运行在浏览器环境。 为了能让导出包运行在微信小游戏环境,我们提供了以下支持:
接入流程请参考文档Unity WebGL微信小游戏转换指南
目前由Unity WebGL转换的小游戏兼容性与性能在不同平台的表现会有所差异,部分平台依然在迭代优化。
微信小游戏从2.14.0开始支持Unity WebGL转换适配,现网玩家占比可参看基础库版本分布。
',6),s=[i];function l(p,_,c,d,m,h){return t(),a("div",null,s)}const b=e(n,[["render",l]]);export{u as __pageData,b as default}; diff --git a/assets/Design_SupportedPlatform.md.BAZIrdWz.lean.js b/assets/Design_SupportedPlatform.md.BAZIrdWz.lean.js new file mode 100644 index 00000000..ea00833d --- /dev/null +++ b/assets/Design_SupportedPlatform.md.BAZIrdWz.lean.js @@ -0,0 +1 @@ +import{_ as e,c as a,o as t,a4 as r}from"./chunks/framework.CzhHXMZi.js";const o="/minigame-unity-webgl-transform/assets/supportedplatfoerm1.CN2tBbEW.png",u=JSON.parse('{"title":"支持平台","description":"","frontmatter":{},"headers":[],"relativePath":"Design/SupportedPlatform.md","filePath":"Design/SupportedPlatform.md"}'),n={name:"Design/SupportedPlatform.md"},i=r("",6),s=[i];function l(p,_,c,d,m,h){return t(),a("div",null,s)}const b=e(n,[["render",l]]);export{u as __pageData,b as default}; diff --git a/assets/Design_Symbol.md.DP0pW_Mi.js b/assets/Design_Symbol.md.DP0pW_Mi.js new file mode 100644 index 00000000..acb6c398 --- /dev/null +++ b/assets/Design_Symbol.md.DP0pW_Mi.js @@ -0,0 +1,5 @@ +import{_ as a,c as s,o as e,a4 as t}from"./chunks/framework.CzhHXMZi.js";const _=JSON.parse('{"title":"Symbol 相关","description":"","frontmatter":{},"headers":[],"relativePath":"Design/Symbol.md","filePath":"Design/Symbol.md"}'),n={name:"Design/Symbol.md"},o=t(`开发者工具或者线上打印出来的堆栈,一般都是 wasm 函数 id,需要通过 symbol 映射到函数名,才能用于定位问题
这里提供了一个小工具用来替换函数 id,用法如下:
比如以下这段堆栈
at Object.WXUncaughtException (https://usr/game.js:108:1264)
+ at abort (https://usr/game.js:593:247583)
+ at j88421 (wasm-function[67190]:0x13a062b)
+ at j88421 (wasm-function[44572]:0x801bd1)
+ at j23511 (wasm-function[9866]:0x432503)
将这段内容保存到文件,和 symbol 文件一起传给工具处理
node tools/rewrite_exception_symbol.js exception.txt webgl.wasm.symbols.unityweb
symbol 文件一般会自动生成在 minigame 目录
Unity 2021 的引擎暂时还不支持导出 symbol,因此需要手动跑工具生成,导出插件导出到 webgl 时的 console 信息有说明要如何操作
`,10),p=[o];function l(i,c,r,d,m,b){return e(),s("div",null,p)}const u=a(n,[["render",l]]);export{_ as __pageData,u as default}; diff --git a/assets/Design_Symbol.md.DP0pW_Mi.lean.js b/assets/Design_Symbol.md.DP0pW_Mi.lean.js new file mode 100644 index 00000000..3e717886 --- /dev/null +++ b/assets/Design_Symbol.md.DP0pW_Mi.lean.js @@ -0,0 +1 @@ +import{_ as a,c as s,o as e,a4 as t}from"./chunks/framework.CzhHXMZi.js";const _=JSON.parse('{"title":"Symbol 相关","description":"","frontmatter":{},"headers":[],"relativePath":"Design/Symbol.md","filePath":"Design/Symbol.md"}'),n={name:"Design/Symbol.md"},o=t("",10),p=[o];function l(i,c,r,d,m,b){return e(),s("div",null,p)}const u=a(n,[["render",l]]);export{_ as __pageData,u as default}; diff --git a/assets/Design_Transform.md.BRthiJT9.js b/assets/Design_Transform.md.BRthiJT9.js new file mode 100644 index 00000000..bb080db1 --- /dev/null +++ b/assets/Design_Transform.md.BRthiJT9.js @@ -0,0 +1,37 @@ +import{_ as a,a as s}from"./chunks/export.Cp8QqQgk.js";import{_ as n}from"./chunks/mp_addplugin.CBpu0sZo.js";import{_ as e,c as i,o as l,a4 as p}from"./chunks/framework.CzhHXMZi.js";const t="/minigame-unity-webgl-transform/assets/devtools_preview.BlOHG4Jk.png",o="/minigame-unity-webgl-transform/assets/addPlugin.wW8f1Te-.png",r="/minigame-unity-webgl-transform/assets/auth_plugin.DqkcQvPd.png",C=JSON.parse('{"title":"转换工具导出微信小游戏","description":"","frontmatter":{},"headers":[],"relativePath":"Design/Transform.md","filePath":"Design/Transform.md"}'),d={name:"Design/Transform.md"},c=p('添加需要导出的scene
建议仅勾选Loading场景,后续场景使用AssetsBundle/Addressable进行按需加载。
顶部菜单栏 点击 微信小游戏 -> 转换小游戏, 填写相应参数,点击导出WEBGL并转换为小游戏
按钮 ,等待转换完成。
其中:
在转换完成后,会在导出路径下生成如下目录
.
+├── minigame
+└── webgl
转换完成后,参照小游戏资源部署章节进行资源部署,并了解启动Loader在加载资源时的缓存逻辑。
需要下载,
稳定版 Stable Build
,非小游戏版!
导入转换后的minigame
目录
注意:
项目使用了小游戏Unity适配插件,若小游戏是第一次使用本插件,在开发者工具会报错提示插件未授权
请前往mp后台-能力地图-生产提效包-快适配,开通使用
请不要使用真机调试!! 请不要使用真机调试!! 请不要使用真机调试!!
如果你希望将导出插件集成到自己的发布流程,想脚本调用的话,可修改 Assets/WX-WASM-SDK/Editor/MiniGameConfig.asset
配置,然后调用WXEditorWindow 的 DoExport方法导出小游戏
var win = new WXEditorWindow();
+win.DoExport();
MiniGameConfig.asset
支持的配置 // 基本设置
+Appid -- 小游戏appid
+CDN -- 游戏资源CDN
+projectName -- 小游戏项目名
+Orientation -- 游戏方向
+maxStorage -- 最大内存,修改此值需要联系研发助手开通权限,否则无效
+DST -- 导出路径
+// 启动Loader设置
+bgImageSrc -- 背景图/封面图
+VideoUrl -- 加载阶段视频URL
+assetLoadType -- 首包资源加载方式
+bundleExcludeExtensions -- 不自动缓存文件类型
+bundleHashLength -- bundle名中hash长度
+// 预下载
+preloadFiles -- 预下载文件列表,用;分隔
+// SDK功能
+UseFriendRelation -- 使用好友关系链
+UseAudioApi -- 使用微信音频API
+// 调试编译选项
+DevelopBuild -- Development Build
+AutoProfile -- Autoconnect Profiler
+ScriptOnly -- Scripts Only Build
+profilingFuncs -- Profiling Funcs
+Webgl2 -- WebGL2.0
+DeleteStreamingAssets -- DeleteStreamingAssets
使用说明参考Loader配置
// 资源加载与缓存
+dataFileSubPrefix: 配置首包资源加载路径
+bundlePathIdentifier: URL中包含特定标识符时需要自动缓存,用;分隔
+defaultReleaseSize: 达到缓存上限时默认额外清理的存储大小,用;分隔
+needCacheTextures: 是否开启纹理缓存
+texturesPath: 纹理存储路径
+texturesHashLength: 纹理中hash长度
+// 启动界面
+loadingBarWidth: 加载进度条宽度
+HideAfterCallMain: 是否初始化完成立即隐藏封面
请查阅技术常见问题QA
`,45),h=[c];function m(g,u,b,f,_,k){return l(),i("div",null,h)}const x=e(d,[["render",m]]);export{C as __pageData,x as default}; diff --git a/assets/Design_Transform.md.BRthiJT9.lean.js b/assets/Design_Transform.md.BRthiJT9.lean.js new file mode 100644 index 00000000..e8065925 --- /dev/null +++ b/assets/Design_Transform.md.BRthiJT9.lean.js @@ -0,0 +1 @@ +import{_ as a,a as s}from"./chunks/export.Cp8QqQgk.js";import{_ as n}from"./chunks/mp_addplugin.CBpu0sZo.js";import{_ as e,c as i,o as l,a4 as p}from"./chunks/framework.CzhHXMZi.js";const t="/minigame-unity-webgl-transform/assets/devtools_preview.BlOHG4Jk.png",o="/minigame-unity-webgl-transform/assets/addPlugin.wW8f1Te-.png",r="/minigame-unity-webgl-transform/assets/auth_plugin.DqkcQvPd.png",C=JSON.parse('{"title":"转换工具导出微信小游戏","description":"","frontmatter":{},"headers":[],"relativePath":"Design/Transform.md","filePath":"Design/Transform.md"}'),d={name:"Design/Transform.md"},c=p("",45),h=[c];function m(g,u,b,f,_,k){return l(),i("div",null,h)}const x=e(d,[["render",m]]);export{C as __pageData,x as default}; diff --git a/assets/Design_UnityProfiler.md.BNc4nagQ.js b/assets/Design_UnityProfiler.md.BNc4nagQ.js new file mode 100644 index 00000000..267054f4 --- /dev/null +++ b/assets/Design_UnityProfiler.md.BNc4nagQ.js @@ -0,0 +1,6 @@ +import{_ as i,a as o,b as t}from"./chunks/profile3.CffCZqR8.js";import{_ as e,c as n,o as s,a4 as l}from"./chunks/framework.CzhHXMZi.js";const m=JSON.parse('{"title":"使用Unity Profiler性能调优","description":"","frontmatter":{},"headers":[],"relativePath":"Design/UnityProfiler.md","filePath":"Design/UnityProfiler.md"}'),r={name:"Design/UnityProfiler.md"},a=l('Unity将自启动监听端口34999等待调试链接,对于WebGL版本会启动websockify.js(用于websocket转发)。 此时,导出的WebGL游戏在浏览器时能自动连接到Unity Profiler。
微信开发者工具小游戏Profile 使用转换脚本导出微信小游戏包并启动小游戏,微信小游戏将自动连接到Unity Profiler
调整UnityProfiler IP/端口
网页WebGL/小游戏启动后将通过"ws://ip:port"自动连接到“Unity Profiler”, 此地址默认为编译机器的。如果无法连接请查看微信开发者工具Network页签对应的ws链接是否正常可达。 如需手工调整IP、端口可通修改webgl.framework.js:
if(port == 54998)
+ {
+ url = "ws://127.0.0.1:54998"
+ }
+ ws = new WebSocketConstructor(url, opts);
+ ws.binaryType = "arraybuffer";
重启UnityProfiler监听,可通过在命令行执行引擎自带Node启动websocketfy.js:
(其中$UNITY_PATH为对应Unity版本的安装目录)
附录:
`,16),p=[a];function c(u,d,f,y,P,_){return s(),n("div",null,p)}const U=e(r,[["render",c]]);export{m as __pageData,U as default}; diff --git a/assets/Design_UnityProfiler.md.BNc4nagQ.lean.js b/assets/Design_UnityProfiler.md.BNc4nagQ.lean.js new file mode 100644 index 00000000..e5c57c2c --- /dev/null +++ b/assets/Design_UnityProfiler.md.BNc4nagQ.lean.js @@ -0,0 +1 @@ +import{_ as i,a as o,b as t}from"./chunks/profile3.CffCZqR8.js";import{_ as e,c as n,o as s,a4 as l}from"./chunks/framework.CzhHXMZi.js";const m=JSON.parse('{"title":"使用Unity Profiler性能调优","description":"","frontmatter":{},"headers":[],"relativePath":"Design/UnityProfiler.md","filePath":"Design/UnityProfiler.md"}'),r={name:"Design/UnityProfiler.md"},a=l("",16),p=[a];function c(u,d,f,y,P,_){return s(),n("div",null,p)}const U=e(r,[["render",c]]);export{m as __pageData,U as default}; diff --git a/assets/Design_UnityVersion.md.DdUpWAyk.js b/assets/Design_UnityVersion.md.DdUpWAyk.js new file mode 100644 index 00000000..98aa8229 --- /dev/null +++ b/assets/Design_UnityVersion.md.DdUpWAyk.js @@ -0,0 +1 @@ +import{_ as t,c as a,o as e,a4 as d}from"./chunks/framework.CzhHXMZi.js";const _=JSON.parse('{"title":"推荐引擎版本","description":"","frontmatter":{},"headers":[],"relativePath":"Design/UnityVersion.md","filePath":"Design/UnityVersion.md"}'),i={name:"Design/UnityVersion.md"},r=d('Unity WebGL微信小游戏适配方案是以WebAssembly为基础,具有非常宽泛的兼容性,转换插件理论上支持的Unity版本涵盖:2018、2019、2020、2021、2022。
但并非每个小版本我们都有足够的验证,我们会根据验证情况以及大量转换游戏反馈的情况给出引擎版本建议。
引擎版本 | 压缩纹理/音频 | 编译体积 | 已验证小版本 | 其他 |
---|---|---|---|---|
2018 | 仅DXT,不支持ETC2/ASTC | 100% | 2018.4.25~2018.4.34 | 不支持设置dpr分辨率 |
2019 | 仅DXT,不支持ETC2/ASTC | 100% | 2019.4.28~2019.4.35 | --- |
2019 InstantGame | 全支持DXT/ETC2/ASTC | 100% | 2019.4.29 | 增加WebGL移动端压缩纹理的支持 |
2020 | DXT/ETC2,不支持ASTC | 100% | 2020.3.1~2020.3.36 | --- |
2021 | 全支持DXT/ETC2/ASTC | 80% | 2021.2.11~2021.3.33 | --- |
2021 InstantGame | 全支持DXT/ETC2/ASTC | 80% | 2021.2.5 | 增强运行时性能、UnityProfiler以及更小的包体 |
2022 | 全支持DXT/ETC2/ASTC | 80% | 2022.3.14 | --- |
备注:
中国特供版下载地址
请阅读文档,了解小游戏的更新机制
这种形式和APP版本类似,比如应用市场自动更新。游戏发新版本后,在打开小游戏前,会静默更新到最新版本。 但小游戏包体的更新机制和APP不同,开发者在管理后台发布新版本的小游戏之后,无法立刻影响到所有现网用户,如果某个用户本地有小程序的历史版本,此时打开的可能还是旧版本,最差情况下,也在发布之后 24 小时之内下发新版本信息到用户。
缺点:更新不及时,依然可能体验到旧版本内容,需要注意保证旧版本资源可访问。
适合于对版本一致性要求不高的游戏使用
戏运行期间检查是否有新版本,当新版本可用后,提示用户重启更新
转换插件有提供配置来自动使用这项能力,通过勾选MiniGameConfig.asset
中的needCheckUpdate
。
缺点:由于重启后,可能涉及资源下载,可能导致用户流失。
mp后台-设置-基本设置-小程序最低可用版本
,修改为最新版本请查看资源部署-资源更新说明
',18),d=[i];function s(l,h,c,p,_,m){return t(),e("div",null,d)}const b=a(n,[["render",s]]);export{g as __pageData,b as default}; diff --git a/assets/Design_Update.md.D-XQRToL.lean.js b/assets/Design_Update.md.D-XQRToL.lean.js new file mode 100644 index 00000000..4eaf3e56 --- /dev/null +++ b/assets/Design_Update.md.D-XQRToL.lean.js @@ -0,0 +1 @@ +import{_ as a,c as e,o as t,a4 as r}from"./chunks/framework.CzhHXMZi.js";const o="/minigame-unity-webgl-transform/assets/update-dialog.6NED8STH.png",g=JSON.parse('{"title":"版本更新","description":"","frontmatter":{},"headers":[],"relativePath":"Design/Update.md","filePath":"Design/Update.md"}'),n={name:"Design/Update.md"},i=r("",18),d=[i];function s(l,h,c,p,_,m){return t(),e("div",null,d)}const b=a(n,[["render",s]]);export{g as __pageData,b as default}; diff --git a/assets/Design_UsingAddressable.md.DdLO0tjm.js b/assets/Design_UsingAddressable.md.DdLO0tjm.js new file mode 100644 index 00000000..a3de0916 --- /dev/null +++ b/assets/Design_UsingAddressable.md.DdLO0tjm.js @@ -0,0 +1,74 @@ +import{_ as a,c as i,a as e,a4 as s,o as n}from"./chunks/framework.CzhHXMZi.js";const t="/minigame-unity-webgl-transform/assets/addressable7.D5VA3cAj.png",l="/minigame-unity-webgl-transform/assets/wxassetbundleprovider1.BrJzXZd7.png",p="/minigame-unity-webgl-transform/assets/wxassetbundleprovider2.DIWHTi9X.png",h="/minigame-unity-webgl-transform/assets/addressable2.Dk3Ey3UQ.png",r="/minigame-unity-webgl-transform/assets/addressable5.CfIJPhUo.png",d="/minigame-unity-webgl-transform/assets/addressable10.CVteO2U4.png",k="/minigame-unity-webgl-transform/assets/addressable9.BGoeNYVl.png",o="/minigame-unity-webgl-transform/assets/addressable3.D_qvXfAd.png",C=JSON.parse('{"title":"使用Addressable Assets System进行资源按需加载","description":"","frontmatter":{},"headers":[],"relativePath":"Design/UsingAddressable.md","filePath":"Design/UsingAddressable.md"}'),c={name:"Design/UsingAddressable.md"},g=s('对于Unity WebGL转换的小游戏启动耗时,资源下载通常是贡献最大的部分。这是由于手游APP往往很少针对首包资源进行特殊优化。 那么,接下来的问题是:小游戏中多大的首包资源合适? 剩余的游戏资源如何加载? 在此,我们建议得优化原则是:
- 首包资源量不超过5M
- 资源按需延迟加载,拆分得尽量细
本文介绍如何使用Unity新的资源管理流程Addressable Assets System进行资源的按需加载。
附可参考的项目: https://github.com/wechat-miniprogram/minigame-unity-webgl-transform/tree/main/Demo/Addressable
Unity在2018版本中推出了Addressable Assets System(以下简称Addressable)的预览版本,并在2019的版本中已经成为正式版本,可以用于生产(仅表示发布时间,实际上大部分Unity版本都可正常使用)。 Addressable提供了以下能力:
低使用门槛:使用Addressable在开发前期就进入快速开发的阶段,使用任何你喜欢的资源管理技术,你都能快速的切换来Addressable系统中,几乎不需要修改代码。
依赖管理:Addressable系统不仅仅会帮你管理、加载你指定的内容,同时它会自动管理并加载好该内容的全部依赖。在所有的依赖加载完成,你的内容彻底可用时,它才会告诉你加载完成。
内存管理:Addressable不仅仅能记载资源,同时也能卸载资源。系统自动启用引用计数,并且有一个完善的Profiler帮助你指出潜在的内存问题。
内容打包:Addressable系统自动管理了所有复杂的依赖连接,所以即使资源移动了或是重新命名了,系统依然能够高效地找到准确的依赖进行打包。当你需要将打包的资源从本地移到服务器上面,Addressable系统也能轻松做到,几乎不需要任何代价。
Unity中资源按需加载也可以使用老的AssetBundle,然而使用AB需要做不少的工作:标识Asset、组织Bundle、编译、Load/Unload、依赖关系以及后期维护的复杂工作。新一代的Addressable正是对这些痛点做了不少改进,开发者只需要将Asset设置为addressable然后加载即可,[功能强大并且学习曲线变得平滑] (https://docs.google.com/document/d/1hPLNLdrF0qAvjEJTpKf-cuO_d4FCV0H2cqBeP1Zo6mA/edit)。
无论是Addressable还是AssetBundle在微信小游戏底层都使用XHR进行远程资源访问,并使用微信小游戏文件存储系统进行缓存。对于已有的游戏资源,如果我们需要尽量少的工作量去做到像H5游戏按需加载,使用Addressable是最佳做法。
WXAssetBundle可以减轻iOS的内存压力,对于使用Addressable的项目,需要替换Provider来使用WXAssetBundle。
下载WXAssetBundleProvider.cs,放到WX-WASM-SDK-V2/Runtime/目录下
导入插件后会有WXAssetBundleProvider.cs缺依赖的报错,需要给WX-WASM-SDK-V2/Runtime 增加 Unity.ResourceManager 的引用
进入AA的组设置修改Provider如下
重新导出 AA包 和 小游戏
首包资源应该只包含首屏所需资源,比如Splash界面以及对应文案。 首屏资源需要注意:
- 导出场景不要勾选任何其他场景
- 不要打包字体文件,字体往往压缩率很低。
- 通过Addressable检查Bultin分组,特别注意不要随意放置资源到Resources目录,该目录将无条件被打包到首包中。
通常,Unity首资源包的压缩率是比较高的,因为大多数Unity built资源是以文本形式存在。开发者应尽量减少首资源包压缩后大小,以zip压缩后体积为准,3M左右最佳,不应超过5M。
部署首资源包需要注意:
- 使用“小游戏分包”时,小游戏底层会自动进行压缩减少网络传输。
- 使用“CDN”时,务必在服务器对txt后缀开启“Brotli或gzip”。
如前所述,我们构建时仅选择了splash/loading场景,那么主场景(如大厅/战斗等)该如何加载?此时我们可以将每个场景单独作为Addressable分组,在用到的时候才下载该场景包。
使用Addressables.LoadSceneAsync可以动态加载场景与获取加载进度:
IEnumerator LoadMain()
+ {
+ var handle = Addressables.LoadSceneAsync("Assets/RPGPP_LT/Scene/rpgpp_lt_scene_1.0.unity", LoadSceneMode.Single, true);
+ handle.Completed += (obj) =>
+ {
+ Debug.LogWarning($"Load async scene complete{obj.Status}");
+ };
+
+ while (!handle.IsDone)
+ {
+ // 在此可使用handle.PercentComplete进行进度展示
+ yield return null;
+ }
+ }
选择分组,设置分组属性如下:
如果我们仅将场景作为分组,其中静态摆放的物件不单独设置为Addressable也会一并打包到场景所在bundle。那么,这是会产生一个问题:两个场景都使用同样资源是否产生冗余?答案是肯定的!! 那么,如何消除冗余呢?当我们Adressable面板的Tools-->Analyze进行分析时,可看到以下内容:
',37),E=s('除了静态场景外,我们还会经常动态实例化(Instantiate)或在内存中创建资源对象。比如:
public class LoadAssetScript : MonoBehaviour
+{
+ public GameObject somePrefab;
+ private void Start()
+ {
+ Instantiate(somePrefab);
+ }
+}
然而,这样做有个非常严重的问题:Prefab本身以及依赖的所有资源需要在场景加载前完成。在小游戏环境,这意味着即使还没调用Instantiate,这部分资源就必须准备好,这会极大影响场景初始化速度。
那么,如果我们希望把somePrefab以及它的依赖资源打包在Addressable分组进行按需下载应该如何做呢?答案是AssetReference。上述代码改写成:
public class LoadAssetScript : MonoBehaviour
+{
+ public AssetReference somePrefab;
+ private void Start()
+ {
+ somePrefab.InstantiateAsync().Completed += (obj) =>
+ {
+ // 加载完成回调
+ };
+ }
+}
或协程写法:
public class LoadAssetScript : MonoBehaviour
+{
+ public AssetReference somePrefab;
+ private IEnumerator spawnSomathing()
+ {
+ var hanle = somePrefab.InstantiateAsync();
+ while(!handle.IsDone) {yield return null;}
+ // 加载完成回调
+ var gameObject = hanle.Result;
+ }
+}
同时,对应的Prefab在editor中需设置为Addressable,并重新为somePrefab赋值。
Unity WebGL转换的小游戏普遍存在首包资源较大的情况,而新Address提供了非常好的资源管理流程。我们建议开发者:
- 精简首场景,首包资源中确保只包含轻量的首屏以及依赖资源
- 延迟加载,避免业务逻辑需要全量资源的情况,设计上尽量按需加载
- 资源拆分,利用Addressable进行更灵活和细粒度的拆解
- 预加载,根据优先级设置需要预加载的分包,利用网络空闲期
private void TextureHandle_Completed(AsyncOperationHandle<Texture2D> handle) {
+ if (handle.Status == AsyncOperationStatus.Succeeded) {
+ Texture2D result = handle.Result;
+ // The texture is ready for use.
+ }
+}
+
+void Start() {
+ AsyncOperationHandle<Texture2D> textureHandle = Addressables.LoadAsset<Texture2D>("mytexture");
+ textureHandle.Completed += TextureHandle_Completed;
+}
public IEnumerator Start() {
+ AsyncOperationHandle<Texture2D> handle = Addressables.LoadAssetAsync<Texture2D>("mytexture");
+
+ //if the handle is done, the yield return will still wait a frame, but we can skip that with an IsDone check
+ if(!handle.IsDone)
+ yield return handle;
+
+ if (handle.Status == AsyncOperationStatus.Succeeded) {
+ Texture2D texture = handle.Result;
+ // The texture is ready for use.
+ // ...
+ // Release the asset after its use:
+ Addressables.Release(handle);
+ }
+}
public async Start() {
+ AsyncOperationHandle<Texture2D> handle = Addressables.LoadAssetAsync<Texture2D>("mytexture");
+ await handle.Task;
+ // The task is complete. Be sure to check the Status is successful before storing the Result.
+}
资源系统迁移可参考Unity官方文档Upgrading to the Addressables system
使用这种方式加载资源,通常需要再Asset或其子目录下创建Resources的文件夹,然后使用类似这种方式加载:
TextAsset text = Resources.Load<TextAsset>("MyConfig");
然而,Resources目录的内容都会被打包进首包资源,对于小游戏来说是不推荐使用的方式。 开发者在Addressable的default中能看到所有这些资源,我们需要将这些资源设置为“Addressable”,Unity将自动移动到“Resources_Moved”目录。 加载代码改写成:
var handle = Addressables.LoadAssetAsync<TextAsset>("MyConfig");
+ if(!handle.IsDone) yield return handle;
+ // 加载完成回调
+ if (handle.Status == AsyncOperationStatus.Succeeded) {
+ var gameObject = hanle.Result;
+ }
当打开Addressables Groups时,Unity提供了将所有AssetsBundle迁移到Addressable Asset Groups的功能。
默认情况下,当编译Addressable资源时会输出到Library/com.unity.addressables/,项目发布为WebGL或转换为小游戏时Unity会自动拷贝Bundle文件到最终的生成目录下。我们只需要将对应的StreammingAssets上传到对应的CDN服务器即可。
为了充分利用网络带宽,在网络空闲时可预下载游戏需要用到的AB包。详细配置请参考使用预下载功能。
Addressable Asset System for Unity (Overview) https://docs.google.com/document/d/1hPLNLdrF0qAvjEJTpKf-cuO_d4FCV0H2cqBeP1Zo6mA/edit
官方Demo https://github.com/Unity-Technologies/Addressables-Sample
视频范例 https://drive.google.com/file/d/1w-Lh_jsD2VSHNvkzexJLSc6bA3gUQC8d/view
uwa关于Addressable的介绍 https://blog.uwa4d.com/archives/USparkle_Addressable4.html
Addressable与AssetBundle的对比 https://www.jianshu.com/p/8009c16fcab3
阐述如何在小游戏环境对AssetBundle进行打包、加载和内存优化,同时推荐使用WXAssetBundle更自动化地节省内存。
注意:小游戏环境不支持assetbundle本地加载
public static void Build()
+{
+ string dst = Application.streamingAssetsPath + "/AssetBundles";
+ if (!Directory.Exists(dst))
+ {
+ Directory.CreateDirectory(dst);
+ }
+ BuildPipeline.BuildAssetBundles(dst, BuildAssetBundleOptions.AppendHashToAssetBundleName | BuildAssetBundleOptions.ChunkBasedCompression | UnityEditor.BuildAssetBundleOptions.DisableWriteTypeTree | BuildAssetBundleOptions.None, BuildTarget.WebGL);
+}
打包bundle时,请使用如下参数
从服务器下载bundle的方式主要以下两种:
UnityWebRequestAssetBundle.GetAssetBundle
UnityWebRequest request = UnityWebRequestAssetBundle.GetAssetBundle(uriPath);
+yield return request.SendWebRequest();
+if (request.isHttpError)
+{
+ Debug.LogError(GetType() + "/ERROR/" + request.error);
+}
+else
+{
+ AssetBundle ab = (request.downloadHandler as DownloadHandlerAssetBundle).assetBundle;
+ // ab.LoadAsset
+ ab.Unload(false);
+}
+request.Dispose();
UnityWebRequest
UnityWebRequest www = new UnityWebRequest(uriPath);
+DownloadHandlerAssetBundle handler = new DownloadHandlerAssetBundle(www.uri.ToString(), 0);
+www.downloadHandler = handler;
+yield return www.Send();
+if (www.isHttpError)
+{
+ Debug.LogError(GetType() + "/ERROR/" + www.error);
+} else
+{
+ AssetBundle ab = handler.assetBundle
+ // ab.LoadAsset
+ ab.Unload(false);
+}
+www.Dispose();
特别地, 切忌使用WWW.LoadFromCacheOrDownload或WWW等带cache接口,WebGL模式下将会使用JS模拟文件系统带来额外内存消耗!
小游戏因其平台特殊性,需要保证加载速度,因此我们在底层对bundle文件做了缓存,开发者无须自己实现缓存。
游戏逻辑还是按照未缓存需要从网络下载去编写,插件底层会判断是否已有缓存。若未缓存则缓存此bundle;若已缓存,则返回缓存文件,实际不会发起网络请求。
可参见资源缓存与淘汰
资源缓存与更新的不同,会导致APP与小游戏不同的加载流程
检查更新-->下载更新全量资源-->写入文件系统-->运行时LoadFromFile
打包ab时文件名带hash-->UnityWebRequest按需下载并使用资源
在业务侧看来:总是使用异步接口从远程下载并使用,底层资源的缓存与更新已由适配层自动完成,游戏不再直接读写文件系统。
简介与原理
Unity的 AssetBundle.LoadFromFile() 原本是打开一个文件流,LoadAsset通过文件描述符fd去读实际的目标对象。因此不需要存储完整的AssetBundle(只需存储包头、查找表),可节省内存。
而由于WebGL的文件系统是在JS内存中维护的,不会实际读写到磁盘,无法使用LoadFromFile()达到节约内存的目的。
为此,我们在微信小游戏环境将文件系统接口桥接到了微信的文件系统接口,使其可以读写到小游戏缓存目录。同时提供了包装好的Unity SDK以便开发者使用。
使用说明
Addressable也可使用,可参考使用WXAssetBundleProvider节省内存 修改Provider。
AssetBundle目前只支持异步加载。参考示例如下:
// 【推荐】原本使用WebRequest的话可按如下修改
+using WeChatWasm;
+UnityWebRequest bundleReq = WXAssetBundle.GetAssetBundle(url); // UnityWebRequestAssetBundle => WXAssetBundle
+yield return bundleReq.SendWebRequest();
+if (bundleReq.isHttpError)
+{
+ Debug.LogError(GetType() + "/ERROR/" + bundleReq.error);
+}
+else
+{
+ AssetBundle bundle = (bundleReq.downloadHandler as DownloadHandlerWXAssetBundle).assetBundle; // DownloadHandlerAssetBundle => DownloadHandlerWXAssetBundle
+ bundle.WXUnload(false); //bundle还是AssetBundle类型,但需要调用扩展方法WXUnload()才可真正卸载
+}
注意事项
此套接口只可在微信小游戏环境下使用!需要同时导出WebGL版本的,建议自行在修改接口时候加编译宏方便控制导出版本。
频繁读写磁盘损耗性能,于是我们仍旧在JS内存中维护了完整bundle的缓存,只有使用到已被清理的bundle时才会一次性从磁盘完整读进内存,而高频读取资源时通过缓存完成请求。默认情况下5秒未使用的bundle会被从内存中清理。
读磁盘必定影响性能,所以我们只推荐对内存要求高的重度游戏使用。
加载的bundle文件大小为5403162字节
-rw-r--r-- 1 Users 5403162 6 22 16:07 image1_751427a66d22b184c95342d556354150
通过加载前后snapshot来对比总内存变化
UnityWebRequestAssetBundle.GetAssetBundle/UnityWebRequest/WWW 这三种加载方式加载前后内存无变化
WWW.LoadFromCacheOrDownload 加载bundle后内存增加了5403162字节,增加了bundle大小的内存,是因为WWW.LoadFromCacheOrDownload除了会将文件存入IndexDB外,还会存入内存中的UnityCache
因此需要注意业务中不要使用已淘汰的WWW类,尤其WWW.LoadFromCacheOrDownload,当bundle数量多时,会浪费不少内存。
因此,最佳实践是业务应该尽可能早地使用ab.Unload(false),自行维护Asset的引用计数管理资源。
Unity Loader是在微信小游戏环境加载Unity WebGL游戏的加载与适配器,使用微信小游戏插件技术开发,功能包括:
生成微信小游戏项目时,转换工具会在game.json
中声明:
"plugins": {
+ "UnityPlugin": {
+ "version": "major.minor.patch", // 可切换版本号
+ "provider": "wxe5a48f1ed5f544b7",
+ "contexts": [
+ {
+ "type": "isolatedContext"
+ }
+ ]
+ }
+}
这部分配置表示使用Unity Loader插件进行游戏加载,开发者无需手动修改
声明CDN地址
CDN: cdn地址
+dataFileSubPrefix: 首包资源相对cdn地址的存放目录,默认首包资源放在cdn一级目录
游戏存在备用CDN地址,可通过C#接口 WX.SetDataCDN
或js接口 GameGlobal.manager.setDataCDN
修改DATA_CDN配置
由于Unity WebGL启动加载需要一定时间,因此需要使用视频或图片等内容作为过渡以留住玩家。Unity Loader默认使用视频+进度信息呈现,开发者可以自定义封面/视频,可参考启动Loader视频规范进行配置。
bgImageSrc: 启动封面图;-- $BACKGROUND_IMAGE
+VideoUrl: 启动视频;-- $LOADING_VIDEO_URL
+HideAfterCallMain: 是否callmain完成后立即隐藏封面;-- $HIDE_AFTER_CALLMAIN
+loadingBarWidth: 加载进度条宽度;-- $LOADING_BAR_WIDTH
loadingPageConfig: {
+ // 背景图或背景视频,两者都填时,先展示背景图,视频可播放后,播放视频
+ backgroundImage: '$BACKGROUND_IMAGE', // 默认的背景图,可自行替换,支持本地图片和网络图片
+ backgroundVideo: '$LOADING_VIDEO_URL', // 视频url,需要开发者提供,只支持网络url
+ // 以下是默认值
+ barWidth: $LOADING_BAR_WIDTH, // 加载进度条宽度,默认240,加载文案过长时可设置
+ totalLaunchTime: 15000, // 默认总启动耗时,即加载动画默认播放时间,可根据游戏实际情况进行调整
+ textDuration: 1500, // 当downloadingText有多个文案时,每个文案展示时间
+ firstStartText: '首次加载请耐心等待', // 首次启动时提示文案
+ downloadingText: ['正在加载资源'], // 加载阶段循环展示的文案
+ compilingText: '编译中', // 编译阶段文案
+ initText: '初始化中', // 初始化阶段文案
+ completeText: '开始游戏', // 初始化完成
+},
+hideAfterCallmain: $HIDE_AFTER_CALLMAIN, // 是否callmain完成立即隐藏封面
backgroundImage需要注意图片宽高不可超过2048,否则无法显示 使用coverview需要基础库版本>=2.16.1,插件已做兼容,若不支持,降级为使用离屏canvas渲染进度的方式 hideAfterCallmain: 游戏业务Awake逻辑耗时较高时可能导致出现短暂黑屏,改为false可盖住黑屏,等游戏第一帧渲染时隐藏
更多信息请参考定制启动封面
加载方式在转换工具导出时就确定好了,开发者一般不需要修改 当游戏资源量比较少时,可选择将首包资源作为小游戏分包加载,了解小游戏分包 wasm代码已是通过代码分包加载,当wasm代码+首包资源>20M时,资源包不可再使用小游戏分包加载。 当首包资源通过小游戏代码分包下载时,会将首包资源存放在minigame/data-package这个分包下
assetLoadType: -- $LOAD_DATA_FROM_SUBPACKAGE
let managerConfig = {
+ /* 省略其他配置 */
+ loadDataPackageFromSubpackage: $LOAD_DATA_FROM_SUBPACKAGE, // 转换工具自动替换
+}
loadDataPackageFromSubpackage
改为false,需要将webgl目录下的资源包上传到CDN,并将CDN地址填写到game.jsDATA_CDN
字段loadDataPackageFromSubpackage
改为true,需要将webgl目录下的资源包copy到minigame/data-package下为了充分利用网络带宽,在网络空闲时可预下载游戏需要用到的AB包。详细配置请参考使用预下载功能。
loader会自动按一定规则做文件缓存,加快二次启动速度 详情参考资源缓存
通过修改minigame/unity-namespace.js
中 enableDebugLog=true
,可查看插件详细日志,例如预下载发起和命中、文件缓存等。
`,38),h=[l];function p(k,r,d,o,g,c){return i(),s("div",null,h)}const u=a(t,[["render",p]]);export{y as __pageData,u as default}; diff --git a/assets/Design_UsingLoader.md.XYweVd4N.lean.js b/assets/Design_UsingLoader.md.XYweVd4N.lean.js new file mode 100644 index 00000000..dc827b4e --- /dev/null +++ b/assets/Design_UsingLoader.md.XYweVd4N.lean.js @@ -0,0 +1 @@ +import{_ as a,c as s,o as i,a4 as n}from"./chunks/framework.CzhHXMZi.js";const e="/minigame-unity-webgl-transform/assets/coverview_loading.BiGkOLi_.png",y=JSON.parse('{"title":"使用Loader进行游游戏加载","description":"","frontmatter":{},"headers":[],"relativePath":"Design/UsingLoader.md","filePath":"Design/UsingLoader.md"}'),t={name:"Design/UsingLoader.md"},l=n("",38),h=[l];function p(k,r,d,o,g,c){return i(),s("div",null,h)}const u=a(t,[["render",p]]);export{y as __pageData,u as default}; diff --git a/assets/Design_UsingMemoryProfiler.md.DOb-DuGw.js b/assets/Design_UsingMemoryProfiler.md.DOb-DuGw.js new file mode 100644 index 00000000..0a0a6022 --- /dev/null +++ b/assets/Design_UsingMemoryProfiler.md.DOb-DuGw.js @@ -0,0 +1,51 @@ +import{_ as s,c as a,o as i,a4 as l}from"./chunks/framework.CzhHXMZi.js";const n="/minigame-unity-webgl-transform/assets/memoryprofiler1.DqqM3hJv.png",e="/minigame-unity-webgl-transform/assets/memoryprofiler2.CO1KsCPI.png",t="/minigame-unity-webgl-transform/assets/memoryprofiler3.BHNFw8hn.png",p="/minigame-unity-webgl-transform/assets/memoryprofiler4.fmpW3n4Z.png",o="/minigame-unity-webgl-transform/assets/memoryprofiler5.BQ-2xA41.png",_=JSON.parse('{"title":"使用ProfilingMemory内存分析","description":"","frontmatter":{},"headers":[],"relativePath":"Design/UsingMemoryProfiler.md","filePath":"Design/UsingMemoryProfiler.md"}'),r={name:"Design/UsingMemoryProfiler.md"},h=l('真机需通过右上角菜单-调试-打开调试,查看小游戏日志
在微信开发者工具运行游戏,利用ProfilingMemory,我们可以分析UnityHeap 或 DynamicMemory(CPU主内存)的详细分配堆栈与统计数值。
游戏启动调用WeChatWASM.WX.InitSDK,并勾选导出选项"Profiling Funcs"与"Profiling Memory",请勿同时勾选"Development Build"选项!!!
在微信开发者工具运行游戏,过程中会自动记录所有内存分配数据
导出内存堆栈数据
微信开发者工具-“游戏缓存目录/usr/alloc_used.csv”(Android位于data/com.tencent.mm/MicroMsg/wxanewfiles/最近使用时间的目录)拖拽并以csv方式导入sqlite数据库, 推荐使用DB Browser for SQLite
对表格执行格式化换行 update alloc_used set callback=replace(callback, 'at ', x'0a')
典型地,我们可以通过size进行排序分析内存最大占用的堆栈情况
其中:
我们可以在"执行SQL"窗口使用SQL进行数据统计和分析,常见的callback分配堆栈特征:
Unity 2021:
所有内存: select sum(size) from alloc_used
+
+ AssetBundle Storage Memory: select sum(size) from alloc_used where callback like "%AssetBundle_LoadFromMemory%" or callback like "%OnFinishReceiveData%" or callback like "%AssetBundleLoadFromStream%"
+
+
+ AssetBundle Info: select sum(size) from alloc_used where callback like "%get_assetBundle%" and callback not like "%AwakeFromLoad%"
+
+ AssetBundle TypeTree: select sum(size) from alloc_used where callback like "%TypeTree%"
+
+ Lua: select sum(size) from alloc_used where callback like "%luaY_parser%" or callback like "%luaH_resize%" or callback like "%luaM_realloc%"
+
+ Shader: select sum(size) from alloc_used where callback like "%ShaderLab%"
+
+ IL2CPP runtime: select sum(size) from alloc_used where callback like "%MetadataCache%"
+
+ 非压缩纹理软解: select sum(size) from alloc_used where callback like "%Mipmap%"
+
+Other: select sum(size) from alloc_used where callback not like "%xxx%" or callback not like "%xxx%"
Unity 2018~2020:
AssetBundle Storage Memory: select sum(size) from alloc_used where callback like "%AssetBundleLoadFromStreamAsyncOperation%"
+
+AssetBundle Info: select sum(size) from alloc_used where callback like "%get_assetBundle%" and callback not like "%AwakeFromLoad%"
+
+AssetBundle TypeTree: select sum(size) from alloc_used where callback like "%TypeTree%"
+
+Lua: select sum(size) from alloc_used where callback like "%luaY_parser%" or callback like "%luaH_resize%" or callback like "%luaM_realloc%"
+
+Shader: select sum(size) from alloc_used where callback like "%ShaderFromSerializedShader%"
+
+IL2CPP runtime: select sum(size) from alloc_used where callback like "%MetadataCache%" -19M
+
+动画数据: select sum(size) from alloc_used where callback like "%AnimationClip%" -7MB
+
+非压缩纹理软解: select sum(size) from alloc_used where callback like "%Mipmap%"
+
+Other: select sum(size) from alloc_used where callback not like "%xxx%" or callback not like "%xxx%"
除了常见的堆栈特征外,我们也可以根据业务自己的使用特点来进行SQL分析。
simple_dlmalloc
,并修改LUALIB_API lua_State *luaL_newstate (void)
为如下所示#include "simpledlmalloc.c"
+ static void *simple_dlmalloc (void *ud, void *ptr, size_t osize, size_t nsize) {
+ (void)ud; (void)osize; /* not used */
+ if (nsize == 0) {
+ dlfree(ptr);
+ return NULL;
+ }
+ else
+ return dlrealloc(ptr, nsize);
+ }
+
+ // using other_alloc instead of default dlmalloc to avoid print trace of lua
+ LUALIB_API lua_State *luaL_newstate (void) {
+ // lua_State *L = lua_newstate(l_alloc, NULL);
+ lua_State *L = lua_newstate(simple_dlmalloc, NULL);
+ if (L) lua_atpanic(L, &panic);
+ return L;
+ }
由于安全性的影响,JavaScript 代码没有直接访问 IP 套接字来实现网络连接。因此,该.NET 网络类(System.Net 命名空间中的一切,特别是**System.Net.Sockets**)在 WebGL 中不能工作。UnityEngine.Network* 类也是这样,编译 WebGL 时将找不到这些类。
Unity 支持在 WebGL 中使用 UnityWebRequest 类。
以下为使用协程方式发送 GET、POST 请求到服务器的示例:
IEnumerator Get()
+ {
+ UnityWebRequest webRequest = UnityWebRequest.Get("https://mysite.com");
+
+ yield return webRequest.SendWebRequest();
+ if (webRequest.isHttpError||webRequest.isNetworkError)
+ Debug.Log(webRequest.error);
+ else
+ {
+ Debug.Log(webRequest.downloadHandler.text);
+ }
+
+ }
+
+ IEnumerator Post()
+ {
+ WWWForm form = new WWWForm();
+ //键值对
+ form.AddField("key", "value");
+ form.AddField("name","mafanwei");
+ form.AddField("blog","qwe25878");
+
+ UnityWebRequest webRequest = UnityWebRequest.Post("https://mysite.com",form);
+
+ yield return webRequest.SendWebRequest();
+ if (webRequest.isHttpError||webRequest.isNetworkError)
+ Debug.Log(webRequest.error);
+ else
+ {
+ Debug.Log(webRequest.downloadHandler.text);
+ }
+ }
特别地,在 Unity WebGL 环境下禁止使用以下代码:
while(!www.isDone) {}
不能阻止线程等待 UnityWebRequest 下载完成,否则您的应用程序将冻结。因为 WebGL 采用单线程机制,并且由于 JavaScript 中的 网络 API 是异步的,所以除非您将控制权交回给浏览器,否则下载永远不会完成。取而代之的做法是使用协程和 yield 语句等待下载完成。
如果游戏使用 TCP 进行网络通信,在 Unity WebGL 中开发者可以使用微信基础库中的TCPSocket(需要微信基础库3.1.1),也可以使用 Websocket 进行替代。
注意:出于应用场景考虑,TCPSocket.OnMessage表现与文档不一致。
/// <summary>
+/// [TCPSocket.onMessage(function listener)](https://developers.weixin.qq.com/minigame/dev/api/network/tcp/TCPSocket.onMessage.html)
+/// 监听当接收到数据的时触发该事件
+/// needInfo: 是否需要返回localInfo和remoteInfo,设置为 false 时这两个字段会返回null,设置为 true 会降低性能,请按需使用
+/// 多次使用OnMessage时needInfo以第一个OnMessage为准,OffMessage()移除所有回调后再次OnMessage可重新设置needInfo
+/// </summary>
+public void OnMessage(Action<TCPSocketOnMessageListenerResult> listener, bool needInfo = false)
使用举例:
using System.Text;
+using UnityEngine;
+using WeChatWASM;
+using LitJson;
+
+public class TCPTest : MonoBehaviour
+{
+ void Start()
+ {
+ // 初始化WXSDK
+ WX.InitSDK((int code) =>
+ {
+ Debug.Log("InitSDK code: " + code);
+ TestTCPSocket();
+ });
+ }
+
+ void TestTCPSocket()
+ {
+ Debug.Log("TestTCPSocket");
+ // 创建TCPSocket
+ WXTCPSocket tcp = WX.CreateTCPSocket();
+
+ // 注册回调
+ tcp.OnConnect(res =>
+ {
+ Debug.Log("tcp 连接成功");
+ //连接成功时发送数据
+ tcp.Write("TCP Write Test");
+ });
+ tcp.OnError(res =>
+ {
+ Debug.Log("tcp 连接失败" + JsonMapper.ToJson(res));
+ WX.ShowModal(new ShowModalOption()
+ {
+ content = res.errMsg
+ });
+ });
+ // 注意OnMessage参数与文档不同
+ tcp.OnMessage(res =>
+ {
+ Debug.Log("tcp 消息" + JsonMapper.ToJson(res));
+ WX.ShowModal(new ShowModalOption()
+ {
+ content = Encoding.UTF8.GetString(res.message)
+ });
+ }, true);
+
+ // 在给定的套接字上启动连接,请按需更改地址与端口
+ tcp.Connect(new TCPSocketConnectOption()
+ {
+ address = "www.example.com",
+ port = 8848
+ });
+ }
+}
支持 Unity Websocket 的第三方插件比较多,可以从 Github 或 AssetStore 找到。这里以UnityWebSocket为例。
// 命名空间
+using UnityWebSocket;
+
+// 创建实例
+string address = "ws://echo.websocket.org";
+WebSocket socket = new WebSocket(address);
+
+// 注册回调
+socket.OnOpen += OnOpen;
+socket.OnClose += OnClose;
+socket.OnMessage += OnMessage;
+socket.OnError += OnError;
+// 连接
+socket.ConnectAsync();
+// 发送 string 类型数据
+socket.SendAsync(str);
+// 或者 发送 byte[] 类型数据(建议使用)
+socket.SendAsync(bytes);
+// 关闭连接
+socket.CloseAsync();
UnityWebSocket需要对WebSocket.jslib做两处修改(新版本无需修改,感谢@psygames):
如果服务端使用 TCP 接入,则需要使用 WSS<-->TCP 的代理层。解决方案也很多:
特别地,在处理WebSocket数据包时,请注意数据的“粘包”问题,需要游戏服务器自行处理。
微信基础库支持UDPSocket类。
注意:出于应用场景考虑,TCPSocket.OnMessage表现与文档不一致。
/// <summary>
+/// [UDPSocket.onMessage(function listener)](https://developers.weixin.qq.com/minigame/dev/api/network/udp/UDPSocket.onMessage.html)
+/// 监听收到消息的事件
+/// needInfo: 是否需要返回localInfo和remoteInfo,设置为 false 时这两个字段会返回null,设置为 true 会降低性能,请按需使用
+/// 多次使用OnMessage时needInfo以第一个OnMessage为准,OffMessage()移除所有回调后再次OnMessage可重新设置needInfo
+/// </summary>
+public void OnMessage(Action<UDPSocketOnMessageListenerResult> listener, bool needInfo = false)
使用举例:
using System.Text;
+using UnityEngine;
+using WeChatWASM;
+using LitJson;
+
+public class UDPTest : MonoBehaviour
+{
+ // Start is called before the first frame update
+ void Start()
+ {
+ Debug.Log("Start");
+ WX.InitSDK((int code) =>
+ {
+ Debug.Log("InitSDK code: " + code);
+ TestUDPSocket();
+ });
+ }
+
+ void TestUDPSocket()
+ {
+ Debug.Log("TestUDPSocket");
+ // 创建UDPSocket
+ var udp = WX.CreateUDPSocket();
+ // 注册回调
+ udp.OnMessage(res =>
+ {
+ Debug.Log("udp 消息" + JsonMapper.ToJson(res));
+ WX.ShowModal(new ShowModalOption()
+ {
+ content = Encoding.UTF8.GetString(res.message)
+ });
+ });
+ // 绑定端口
+ udp.Bind();
+ // 向指定的 IP 和 port 发送消息,请按需更改地址和端口
+ udp.Send(new UDPSocketSendOption()
+ {
+ address = "www.example.com",
+ port = 8848,
+ message = "UDP Send Test"
+ });
+ }
+}
微信小游戏的网络需要提前在MP后台配置安全域名,以及使用带证书的HTTPS、WSS协议。
经常有开发者问道:“为什么开发者工具正常,真机访问异常” 或者 “打开调试时正常,但关闭时异常”,通常是由于安全域名与SSL证书:
也有开发者问道:“开发阶段还没SSL证书可以跑起来吗?” 、"开发阶段只有内网IP没正式域名,导致MP无法登记安全域名能跑起来吗?" 答案是肯定的:
访问HTTPS请求时,请检查SSL证书请确认是否过期,使用如通过在线工具检测。
真机预览时,只要用了HTTPS/WSS必然需要SSL证书,无法关闭;如无SSL证书或正式域名,可通过打开调试+HTTP/WS协议进行开发。
`,45),l=[k];function t(p,e,E,r,d,g){return a(),i("div",null,l)}const c=s(h,[["render",t]]);export{o as __pageData,c as default}; diff --git a/assets/Design_UsingNetworking.md.CGGJ9Pyc.lean.js b/assets/Design_UsingNetworking.md.CGGJ9Pyc.lean.js new file mode 100644 index 00000000..19740ba9 --- /dev/null +++ b/assets/Design_UsingNetworking.md.CGGJ9Pyc.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.CzhHXMZi.js";const o=JSON.parse('{"title":"网络通信适配","description":"","frontmatter":{},"headers":[],"relativePath":"Design/UsingNetworking.md","filePath":"Design/UsingNetworking.md"}'),h={name:"Design/UsingNetworking.md"},k=n("",45),l=[k];function t(p,e,E,r,d,g){return a(),i("div",null,l)}const c=s(h,[["render",t]]);export{o as __pageData,c as default}; diff --git a/assets/Design_UsingPreload.md.QbZCBWkG.js b/assets/Design_UsingPreload.md.QbZCBWkG.js new file mode 100644 index 00000000..bb93991e --- /dev/null +++ b/assets/Design_UsingPreload.md.QbZCBWkG.js @@ -0,0 +1,66 @@ +import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.CzhHXMZi.js";const l="/minigame-unity-webgl-transform/assets/usingpreload1.Ci_fdB50.png",y=JSON.parse('{"title":"使用预下载功能","description":"","frontmatter":{},"headers":[],"relativePath":"Design/UsingPreload.md","filePath":"Design/UsingPreload.md"}'),t={name:"Design/UsingPreload.md"},e=n('通过 启动流程与时序我们知道,在UnityLoader加载过程中存在网络空闲的情况。特别是“引擎初始化和首场景准备”,影响该步骤包括:引擎自身模块与数据初始化,游戏首个场景加载以及Awake流程。这个过程是CPU处理密集,但网络空闲的期间,根据机型性能不同,通常平均耗时会在3~6s左右,我们可以在此阶段提前下载资源。
在引擎初始化期间,最多并发10个预下载。已发起但未完成的下载任务,以及列表中尚未发起的任务,会在引擎初始完成后继续进行,但并发数为1个。可通过Csharp接口 WX.PreloadConcurrent
修改引擎初始化后的预下载并发数,若想修改引擎初始化期间的并发数,需要使用js接口 GameGlobal.manager.setConcurrent
preloadFiles: -- $PRELOAD_LIST
在Unity转换导出插件填写文件列表,生成时工具会自动从webgl/StreamAssets目录找资源并填充到game.js。 运行时UnityLoader将根据列表内容在网络空闲期下载。
除了在Unity转换导出插件填写文件列表外,也可以在生成的game.js手动配置:
let managerConfig = {
+ /* 省略其他配置 */
+
+ /**
+ * 假设: AB包打包到 path1/StreamingAssets/WebGL这个目录下; STREAMING_CDN是以path1为根路径上传到服务器的CDN地址
+ */
+ // 需要在网络空闲时预加载的资源,支持如下形式的路径。
+ preloadDataList: [
+ // '$STREAM_CDN/StreamingAssets/WebGL/textures_8d265a9dfd6cb7669cdb8b726f0afb1e',
+ // '/WebGL/sounds_97cd953f8494c3375312e75a29c34fc2'
+ "$PRELOAD_LIST" // 导出时自动替换
+ ],
+}
可能存在资源热更,导致配置在预下载列表中的资源是旧版本的资源。支持通过接口在运行时动态修改预下载列表
假设有后台接口 https://api.example.com/preloadlist
返回如下数据:
{
+ "list": [
+ "https://cdn.example.com/file1",
+ "https://cdn.example.com/file2",
+ "https://cdn.example.com/file3",
+ ]
+}
在插件启动前,拉取游戏后台获取最新的预下载列表,修改 managerConfig.preloadDataList
或通过js接口 GameGlobal.manager.setPreloadList
修改
伪代码如下:
managerConfig.preloadDataList
wx.request({
+ url: 'https://api.example.com/preloadlist', // 修改为实际API地址
+ success(res) {
+ if (res.statusCode === 200) {
+ managerConfig.preloadDataList = res.data.list;
+ }
+ },
+ complete() {
+ // 成功与否都开始启动unity
+ GameGlobal.manager.startGame();
+ }
+})
GameGlobal.manager.setPreloadList
wx.request({
+ url: 'https://api.example.com/preloadlist', // 修改为实际API地址
+ success(res) {
+ if (res.statusCode === 200) {
+ GameGlobal.manager.setPreloadList(res.data.list);
+ }
+ },
+ complete() {
+ // 成功与否都开始启动unity
+ GameGlobal.manager.startGame();
+ }
+})
同样的,拉取游戏后台接口获取最新的预下载列表后,通过C#接口 WX.SetPreloadList
修改
伪代码如下:
private IEnumerator GetPreloadList()
+{
+ using (UnityWebRequest www = UnityWebRequest.Get("https://api.example.com/preloadlist"))
+ {
+ yield return www.SendWebRequest();
+ if (www.result != UnityWebRequest.Result.Success)
+ {
+ Debug.Log(www.error);
+ }
+ else
+ {
+ string json = www.downloadHandler.text;
+ PreloadListData preloadListData = JsonUtility.FromJson<PreloadListData>(json);
+
+ // 获取URL列表
+ WX.SetPreloadList(preloadListData.list.ToArray());
+ }
+ }
+}
+
+
+[System.Serializable]
+public class PreloadListData
+{
+ public List<string> list;
+}
$STREAM_CDN/StreamingAssets/WebGL/textures_8d265a9dfd6cb7669cdb8b726f0afb1e
;实际发起预载请求的URL采用填写的地址/WebGL/sounds_97cd953f8494c3375312e75a29c34fc2
;实际发起请求的URL为DATA_CDN/StreamingAssets/WebGL/sounds_97cd953f8494c3375312e75a29c34fc2
查看插件调试信息, 当存在 PreloadManager:
字样日志,即为预下载。
游戏基本会使用中文,中文字体大小少则2-3M。
通过微信系统字体,从本地加载中文,可节省启动下载的资源量。再不支持使用微信系统字体时,回退成通过CDN下载后备字体的形式。
转换插件 >= 202306292010
提供了 WX.GetWXFont
接口用于加载后备/系统字体
其中,微信客户端满足以下版本要求时,可从本地加载字体,无需网络下载
若不满足客户端版本要求,首次从网络下载,当符合缓存规则时,后续从本地文件缓存加载
详细示例可参考系统字体demo
var fallbackFont = "https://www......com/字体文件.ttf";
+WeChatWASM.WX.GetWXFont(fallbackFont, (font) =>
+{
+ text.font = font;
+ tmpText.font = TMP_FontAsset.CreateFontAsset(font);
+});
// https://unicode.yunser.com/unicode
+const unicodeRange = [
+ // 基本汉字 https://www.unicode.org/charts/PDF/U4E00.pdf
+ [0x4e00, 0x9fff],
+ // 基本拉丁语(英文大小写、数字、英文标点)https://www.unicode.org/charts/PDF/U0000.pdf
+ [0x0, 0x7f],
+ // 中文标点符号 https://www.unicode.org/charts/PDF/U3000.pdf
+ [0x3000, 0x303f],
+ // 通用标点符号 https://www.unicode.org/charts/PDF/U2000.pdf
+ [0x2000, 0x206f],
+ // CJK字母及月份 http://www.unicode.org/charts/PDF/U3200.pdf
+ [0x3200, 0x32ff],
+ // 中文竖排标点 http://www.unicode.org/charts/PDF/UFE10.pdf
+ [0xfe10, 0xfe1f],
+ // CJK兼容符号 http://www.unicode.org/charts/PDF/UFE30.pdf
+ [0xfe30, 0xfe4f],
+ // 杂项符号 http://www.unicode.org/charts/PDF/U2600.pdf
+ [0x2600, 0x26ff],
+ // CJK特殊符号 http://www.unicode.org/charts/PDF/U3300.pdf
+ [0x3300, 0x33ff],
+ // 全角ASCII、全角中英文标点、半宽片假名、半宽平假名、半宽韩文字母 http://www.unicode.org/charts/PDF/UFF00.pdf
+ [0xff00, 0xffef],
+ // 装饰符号 http://www.unicode.org/charts/PDF/U2700.pdf
+ [0x2700, 0x27bf],
+ // 字母式符号 https://www.unicode.org/charts/PDF/U2100.pdf
+ [0x2100, 0x214f],
+ // 带圈或括号的字母数字 https://www.unicode.org/charts/PDF/U2460.pdf
+ [0x2460, 0x24ff],
+ // 数字形式 https://www.unicode.org/charts/PDF/U2150.pdf
+ [0x2150, 0x218f],
+ // 货币符号 https://www.unicode.org/charts/PDF/U20A0.pdf
+ [0x20a0, 0x20cf],
+ // 箭头 https://www.unicode.org/charts/PDF/U2190.pdf
+ [0x2190, 0x21ff],
+ // 几何图形 https://www.unicode.org/charts/PDF/U25A0.pdf
+ [0x25a0, 0x25ff],
+ // 数学运算符号 https://www.unicode.org/charts/PDF/U2200.pdf
+ [0x2200, 0x22ff],
+];
将 WX-WASM-SDK 这个目录拷贝至unity工程 Assets目录下,在主入口初始化,回调后再执行你的主逻辑
WX.InitSDK((int code)=> {
+// 你的主逻辑
+});
API可以直接看WX.cs
这个文件,里面有详细注释说明
。
本Unity的SDK的API大体与官网的JS版本API类似,使用时可以参考之。 如JS版的banner广告的调用如下:
var bannerAd = wx.createBannerAd({
+ adUnitId: "xxxx",
+ adIntervals: 30,
+ style: {
+ left: 0,
+ top: 0,
+ width: 600,
+ height:200
+ }
+ });
+ bannerAd.onLoad(() => {
+ bannerAd.show();
+ });
+ bannerAd.onError((res)=>{
+ console.log(res);
+ });
而对于Unity版的调用如下:
+ var bannerAd = WX.CreateBannerAd(new WXCreateBannerAdParam()
+ {
+ adUnitId = "xxxx",
+ adIntervals = 30,
+ style = new Style()
+ {
+ left = 0,
+ top = 0,
+ width = 600,
+ height = 200
+ }
+ });
+
+ bannerAd.OnLoad(()=> {
+ bannerAd.Show();
+ });
+ bannerAd.OnError((WXADErrorResponse res)=>
+ {
+ Debug.Log(res.errCode);
+ });
大体是将JS版中的wx
替换为Unity版的WX
,然后对应方法名首字母由小写改为大写,如createBannerAd
就变为CreateBannerAd
使用示例我们会逐渐补充到Demo, 其中API项目为常见到使用范例,请优先查阅用法。
如果开发者有简单的JS代码经验,建议先以JS方式直接修改minigame的JS代码进行调试,完成之后再使用C# SDK修改Unity工程:
const gl = GameGlobal.canvas.getContext('webgl')
+ gl.clear(gl.COLOR_BUFFER_BIT);
分类 | 类名 | 方法名 |
---|---|---|
初始化SDK | WX | InitSDK |
振动 | VibrateShort | |
VibrateLong | ||
本地存储 | StorageSetIntSync | |
StorageGetIntSync | ||
StorageSetStringSync | ||
StorageGetStringSync | ||
StorageSetFloatSync | ||
StorageGetFloatSync | ||
StorageDeleteAllSync | ||
StorageDeleteKeySync | ||
StorageHasKeySync | ||
登录 参考地址 | Login | |
CheckSession | ||
Authorize | ||
用户信息 参考地址 | GetUserInfo | |
CreateUserInfoButton | ||
客户端信息 | GetSystemInfo | |
GetSystemInfoSync | ||
GetSystemLanguage | ||
分享转发 参考地址 | UpdateShareMenu | |
ShowShareMenu | ||
HideShareMenu | ||
SetMessageToFriendQuery | ||
ShareAppMessage | ||
ShowShareMenu | ||
OnShareAppMessage | ||
OffShareAppMessage | ||
OnShareTimeline | ||
OffShareTimeline | ||
OnAddToFavorites | ||
OffAddToFavorites | ||
GetShareInfo | ||
AuthPrivateMessage | ||
广告 参考地址 | CreateRewardedVideoAd | |
CreateFixedBottomMiddleBannerAd | ||
CreateInterstitialAd | ||
CreateGridAd | ||
CreateBannerAd | ||
CreateCustomAd | ||
生命周期 | OnShow | |
OffShow | ||
OnHide | ||
OffHide | ||
GetLaunchOptionsSync | ||
OnAudioInterruptionBegin | ||
OnAudioInterruptionEnd | ||
OffAudioInterruptionEnd | ||
OffAudioInterruptionBegin | ||
文件 | GetFileSystemManager | |
开放数据 | GetOpenDataContext | |
ShowOpenData | ||
HideOpenData | ||
SetUserCloudStorage | ||
RemoveUserCloudStorage | ||
输入法 | UpdateKeyboard | |
ShowKeyboard | ||
HideKeyboard | ||
OnKeyboardInput | ||
OnKeyboardConfirm | ||
OnKeyboardComplete | ||
OffKeyboardInput | ||
OffKeyboardConfirm | ||
OffKeyboardComplete | ||
渲染 | WXCanvas | ToTempFilePathSync |
unity 导出小游戏项目后,代码是在一个 wasm 文件里,经过 brotli 压缩后,放在 wasmcode 目录下
一般小游戏的 wasm 大小都为 30M 左右,压缩后为 6M 左右
启动阶段,小游戏需要先下载完 wasmcode 再编译,这里会占用较高的内存和时间
因此我们提供了代码分包工具,将原来的 wasm 拆分为两个,一个用于启动加载(主包),另一个可以延迟加载(子包)
使得小游戏可以先加载较小的首包进入主场景,再异步加载剩下的分包
另外对于iOS高性能模式,子包不会加载,会转为按函数粒度按需加载
分包的作用在于优化启动时间
另外对于 iOS 新的高性能模式,分包还有两个作用:
目前我们采用了一种 Profile Guided Optimization 的方式,通过运行时收集信息,按函数粒度对小游戏的 wasm 代码包进行拆分
开发者可以在离线测试阶段,通过真机运行小游戏,并尽量覆盖游戏内的场景,特别是启动后最先进入的场景和关卡(比如新手教学,游戏最初的关卡内容)来收集信息
工具上会显示收集到的函数个数,这时候就可以重新分包,将收集到的函数加入首包
因此收集工作非常重要,收集的场景覆盖率越高,命中子包的时机就可以相应延后,使得首包可以满足大部分新玩家前几分钟的游戏进程
我们提供了一个微信开发者工具里的插件来辅助分包过程,依赖的开发者工具版本为 1.05.2104251 RC 及以上,稳定版 1.05.2105100 已支持
通过开发者工具的设置-拓展设置-编辑器自定义拓展,安装 wasmCodeSplit 这个插件
开发者工具上(如果用的是stable版,非minigame版)的插件一般是自动更新的
手动更新
分包插件按小游戏的md5(wasmcode下的wasm文件名里的md5)来区分不同的小游戏包
相同md5的小游戏包会复用同一份分包结果
对于新构建的小游戏包,分包流程如下:
最后一步这里已经可以随时上传体验版了
具体操作和注意事项如下
打开插件开关后,在目录树上的工具栏中,可以看到插件的按钮,如图所示,点击后即可进入插件页:
注意:如果出现红框中的提示,说明这里的状态更新已经中断,需要重启开发者工具
这一步一般是分钟级的耗时,如果等待超过10分钟,建议先重启下开发者工具
如果这个游戏之前的包已经有用过代码分包,没有比较大的代码修改的情况下(比如大范围的代码重构,更换引擎),可以使用增量更新,也就是选择之前的某个包作为参考
我们会对比前后两个包的symbol,把之前收集过的函数当做放到首包,即无需重复收集
因此要求前后两个包都必须提供symbol文件
在unity侧使用微信插件导出时,需要开启profiling func,这样打包时就会导出symbol文件
无需担心开启profiling func导致的包体增大,分包工具会优化函数名
android收集 + iOS收集
分包的收集,一般需要android和iOS单独收集
收集操作:
这里主要关注首包函数个数,一般跑完这两个步骤首包函数占整包函数个数的30%以上就差不多了
android和iOS收集完,基本就可以测试和发布了
有条件的话,可以尽量覆盖各种机型(主流品牌)再多跑几次收集
每次收集发现新增函数趋于稳定之后,就可以继续点生成profile分包或者生成release分包
每次点生成时,会先跳到前面的等待分包界面,完成后再回来
每次生成会当前的分包version会加1
如果想回退到未分包的版本,点击关闭代码分包即可
上线前
首包函数个数
至少要有原始包函数总数的30%新增收集函数个数
清零wait for func
的日志)fetch js
相关的日志如果有最后两点,那就还要继续收集+生成分包
上线后
新增收集函数个数
这个数据非常重要,要尽量保持关注,包括上线后如果上线后,有玩家遇到新增函数个数,分包插件上也会更新(主要来源是iOS高性能),或者收到小游戏数据助手的相关告警,这个时候要继续生成分包,同时提审发布
对于 iOS 高性能模式,由于内存限制,游戏加载完整 wasm 基本就会内存 crash。分包能降低内存占用,同时我们对子包支持按需加载,才让游戏能稳定跑起来
所以如果是使用了 iOS 高性能模式则是必须的
对于 android 和 iOS 普通模式,分包主要目的是优化启动加载,另外这两个 runtime 下由于子包可以全量加载,因此对游戏运行影响最多只有加载子包的一次性影响
我们也会在启动 callmain 后 30s 提前加载子包,在这个时间之后才触发未收集函数的情况也不会有加载子包的影响
按照我们经验,一般首包函数有整包个数的 33%以上的时候就可以接受了,当然能尽量再收集完善刚好,个别游戏可能会接近 50%
这时候不代表没收集的函数都没用了,实际上有些函数可能只是调用比较冷门,后续还是可能会被调到,可以通过分包插件面板的新增收集函数个数
来留意线上新增的情况,
如果线上新增较多(超过 50),可以考虑再往下分一次包然后提审发布
我们针对这种情况也有线上patch可以进行补漏,但是patch有大小限制
建议新增收集函数个数超过100个的还是要生成新分包+发版本
对的,用户下载的代码包只能是提审发布过的
目前还没出现这种情况,超过整包 50%的都很少
大部分游戏收集 1 小时的函数个数都在 33%到 50%之间
可以等收集函数超过 75%了再来考虑这个问题
iOS 高性能模式收集很卡
iOS 高性能模式由于加载子包的实现不同,刚开始收集时又基本是跑子包函数,所以最开始的收集会比较卡
这个时候可以观察分包插件面板,如果能看到有新增函数个数的变化,一般就是没问题的。如果出现卡顿(并且有新增函数)或者新增函数较多(超过 50),可以先继续往下生成分包,再进行收集。游戏运行会随着收集越来越流畅
iOS 高性能模式代码分包后内存反而变得很高
这种情况一般是太多新增函数(比如几百个),iOS 高性能模式的子包代码也会占用大量内存,可以继续生成分包,将这部分函数放在首包(放首包的内存占用相对小些)
iOS 高性能模式出现 impport section's count is too big
新版的插件已经规避这个问题,更新插件即可
由于增量分包是新增的功能,因此之前的项目不能被用来增量更新。更新分包插件后,第二次导出的版本开始才可以使用
请检查指定参考的旧版本以及当前版本是否都有 symbol 文件,以及是否有更换引擎或者其他导致代码变动较大的操作
微信开发者工具会自动更新分包插件,一般不需要手动更新。可前往微信开发者工具-编辑器区域-拓展列表查看插件版本确认是否为最新版本
请勿使用小游戏版微信开发者工具,会出现插件无法正常更新或安装。请前往:适配文档-安装与使用,下载stable版本微信开发者工具。
首先确认是否为stable版本开发者工具。
有两个地方可安装插件:
遇到流程卡住问题,一般先尝试关闭分包,然后重启开发者工具,再打开分包,大部分时候有奇效
当出现问题时,优先排查是否stable版本的微信开发者工具,能解决大部分问题。 若问题仍无法解决,可联系小游戏研发助手8号,提供日志排查。 日志获取方式:
菜单栏-微信开发者工具-调试-调试微信开发者工具,搜索关键字:extension host。可右键保存日志文件
下载wk_import包失败
错误null function or function signature mismatch
问题WebGL 是一种用于在 Web 浏览器中渲染图形的 API,基于 OpenGL ES 图形库的功能。WebGL 1.0 大致与 OpenGL ES 2.0 功能相匹配,而 WebGL 2.0 大致与 OpenGL ES 3.0 功能相匹配。 根据游戏项目统计,我们发现相对于WebGL1,更适合以下游戏需求:
Unity WebGL较多渲染优化特性依赖WebGL2.0, 因此这里需要针对该特性在小游戏环境的支持进一步说明。
如遇到问题请与小游戏研发助手(微信号:minigamedevop08)联系详细排查。
原因:iOS WebKit对webGL2的支持存在问题,当uniform变量过多时,会出现绘制不正确、不绘制、效率变低等现象;
解决方法:
减少shader中Instance Props的大小;
shader中添加instancing_options选项(可参考Unity官方文档说明)
根据机型分级,使用GPU instance特性或合批处理(已知iPhone7p及以下机型需要进一步限制instance count)
小游戏的屏幕适配与unity游戏适配常见手机屏幕没有区别。常见的适配方式都可以在小游中使用。区别的是一些屏幕信息的获取。 如安全区域的获取需调用 WX.GetSystemInfoSync得到其中的安全区域。 如下是适配刘海屏(这里以竖屏游戏按高度适配为例)的示例:
var info = WX.GetSystemInfoSync();
+ float py = (float)info.safeArea.top / (float)info.windowHeight;
+ // Rootrect初始时设置其Anchor,使其与父节点一样大,也就是屏幕的大小
+ // 调整屏幕移到刘海屏下面,
+ Rootrect.anchorMin = new Vector2((float)info.safeArea.left / (float)info.windowWidth, -(float)info.safeArea.top / (float)info.windowHeight );
+ // 重新计算缩放,让高度占满刘海屏以下的区域
+ cs.referenceResolution = new Vector2(cs.referenceResolution.x, cs.referenceResolution.y * (1.0f+py));
从systemInfo 中获取的安全区域的数值,需要乘以systemInfo中的pixelRatio才为Unity中的大小,而且手机屏幕左上角为(0,0)
因为 Unity 2019.3之前的版本对高分辨屏适配不是很好。会出现画面模糊的情况,所以最好选择Unity 2019.3
之后的版本来构建你的游戏。如果游戏不能升级版本,也可以引入SDK,在初始化SDK后,SDK会自动对页面做一个兼容适配,避免模糊的问题。
//初始化SDK
+WX.InitSDK((int code)=> {
+// 你的主逻辑
+});
在 iOS 环境下,标准的微信小游戏 WASM 运行模式是无 JIT, 对于计算性能要求较高的游戏会受到比较大的限制。常见情况是:
小游戏环境框架提供了高性能运行模式,该运行模式下 CPU 算力得到明显提升。但该模式也存在更严格的内存与代码包体限制,需要开发者采取合适的手段以达到最优。
高性能+模式开创新地在保留游戏独立进程的基础上将渲染重新挪回了微信进程,这使得渲染效果和渲染内存消耗都得到了改善。详细文档请查阅高性能+模式。 特别地,建议使用WebGL2、内存压力大的游戏开启此选项。开启后请验证进程内存、渲染兼容性、帧耗时数据是否正常。
通过多款游戏项目,我们得到实际游戏项目的 CPU 占用如下图所示:
我们得到以下结论:
使用 Unity 所提供的 Benchmark Demo 的部分案例进行评测:
测试过程为不断增加运算复杂度,直到帧率下降到特定数值。
分数越高,代表的运行能力越强。
上图分别是 iOS 端普通模式与高性能模式的得分,可以看到在几个压测示例中高性能模式均明显优于普通模式。
经实际游戏测试,游戏帧率都会得到明显改善,虽无法达到 Benchmark 几乎一个数量级的差异。
iOS 端小游戏高性能模式适用于遇到 iOS 环境运行性能不足,运行发烫的小游戏。
高性能模式下,iOS 低端机(6s/7/8 等)2G RAM 机型的内存限制为 1G,中高端机(7P/8P/iPhoneX/XSAMX/11/12 等)3G 以上内存机型的内存限制为 1.5G(安全内存建议1.2G~1.3G),因此开发者务必保证内存峰值不超过该数值。
建议开发者根据指引优化 Unity WebGL 的内存。
高性能模式下,WASM 代码将被编译并优化,需要占用更多的编译消耗与内存。如果未进行优化前,可以明显感受到启动开始阶段(如启动前 1 分钟内)设备发烫。
上线发布时,特别建议使用WASM 代码分包+压缩纹理+UnityHeap预留这几种优化手段。
可通过微信开发者工具查看 Content-Encoding 是否为 gzip 或 br
如果有正确压缩,可忽略这个错误。
问题原因:由于跨域获取不到 Content-Encoding 头
解决办法:增加跨域头部"Access-Control-Expose-Headers": "Content-Length, Content-Encoding",
isTrusted
多半由于跨域问题导致,可通过开发者工具查看对应资源的 Response Header 是否有跨域头, 请参考文档网络通信适配关于跨域的问题
视频格式参考:
Loading 视频规范:
+横屏视频:16:9(素材分辨率:960 px × 540 px)
+竖屏视频:9:16(视频分辨率:750 px × 1334 px)
+视频尺寸:不超过 10MB
+视频时长:6~15 秒
+支持格式:MP4
+注:视频会在 Loading 期间重复播放
+----
+以下为视频建议参数(仅供参考)
+视频编码:H.264
+FPS:24
+码率:小于 800 kbit/s
+MP4 Profile:Main
+音轨格式:AAC
+音轨Sample Rate:44.1 kHz
+音轨 Datarate:96 kbit/sec
如果同时使用代码分包插件,需要在使用分包插件后,再使用水印插件对分包后的wasm代码打水印
在平台原有相似度检测基础上,为进一步保障wasm小游戏的代码安全,引入wasm水印机制 已添加水印的wasm游戏,若遭遇恶意人员扒包抄袭,平台可通过水印准确检测出游戏的原作者,并处罚恶意抄袭人员
插件依赖微信开发者工具1.05.2104251 RC 及以上,稳定版 1.05.2105100 及以上
部分示意图可能有出入,请升级微信开发者工具版本
打开拓展设置,找到水印工具,添加插件
在目录树上方工具栏找到水印工具icon,点击显示水印插件面板
项目首次使用插件默认会启用打水印功能。
插件检测并展示项目中的wasm文件,开发者自行决定是否需要上传并打水印。
点击上传按钮后,插件会自动执行逻辑
正在打水印
下载中
已完成
完成后,即可测试小游戏是否正常运行,若有异常,可点击还原wasm文件到初始状态,重新打水印。
当有两个wasm文件时,操作同理
若不想使用水印功能,点击关闭水印,wasm代码回到初始状态
打水印和下载过程可能会有一定耗时,请耐心等待。
若AppID为测试号,或者是小程序AppID,会出现如下界面,更换正确的AppID后重新检测即可
',34),n=[m];function d(h,l,w,u,g,_){return r(),t("div",null,n)}const f=e(c,[["render",d]]);export{k as __pageData,f as default}; diff --git a/assets/Design_wasmWaterMark.md.DPIZOW_B.lean.js b/assets/Design_wasmWaterMark.md.DPIZOW_B.lean.js new file mode 100644 index 00000000..7a0f2b60 --- /dev/null +++ b/assets/Design_wasmWaterMark.md.DPIZOW_B.lean.js @@ -0,0 +1 @@ +import{_ as a}from"./chunks/extension-panel.CY9x27Ol.js";import{_ as e,c as t,o as r,a4 as s}from"./chunks/framework.CzhHXMZi.js";const o="/minigame-unity-webgl-transform/assets/panel.SGItx1qt.png",p="/minigame-unity-webgl-transform/assets/add.CWlt1hFU.png",i="/minigame-unity-webgl-transform/assets/icon.BKg32493.png",k=JSON.parse('{"title":"wasm水印插件","description":"","frontmatter":{},"headers":[],"relativePath":"Design/wasmWaterMark.md","filePath":"Design/wasmWaterMark.md"}'),c={name:"Design/wasmWaterMark.md"},m=s("",34),n=[m];function d(h,l,w,u,g,_){return r(),t("div",null,n)}const f=e(c,[["render",d]]);export{k as __pageData,f as default}; diff --git a/assets/README.md.BByb9FW2.js b/assets/README.md.BByb9FW2.js new file mode 100644 index 00000000..4361bb27 --- /dev/null +++ b/assets/README.md.BByb9FW2.js @@ -0,0 +1 @@ +import{_ as i}from"./chunks/showcase25.C-ERrYO-.js";import{_ as e,c as l,o as a,a4 as t}from"./chunks/framework.CzhHXMZi.js";const r="/minigame-unity-webgl-transform/assets/showcase34.B1YJ7Mgk.png",n="/minigame-unity-webgl-transform/assets/showcase32.oc_3wbrg.png",h="/minigame-unity-webgl-transform/assets/showcase33.BLPWsQzS.png",y=JSON.parse('{"title":"Unity WebGL 微信小游戏适配方案(公测)","description":"","frontmatter":{},"headers":[],"relativePath":"README.md","filePath":"README.md"}'),s={name:"README.md"},o=t('欢迎使用 Unity WebGL 小游戏适配(转换)方案,本方案设计目的是降低 Unity 游戏转换到微信小游戏的开发成本。基于WebAssembly技术,无需更换Unity引擎与重写核心代码的情况下将原有游戏项目适配到微信小游戏。
我叫MT2(回合战斗) | 旅行串串(休闲) | 谜题大陆(SLG) | 热血神剑(MMO) |
---|---|---|---|
安装 团结/Unity 微信SDK,版本更新请查看更新日志
方案概述与兼容性
性能优化
技术沙龙
启动性能
运行性能
版本更新与资源部署
能力适配
调试与异常
问题反馈
',25),m=[o];function g(f,d,p,u,D,c){return a(),l("div",null,m)}const S=e(s,[["render",g]]);export{y as __pageData,S as default}; diff --git a/assets/README.md.BByb9FW2.lean.js b/assets/README.md.BByb9FW2.lean.js new file mode 100644 index 00000000..7915f566 --- /dev/null +++ b/assets/README.md.BByb9FW2.lean.js @@ -0,0 +1 @@ +import{_ as i}from"./chunks/showcase25.C-ERrYO-.js";import{_ as e,c as l,o as a,a4 as t}from"./chunks/framework.CzhHXMZi.js";const r="/minigame-unity-webgl-transform/assets/showcase34.B1YJ7Mgk.png",n="/minigame-unity-webgl-transform/assets/showcase32.oc_3wbrg.png",h="/minigame-unity-webgl-transform/assets/showcase33.BLPWsQzS.png",y=JSON.parse('{"title":"Unity WebGL 微信小游戏适配方案(公测)","description":"","frontmatter":{},"headers":[],"relativePath":"README.md","filePath":"README.md"}'),s={name:"README.md"},o=t("",25),m=[o];function g(f,d,p,u,D,c){return a(),l("div",null,m)}const S=e(s,[["render",g]]);export{y as __pageData,S as default}; diff --git a/assets/add.CWlt1hFU.png b/assets/add.CWlt1hFU.png new file mode 100644 index 00000000..3fa9b670 Binary files /dev/null and b/assets/add.CWlt1hFU.png differ diff --git a/assets/addPlugin.wW8f1Te-.png b/assets/addPlugin.wW8f1Te-.png new file mode 100644 index 00000000..f4f84e4e Binary files /dev/null and b/assets/addPlugin.wW8f1Te-.png differ diff --git a/assets/addressable10.CVteO2U4.png b/assets/addressable10.CVteO2U4.png new file mode 100644 index 00000000..521288bd Binary files /dev/null and b/assets/addressable10.CVteO2U4.png differ diff --git a/assets/addressable2.Dk3Ey3UQ.png b/assets/addressable2.Dk3Ey3UQ.png new file mode 100644 index 00000000..1ac8197f Binary files /dev/null and b/assets/addressable2.Dk3Ey3UQ.png differ diff --git a/assets/addressable3.D_qvXfAd.png b/assets/addressable3.D_qvXfAd.png new file mode 100644 index 00000000..ed1732ac Binary files /dev/null and b/assets/addressable3.D_qvXfAd.png differ diff --git a/assets/addressable5.CfIJPhUo.png b/assets/addressable5.CfIJPhUo.png new file mode 100644 index 00000000..9600a3b2 Binary files /dev/null and b/assets/addressable5.CfIJPhUo.png differ diff --git a/assets/addressable7.D5VA3cAj.png b/assets/addressable7.D5VA3cAj.png new file mode 100644 index 00000000..2b434f9d Binary files /dev/null and b/assets/addressable7.D5VA3cAj.png differ diff --git a/assets/addressable9.BGoeNYVl.png b/assets/addressable9.BGoeNYVl.png new file mode 100644 index 00000000..f3b32594 Binary files /dev/null and b/assets/addressable9.BGoeNYVl.png differ diff --git a/assets/android_running_performance.0A9W-niz.png b/assets/android_running_performance.0A9W-niz.png new file mode 100644 index 00000000..41bd1126 Binary files /dev/null and b/assets/android_running_performance.0A9W-niz.png differ diff --git a/assets/android_start_performance.B_mgYBnj.png b/assets/android_start_performance.B_mgYBnj.png new file mode 100644 index 00000000..6a6f4f09 Binary files /dev/null and b/assets/android_start_performance.B_mgYBnj.png differ diff --git a/assets/androidprofile1.CWmGtjYo.png b/assets/androidprofile1.CWmGtjYo.png new file mode 100644 index 00000000..5b46c2f9 Binary files /dev/null and b/assets/androidprofile1.CWmGtjYo.png differ diff --git a/assets/androidprofile2.BV1rYep4.png b/assets/androidprofile2.BV1rYep4.png new file mode 100644 index 00000000..b1f17645 Binary files /dev/null and b/assets/androidprofile2.BV1rYep4.png differ diff --git a/assets/androidprofile3.C3xDSI1N.png b/assets/androidprofile3.C3xDSI1N.png new file mode 100644 index 00000000..ba9dc03a Binary files /dev/null and b/assets/androidprofile3.C3xDSI1N.png differ diff --git a/assets/androidprofile4.D2zXydy3.png b/assets/androidprofile4.D2zXydy3.png new file mode 100644 index 00000000..bd9aa822 Binary files /dev/null and b/assets/androidprofile4.D2zXydy3.png differ diff --git a/assets/androidprofile5.v23kq4o6.png b/assets/androidprofile5.v23kq4o6.png new file mode 100644 index 00000000..7c6a7f1f Binary files /dev/null and b/assets/androidprofile5.v23kq4o6.png differ diff --git a/assets/app.9coSzMtv.js b/assets/app.9coSzMtv.js new file mode 100644 index 00000000..716df161 --- /dev/null +++ b/assets/app.9coSzMtv.js @@ -0,0 +1 @@ +import{V as o,a5 as p,a6 as u,a7 as l,a8 as c,a9 as f,aa as d,ab as m,ac as h,ad as g,ae as A,Y as P,d as _,u as v,k as y,y as C,af as E,ag as b,ah as w,ai as R}from"./chunks/framework.CzhHXMZi.js";import{t as S}from"./chunks/theme.C-vFUWHO.js";function i(e){if(e.extends){const a=i(e.extends);return{...a,...e,async enhanceApp(t){a.enhanceApp&&await a.enhanceApp(t),e.enhanceApp&&await e.enhanceApp(t)}}}return e}const s=i(S),T=_({name:"VitePressApp",setup(){const{site:e,lang:a,dir:t}=v();return y(()=>{C(()=>{document.documentElement.lang=a.value,document.documentElement.dir=t.value})}),e.value.router.prefetchLinks&&E(),b(),w(),s.setup&&s.setup(),()=>R(s.Layout)}});async function D(){globalThis.__VITEPRESS__=!0;const e=L(),a=V();a.provide(u,e);const t=l(e.route);return a.provide(c,t),a.component("Content",f),a.component("ClientOnly",d),Object.defineProperties(a.config.globalProperties,{$frontmatter:{get(){return t.frontmatter.value}},$params:{get(){return t.page.value.params}}}),s.enhanceApp&&await s.enhanceApp({app:a,router:e,siteData:m}),{app:a,router:e,data:t}}function V(){return h(T)}function L(){let e=o,a;return g(t=>{let n=A(t),r=null;return n&&(e&&(a=n),(e||a===n)&&(n=n.replace(/\.js$/,".lean.js")),r=P(()=>import(n),[])),o&&(e=!1),r},s.NotFound)}o&&D().then(({app:e,router:a,data:t})=>{a.go().then(()=>{p(a.route,t.site),e.mount("#app")})});export{D as createApp}; diff --git a/assets/asset-analysis-window.D04lUzYU.png b/assets/asset-analysis-window.D04lUzYU.png new file mode 100644 index 00000000..06344481 Binary files /dev/null and b/assets/asset-analysis-window.D04lUzYU.png differ diff --git a/assets/assetbundle-unnormal-memory.CY0FXhT_.png b/assets/assetbundle-unnormal-memory.CY0FXhT_.png new file mode 100644 index 00000000..c61ff3d2 Binary files /dev/null and b/assets/assetbundle-unnormal-memory.CY0FXhT_.png differ diff --git a/assets/auth_plugin.DqkcQvPd.png b/assets/auth_plugin.DqkcQvPd.png new file mode 100644 index 00000000..8b52b4e6 Binary files /dev/null and b/assets/auth_plugin.DqkcQvPd.png differ diff --git a/assets/benchmarkprofile.BvHHzfgK.png b/assets/benchmarkprofile.BvHHzfgK.png new file mode 100644 index 00000000..d6a82b3f Binary files /dev/null and b/assets/benchmarkprofile.BvHHzfgK.png differ diff --git a/assets/cache_path.DmEqMbAH.png b/assets/cache_path.DmEqMbAH.png new file mode 100644 index 00000000..3eed4d54 Binary files /dev/null and b/assets/cache_path.DmEqMbAH.png differ diff --git a/assets/cf-free.BM2qYFhS.jpg b/assets/cf-free.BM2qYFhS.jpg new file mode 100644 index 00000000..8bbb545a Binary files /dev/null and b/assets/cf-free.BM2qYFhS.jpg differ diff --git a/assets/cf-overview.CV2FOQaP.png b/assets/cf-overview.CV2FOQaP.png new file mode 100644 index 00000000..d74762d5 Binary files /dev/null and b/assets/cf-overview.CV2FOQaP.png differ diff --git a/assets/change-format.Ceib4V6i.png b/assets/change-format.Ceib4V6i.png new file mode 100644 index 00000000..1b995b82 Binary files /dev/null and b/assets/change-format.Ceib4V6i.png differ diff --git a/assets/change-max-size.DDYD-ESI.png b/assets/change-max-size.DDYD-ESI.png new file mode 100644 index 00000000..93399134 Binary files /dev/null and b/assets/change-max-size.DDYD-ESI.png differ diff --git a/assets/choose-env.Cy4xcKaE.jpg b/assets/choose-env.Cy4xcKaE.jpg new file mode 100644 index 00000000..7a8404a2 Binary files /dev/null and b/assets/choose-env.Cy4xcKaE.jpg differ diff --git a/assets/chromeload.sYqunEFg.png b/assets/chromeload.sYqunEFg.png new file mode 100644 index 00000000..45a72fc8 Binary files /dev/null and b/assets/chromeload.sYqunEFg.png differ diff --git a/assets/chunks/@localSearchIndexroot.BvLnGg0E.js b/assets/chunks/@localSearchIndexroot.BvLnGg0E.js new file mode 100644 index 00000000..187c0c05 --- /dev/null +++ b/assets/chunks/@localSearchIndexroot.BvLnGg0E.js @@ -0,0 +1 @@ +const t=`{"documentCount":968,"nextId":968,"documentIds":{"0":"/minigame-unity-webgl-transform/CHANGELOG.html#_2024-4-3-【重要更新】","1":"/minigame-unity-webgl-transform/CHANGELOG.html#fixed","2":"/minigame-unity-webgl-transform/CHANGELOG.html#_2024-3-28-【普通更新】","3":"/minigame-unity-webgl-transform/CHANGELOG.html#fixed-1","4":"/minigame-unity-webgl-transform/CHANGELOG.html#_2024-3-5-【普通更新】","5":"/minigame-unity-webgl-transform/CHANGELOG.html#fixed-2","6":"/minigame-unity-webgl-transform/CHANGELOG.html#_2024-1-18-【普通更新】","7":"/minigame-unity-webgl-transform/CHANGELOG.html#fixed-3","8":"/minigame-unity-webgl-transform/CHANGELOG.html#_2024-1-15-【普通更新】","9":"/minigame-unity-webgl-transform/CHANGELOG.html#feature","10":"/minigame-unity-webgl-transform/CHANGELOG.html#fixed-4","11":"/minigame-unity-webgl-transform/CHANGELOG.html#_2024-1-2-【重要更新】","12":"/minigame-unity-webgl-transform/CHANGELOG.html#feature-1","13":"/minigame-unity-webgl-transform/CHANGELOG.html#fixed-5","14":"/minigame-unity-webgl-transform/CHANGELOG.html#_2023-12-18-【重要更新】","15":"/minigame-unity-webgl-transform/CHANGELOG.html#feature-2","16":"/minigame-unity-webgl-transform/CHANGELOG.html#fixed-6","17":"/minigame-unity-webgl-transform/CHANGELOG.html#_2023-12-12-【重要更新】","18":"/minigame-unity-webgl-transform/CHANGELOG.html#feature-3","19":"/minigame-unity-webgl-transform/CHANGELOG.html#_2023-12-08-【重要更新】","20":"/minigame-unity-webgl-transform/CHANGELOG.html#feature-4","21":"/minigame-unity-webgl-transform/CHANGELOG.html#fixed-7","22":"/minigame-unity-webgl-transform/CHANGELOG.html#_2023-11-29-【普通更新】","23":"/minigame-unity-webgl-transform/CHANGELOG.html#fixed-8","24":"/minigame-unity-webgl-transform/CHANGELOG.html#_2023-11-28","25":"/minigame-unity-webgl-transform/CHANGELOG.html#feature-5","26":"/minigame-unity-webgl-transform/CHANGELOG.html#fixed-9","27":"/minigame-unity-webgl-transform/CHANGELOG.html#_2023-11-10","28":"/minigame-unity-webgl-transform/CHANGELOG.html#feature-6","29":"/minigame-unity-webgl-transform/CHANGELOG.html#_2023-11-02","30":"/minigame-unity-webgl-transform/CHANGELOG.html#fixed-10","31":"/minigame-unity-webgl-transform/CHANGELOG.html#_2023-10-20","32":"/minigame-unity-webgl-transform/CHANGELOG.html#feature-7","33":"/minigame-unity-webgl-transform/CHANGELOG.html#fixed-11","34":"/minigame-unity-webgl-transform/CHANGELOG.html#_2023-10-11【普通更新】","35":"/minigame-unity-webgl-transform/CHANGELOG.html#feature-8","36":"/minigame-unity-webgl-transform/CHANGELOG.html#_2023-9-26","37":"/minigame-unity-webgl-transform/CHANGELOG.html#feature-9","38":"/minigame-unity-webgl-transform/CHANGELOG.html#fixed-12","39":"/minigame-unity-webgl-transform/CHANGELOG.html#_2023-09-20","40":"/minigame-unity-webgl-transform/CHANGELOG.html#feature-10","41":"/minigame-unity-webgl-transform/CHANGELOG.html#_2023-09-01","42":"/minigame-unity-webgl-transform/CHANGELOG.html#feature-11","43":"/minigame-unity-webgl-transform/CHANGELOG.html#fixed-13","44":"/minigame-unity-webgl-transform/CHANGELOG.html#_2023-08-24","45":"/minigame-unity-webgl-transform/CHANGELOG.html#feature-12","46":"/minigame-unity-webgl-transform/CHANGELOG.html#fixed-14","47":"/minigame-unity-webgl-transform/CHANGELOG.html#_2023-08-18","48":"/minigame-unity-webgl-transform/CHANGELOG.html#feature-13","49":"/minigame-unity-webgl-transform/CHANGELOG.html#fixed-15","50":"/minigame-unity-webgl-transform/CHANGELOG.html#_2023-08-10","51":"/minigame-unity-webgl-transform/CHANGELOG.html#feature-14","52":"/minigame-unity-webgl-transform/CHANGELOG.html#_2023-08-3","53":"/minigame-unity-webgl-transform/CHANGELOG.html#feature-15","54":"/minigame-unity-webgl-transform/CHANGELOG.html#fixed-16","55":"/minigame-unity-webgl-transform/CHANGELOG.html#_2023-07-27","56":"/minigame-unity-webgl-transform/CHANGELOG.html#feature-16","57":"/minigame-unity-webgl-transform/CHANGELOG.html#fixed-17","58":"/minigame-unity-webgl-transform/CHANGELOG.html#_2023-07-20","59":"/minigame-unity-webgl-transform/CHANGELOG.html#feature-17","60":"/minigame-unity-webgl-transform/CHANGELOG.html#fixed-18","61":"/minigame-unity-webgl-transform/CHANGELOG.html#_2023-07-12","62":"/minigame-unity-webgl-transform/CHANGELOG.html#feature-18","63":"/minigame-unity-webgl-transform/CHANGELOG.html#_2023-07-05","64":"/minigame-unity-webgl-transform/CHANGELOG.html#feature-19","65":"/minigame-unity-webgl-transform/CHANGELOG.html#fixed-19","66":"/minigame-unity-webgl-transform/CHANGELOG.html#_2023-06-29","67":"/minigame-unity-webgl-transform/CHANGELOG.html#feature-20","68":"/minigame-unity-webgl-transform/CHANGELOG.html#fixed-20","69":"/minigame-unity-webgl-transform/CHANGELOG.html#_2023-06-16","70":"/minigame-unity-webgl-transform/CHANGELOG.html#fixed-21","71":"/minigame-unity-webgl-transform/CHANGELOG.html#_2023-06-14","72":"/minigame-unity-webgl-transform/CHANGELOG.html#feature-21","73":"/minigame-unity-webgl-transform/CHANGELOG.html#fixed-22","74":"/minigame-unity-webgl-transform/CHANGELOG.html#_2023-06-12","75":"/minigame-unity-webgl-transform/CHANGELOG.html#fixed-23","76":"/minigame-unity-webgl-transform/CHANGELOG.html#_2023-06-7","77":"/minigame-unity-webgl-transform/CHANGELOG.html#feature-22","78":"/minigame-unity-webgl-transform/CHANGELOG.html#fixed-24","79":"/minigame-unity-webgl-transform/CHANGELOG.html#_2023-06-1","80":"/minigame-unity-webgl-transform/CHANGELOG.html#feature-23","81":"/minigame-unity-webgl-transform/CHANGELOG.html#fixed-25","82":"/minigame-unity-webgl-transform/CHANGELOG.html#_2023-05-24","83":"/minigame-unity-webgl-transform/CHANGELOG.html#feature-24","84":"/minigame-unity-webgl-transform/CHANGELOG.html#fixed-26","85":"/minigame-unity-webgl-transform/CHANGELOG.html#_2023-05-22","86":"/minigame-unity-webgl-transform/CHANGELOG.html#feature-25","87":"/minigame-unity-webgl-transform/CHANGELOG.html#fixed-27","88":"/minigame-unity-webgl-transform/CHANGELOG.html#_2023-04-26","89":"/minigame-unity-webgl-transform/CHANGELOG.html#changed","90":"/minigame-unity-webgl-transform/CHANGELOG.html#_2023-03-31","91":"/minigame-unity-webgl-transform/CHANGELOG.html#feature-26","92":"/minigame-unity-webgl-transform/CHANGELOG.html#_2023-02-22","93":"/minigame-unity-webgl-transform/CHANGELOG.html#feature-27","94":"/minigame-unity-webgl-transform/CHANGELOG.html#_2023-02-15","95":"/minigame-unity-webgl-transform/CHANGELOG.html#fixed-28","96":"/minigame-unity-webgl-transform/CHANGELOG.html#_2023-02-9","97":"/minigame-unity-webgl-transform/CHANGELOG.html#feature-28","98":"/minigame-unity-webgl-transform/CHANGELOG.html#fixed-29","99":"/minigame-unity-webgl-transform/CHANGELOG.html#_2023-01-17","100":"/minigame-unity-webgl-transform/CHANGELOG.html#fixed-30","101":"/minigame-unity-webgl-transform/CHANGELOG.html#_2023-01-17-1","102":"/minigame-unity-webgl-transform/CHANGELOG.html#feature-29","103":"/minigame-unity-webgl-transform/CHANGELOG.html#fixed-31","104":"/minigame-unity-webgl-transform/CHANGELOG.html#_2023-01-04","105":"/minigame-unity-webgl-transform/CHANGELOG.html#feature-30","106":"/minigame-unity-webgl-transform/CHANGELOG.html#fixed-32","107":"/minigame-unity-webgl-transform/CHANGELOG.html#_2022-12-28","108":"/minigame-unity-webgl-transform/CHANGELOG.html#feature-31","109":"/minigame-unity-webgl-transform/CHANGELOG.html#fixed-33","110":"/minigame-unity-webgl-transform/CHANGELOG.html#_2022-12-22","111":"/minigame-unity-webgl-transform/CHANGELOG.html#fixed-34","112":"/minigame-unity-webgl-transform/CHANGELOG.html#_2022-12-21","113":"/minigame-unity-webgl-transform/CHANGELOG.html#feature-32","114":"/minigame-unity-webgl-transform/CHANGELOG.html#_2022-12-7","115":"/minigame-unity-webgl-transform/CHANGELOG.html#feature-33","116":"/minigame-unity-webgl-transform/CHANGELOG.html#fixed-35","117":"/minigame-unity-webgl-transform/CHANGELOG.html#_2022-11-30","118":"/minigame-unity-webgl-transform/CHANGELOG.html#feature-34","119":"/minigame-unity-webgl-transform/CHANGELOG.html#_2022-11-23","120":"/minigame-unity-webgl-transform/CHANGELOG.html#feature-35","121":"/minigame-unity-webgl-transform/CHANGELOG.html#fixed-36","122":"/minigame-unity-webgl-transform/CHANGELOG.html#_2022-11-17","123":"/minigame-unity-webgl-transform/CHANGELOG.html#feature-36","124":"/minigame-unity-webgl-transform/CHANGELOG.html#_2022-11-9","125":"/minigame-unity-webgl-transform/CHANGELOG.html#feature-37","126":"/minigame-unity-webgl-transform/CHANGELOG.html#fixed-37","127":"/minigame-unity-webgl-transform/CHANGELOG.html#_2022-10-27","128":"/minigame-unity-webgl-transform/CHANGELOG.html#feature-38","129":"/minigame-unity-webgl-transform/CHANGELOG.html#fixed-38","130":"/minigame-unity-webgl-transform/CHANGELOG.html#_2022-10-20","131":"/minigame-unity-webgl-transform/CHANGELOG.html#feature-39","132":"/minigame-unity-webgl-transform/CHANGELOG.html#_2022-10-12","133":"/minigame-unity-webgl-transform/CHANGELOG.html#feature-40","134":"/minigame-unity-webgl-transform/CHANGELOG.html#fixed-39","135":"/minigame-unity-webgl-transform/CHANGELOG.html#_2022-9-28","136":"/minigame-unity-webgl-transform/CHANGELOG.html#feature-41","137":"/minigame-unity-webgl-transform/CHANGELOG.html#fixed-40","138":"/minigame-unity-webgl-transform/CHANGELOG.html#_2022-9-21","139":"/minigame-unity-webgl-transform/CHANGELOG.html#feature-42","140":"/minigame-unity-webgl-transform/CHANGELOG.html#fixed-41","141":"/minigame-unity-webgl-transform/CHANGELOG.html#_2022-9-13","142":"/minigame-unity-webgl-transform/CHANGELOG.html#feature-43","143":"/minigame-unity-webgl-transform/CHANGELOG.html#_2022-9-8","144":"/minigame-unity-webgl-transform/CHANGELOG.html#fixed-42","145":"/minigame-unity-webgl-transform/CHANGELOG.html#feature-44","146":"/minigame-unity-webgl-transform/CHANGELOG.html#_2022-9-7","147":"/minigame-unity-webgl-transform/CHANGELOG.html#fixed-43","148":"/minigame-unity-webgl-transform/CHANGELOG.html#_2022-8-31","149":"/minigame-unity-webgl-transform/CHANGELOG.html#fixed-44","150":"/minigame-unity-webgl-transform/CHANGELOG.html#_2022-8-26","151":"/minigame-unity-webgl-transform/CHANGELOG.html#feature-45","152":"/minigame-unity-webgl-transform/CHANGELOG.html#_2022-8-17","153":"/minigame-unity-webgl-transform/CHANGELOG.html#feature-46","154":"/minigame-unity-webgl-transform/CHANGELOG.html#_2022-8-11","155":"/minigame-unity-webgl-transform/CHANGELOG.html#fixed-45","156":"/minigame-unity-webgl-transform/CHANGELOG.html#_2022-8-10","157":"/minigame-unity-webgl-transform/CHANGELOG.html#feature-47","158":"/minigame-unity-webgl-transform/CHANGELOG.html#fixed-46","159":"/minigame-unity-webgl-transform/CHANGELOG.html#_2022-7-28","160":"/minigame-unity-webgl-transform/CHANGELOG.html#feature-48","161":"/minigame-unity-webgl-transform/CHANGELOG.html#_2022-7-20","162":"/minigame-unity-webgl-transform/CHANGELOG.html#feature-49","163":"/minigame-unity-webgl-transform/CHANGELOG.html#fixed-47","164":"/minigame-unity-webgl-transform/CHANGELOG.html#feature-50","165":"/minigame-unity-webgl-transform/CHANGELOG.html#_2022-7-14","166":"/minigame-unity-webgl-transform/CHANGELOG.html#fixed-48","167":"/minigame-unity-webgl-transform/CHANGELOG.html#_2022-7-1","168":"/minigame-unity-webgl-transform/CHANGELOG.html#fixed-49","169":"/minigame-unity-webgl-transform/CHANGELOG.html#_2022-6-30","170":"/minigame-unity-webgl-transform/CHANGELOG.html#fixed-50","171":"/minigame-unity-webgl-transform/CHANGELOG.html#_2022-6-28","172":"/minigame-unity-webgl-transform/CHANGELOG.html#feature-51","173":"/minigame-unity-webgl-transform/CHANGELOG.html#fixed-51","174":"/minigame-unity-webgl-transform/CHANGELOG.html#_2022-6-18","175":"/minigame-unity-webgl-transform/CHANGELOG.html#fixed-52","176":"/minigame-unity-webgl-transform/CHANGELOG.html#_2022-6-16","177":"/minigame-unity-webgl-transform/CHANGELOG.html#feature-52","178":"/minigame-unity-webgl-transform/CHANGELOG.html#fixed-53","179":"/minigame-unity-webgl-transform/CHANGELOG.html#_2022-6-13","180":"/minigame-unity-webgl-transform/CHANGELOG.html#fixed-54","181":"/minigame-unity-webgl-transform/CHANGELOG.html#_2022-6-8","182":"/minigame-unity-webgl-transform/CHANGELOG.html#feature-53","183":"/minigame-unity-webgl-transform/CHANGELOG.html#fixed-55","184":"/minigame-unity-webgl-transform/CHANGELOG.html#_2022-6-7","185":"/minigame-unity-webgl-transform/CHANGELOG.html#feature-54","186":"/minigame-unity-webgl-transform/CHANGELOG.html#_2022-6-1","187":"/minigame-unity-webgl-transform/CHANGELOG.html#feature-55","188":"/minigame-unity-webgl-transform/CHANGELOG.html#_2022-5-31","189":"/minigame-unity-webgl-transform/CHANGELOG.html#feature-56","190":"/minigame-unity-webgl-transform/CHANGELOG.html#_2022-5-30","191":"/minigame-unity-webgl-transform/CHANGELOG.html#fixed-56","192":"/minigame-unity-webgl-transform/CHANGELOG.html#_2022-5-26","193":"/minigame-unity-webgl-transform/CHANGELOG.html#changed-1","194":"/minigame-unity-webgl-transform/CHANGELOG.html#fixed-57","195":"/minigame-unity-webgl-transform/CHANGELOG.html#_2022-5-24","196":"/minigame-unity-webgl-transform/CHANGELOG.html#feature-57","197":"/minigame-unity-webgl-transform/CHANGELOG.html#_2022-4-29","198":"/minigame-unity-webgl-transform/CHANGELOG.html#fixed-58","199":"/minigame-unity-webgl-transform/CHANGELOG.html#_2022-4-26","200":"/minigame-unity-webgl-transform/CHANGELOG.html#fixed-59","201":"/minigame-unity-webgl-transform/CHANGELOG.html#feature-58","202":"/minigame-unity-webgl-transform/CHANGELOG.html#_2022-4-24","203":"/minigame-unity-webgl-transform/CHANGELOG.html#fixed-60","204":"/minigame-unity-webgl-transform/CHANGELOG.html#_2022-4-22","205":"/minigame-unity-webgl-transform/CHANGELOG.html#fixed-61","206":"/minigame-unity-webgl-transform/CHANGELOG.html#feature-59","207":"/minigame-unity-webgl-transform/CHANGELOG.html#_2022-4-18","208":"/minigame-unity-webgl-transform/CHANGELOG.html#feature-60","209":"/minigame-unity-webgl-transform/CHANGELOG.html#_2022-4-14","210":"/minigame-unity-webgl-transform/CHANGELOG.html#feature-61","211":"/minigame-unity-webgl-transform/CHANGELOG.html#_2022-4-11","212":"/minigame-unity-webgl-transform/CHANGELOG.html#changed-2","213":"/minigame-unity-webgl-transform/CHANGELOG.html#_2022-3-29","214":"/minigame-unity-webgl-transform/CHANGELOG.html#changed-3","215":"/minigame-unity-webgl-transform/CHANGELOG.html#_2022-3-22","216":"/minigame-unity-webgl-transform/CHANGELOG.html#changed-4","217":"/minigame-unity-webgl-transform/CHANGELOG.html#_2022-3-7","218":"/minigame-unity-webgl-transform/CHANGELOG.html#changed-5","219":"/minigame-unity-webgl-transform/CHANGELOG.html#_2022-3-7-1","220":"/minigame-unity-webgl-transform/CHANGELOG.html#changed-6","221":"/minigame-unity-webgl-transform/CHANGELOG.html#_2022-2-17","222":"/minigame-unity-webgl-transform/CHANGELOG.html#changed-7","223":"/minigame-unity-webgl-transform/CHANGELOG.html#_2022-2-15","224":"/minigame-unity-webgl-transform/CHANGELOG.html#fixed-62","225":"/minigame-unity-webgl-transform/CHANGELOG.html#_2022-2-14","226":"/minigame-unity-webgl-transform/CHANGELOG.html#feature-62","227":"/minigame-unity-webgl-transform/CHANGELOG.html#_2022-2-11","228":"/minigame-unity-webgl-transform/CHANGELOG.html#feature-63","229":"/minigame-unity-webgl-transform/CHANGELOG.html#_2022-1-26","230":"/minigame-unity-webgl-transform/CHANGELOG.html#feature-64","231":"/minigame-unity-webgl-transform/CHANGELOG.html#_2022-1-25","232":"/minigame-unity-webgl-transform/CHANGELOG.html#fixed-63","233":"/minigame-unity-webgl-transform/CHANGELOG.html#_2022-1-24","234":"/minigame-unity-webgl-transform/CHANGELOG.html#feature-65","235":"/minigame-unity-webgl-transform/CHANGELOG.html#_2022-1-21","236":"/minigame-unity-webgl-transform/CHANGELOG.html#feature-66","237":"/minigame-unity-webgl-transform/CHANGELOG.html#changed-8","238":"/minigame-unity-webgl-transform/CHANGELOG.html#_2022-1-20","239":"/minigame-unity-webgl-transform/CHANGELOG.html#feature-67","240":"/minigame-unity-webgl-transform/CHANGELOG.html#_2022-1-17","241":"/minigame-unity-webgl-transform/CHANGELOG.html#fixed-64","242":"/minigame-unity-webgl-transform/CHANGELOG.html#changed-9","243":"/minigame-unity-webgl-transform/CHANGELOG.html#_2022-1-13","244":"/minigame-unity-webgl-transform/CHANGELOG.html#fixed-65","245":"/minigame-unity-webgl-transform/CHANGELOG.html#_2022-1-7","246":"/minigame-unity-webgl-transform/CHANGELOG.html#fixed-66","247":"/minigame-unity-webgl-transform/CHANGELOG.html#_2021-12-31","248":"/minigame-unity-webgl-transform/CHANGELOG.html#fixed-67","249":"/minigame-unity-webgl-transform/CHANGELOG.html#_2021-12-30","250":"/minigame-unity-webgl-transform/CHANGELOG.html#fixed-68","251":"/minigame-unity-webgl-transform/CHANGELOG.html#_2021-12-20","252":"/minigame-unity-webgl-transform/CHANGELOG.html#fixed-69","253":"/minigame-unity-webgl-transform/CHANGELOG.html#_2021-12-16","254":"/minigame-unity-webgl-transform/CHANGELOG.html#feature-68","255":"/minigame-unity-webgl-transform/CHANGELOG.html#_2021-12-10","256":"/minigame-unity-webgl-transform/CHANGELOG.html#fixed-70","257":"/minigame-unity-webgl-transform/CHANGELOG.html#_2021-12-06","258":"/minigame-unity-webgl-transform/CHANGELOG.html#feature-69","259":"/minigame-unity-webgl-transform/CHANGELOG.html#fixed-71","260":"/minigame-unity-webgl-transform/CHANGELOG.html#_2021-12-02","261":"/minigame-unity-webgl-transform/CHANGELOG.html#fixed-72","262":"/minigame-unity-webgl-transform/CHANGELOG.html#_2021-11-30","263":"/minigame-unity-webgl-transform/CHANGELOG.html#changed-10","264":"/minigame-unity-webgl-transform/CHANGELOG.html#fixed-73","265":"/minigame-unity-webgl-transform/CHANGELOG.html#_2021-11-19","266":"/minigame-unity-webgl-transform/CHANGELOG.html#fixed-74","267":"/minigame-unity-webgl-transform/CHANGELOG.html#_2021-11-18","268":"/minigame-unity-webgl-transform/CHANGELOG.html#feature-70","269":"/minigame-unity-webgl-transform/CHANGELOG.html#fixed-75","270":"/minigame-unity-webgl-transform/CHANGELOG.html#changed-11","271":"/minigame-unity-webgl-transform/CHANGELOG.html#_2021-10-26","272":"/minigame-unity-webgl-transform/CHANGELOG.html#feature-71","273":"/minigame-unity-webgl-transform/CHANGELOG.html#_2021-10-09","274":"/minigame-unity-webgl-transform/CHANGELOG.html#feature-72","275":"/minigame-unity-webgl-transform/CHANGELOG.html#_2021-09-23","276":"/minigame-unity-webgl-transform/CHANGELOG.html#fixed-76","277":"/minigame-unity-webgl-transform/CHANGELOG.html#_2021-09-22","278":"/minigame-unity-webgl-transform/CHANGELOG.html#feature-73","279":"/minigame-unity-webgl-transform/CHANGELOG.html#feature-74","280":"/minigame-unity-webgl-transform/CHANGELOG.html#feature-75","281":"/minigame-unity-webgl-transform/CHANGELOG.html#_2021-09-14","282":"/minigame-unity-webgl-transform/CHANGELOG.html#feature-76","283":"/minigame-unity-webgl-transform/CHANGELOG.html#fixed-77","284":"/minigame-unity-webgl-transform/CHANGELOG.html#_2021-09-06","285":"/minigame-unity-webgl-transform/CHANGELOG.html#feature-77","286":"/minigame-unity-webgl-transform/CHANGELOG.html#_2021-8-20","287":"/minigame-unity-webgl-transform/CHANGELOG.html#feature-78","288":"/minigame-unity-webgl-transform/CHANGELOG.html#_2021-8-12","289":"/minigame-unity-webgl-transform/CHANGELOG.html#feature-79","290":"/minigame-unity-webgl-transform/CHANGELOG.html#_2021-8-10","291":"/minigame-unity-webgl-transform/CHANGELOG.html#changed-12","292":"/minigame-unity-webgl-transform/CHANGELOG.html#_2021-08-05","293":"/minigame-unity-webgl-transform/CHANGELOG.html#feature-80","294":"/minigame-unity-webgl-transform/CHANGELOG.html#_2021-08-04","295":"/minigame-unity-webgl-transform/CHANGELOG.html#fixed-78","296":"/minigame-unity-webgl-transform/CHANGELOG.html#_2021-08-02","297":"/minigame-unity-webgl-transform/CHANGELOG.html#fixed-79","298":"/minigame-unity-webgl-transform/CHANGELOG.html#_2021-08-01","299":"/minigame-unity-webgl-transform/CHANGELOG.html#changed-13","300":"/minigame-unity-webgl-transform/CHANGELOG.html#_2021-07-31","301":"/minigame-unity-webgl-transform/CHANGELOG.html#feature-81","302":"/minigame-unity-webgl-transform/CHANGELOG.html#changed-14","303":"/minigame-unity-webgl-transform/CHANGELOG.html#_2021-07-26","304":"/minigame-unity-webgl-transform/CHANGELOG.html#feature-82","305":"/minigame-unity-webgl-transform/CHANGELOG.html#_2021-07-26-1","306":"/minigame-unity-webgl-transform/CHANGELOG.html#feature-83","307":"/minigame-unity-webgl-transform/CHANGELOG.html#_2021-07-20","308":"/minigame-unity-webgl-transform/CHANGELOG.html#fixed-80","309":"/minigame-unity-webgl-transform/CHANGELOG.html#_2021-07-19","310":"/minigame-unity-webgl-transform/CHANGELOG.html#changed-15","311":"/minigame-unity-webgl-transform/CHANGELOG.html#_2021-07-13","312":"/minigame-unity-webgl-transform/CHANGELOG.html#fixed-81","313":"/minigame-unity-webgl-transform/CHANGELOG.html#changed-16","314":"/minigame-unity-webgl-transform/CHANGELOG.html#_2021-07-09","315":"/minigame-unity-webgl-transform/CHANGELOG.html#fixed-82","316":"/minigame-unity-webgl-transform/CHANGELOG.html#_2021-07-02","317":"/minigame-unity-webgl-transform/CHANGELOG.html#fixed-83","318":"/minigame-unity-webgl-transform/CHANGELOG.html#_2021-06-30","319":"/minigame-unity-webgl-transform/CHANGELOG.html#fixed-84","320":"/minigame-unity-webgl-transform/CHANGELOG.html#feature-84","321":"/minigame-unity-webgl-transform/CHANGELOG.html#_2021-06-29","322":"/minigame-unity-webgl-transform/CHANGELOG.html#fixed-85","323":"/minigame-unity-webgl-transform/CHANGELOG.html#feature-85","324":"/minigame-unity-webgl-transform/CHANGELOG.html#removed","325":"/minigame-unity-webgl-transform/CHANGELOG.html#changed-17","326":"/minigame-unity-webgl-transform/CHANGELOG.html#others","327":"/minigame-unity-webgl-transform/CHANGELOG.html#_2021-06-10","328":"/minigame-unity-webgl-transform/CHANGELOG.html#fixed-86","329":"/minigame-unity-webgl-transform/Design/AndroidProfile.html#使用android-cpu-profiler性能调优","330":"/minigame-unity-webgl-transform/Design/AssetOptimization.html#资源优化","331":"/minigame-unity-webgl-transform/Design/AssetOptimization.html#工具入口","332":"/minigame-unity-webgl-transform/Design/AssetOptimization.html#工具介绍","333":"/minigame-unity-webgl-transform/Design/AssetOptimization.html#texture","334":"/minigame-unity-webgl-transform/Design/AssetOptimization.html#优化建议","335":"/minigame-unity-webgl-transform/Design/BackendServiceStartup.html#后端服务指引","336":"/minigame-unity-webgl-transform/Design/BackendServiceStartup.html#后端服务模式","337":"/minigame-unity-webgl-transform/Design/BackendServiceStartup.html#自建后端服务","338":"/minigame-unity-webgl-transform/Design/BackendServiceStartup.html#云开发","339":"/minigame-unity-webgl-transform/Design/CompressedTexture.html#微信小游戏压缩纹理工具2-0-beta","340":"/minigame-unity-webgl-transform/Design/CompressedTexture.html#概述","341":"/minigame-unity-webgl-transform/Design/CompressedTexture.html#使用建议","342":"/minigame-unity-webgl-transform/Design/CompressedTexture.html#unity-版本支持问题","343":"/minigame-unity-webgl-transform/Design/CompressedTexture.html#使用说明","344":"/minigame-unity-webgl-transform/Design/CompressedTexture.html#_1-安装-node-js","345":"/minigame-unity-webgl-transform/Design/CompressedTexture.html#_2-构建-bundle-文件","346":"/minigame-unity-webgl-transform/Design/CompressedTexture.html#构建前的纹理格式配置说明","347":"/minigame-unity-webgl-transform/Design/CompressedTexture.html#astc格式配置说明","348":"/minigame-unity-webgl-transform/Design/CompressedTexture.html#_3-导出游戏","349":"/minigame-unity-webgl-transform/Design/CompressedTexture.html#_4-执行压缩纹理","350":"/minigame-unity-webgl-transform/Design/CompressedTexture.html#_5-上传cdn","351":"/minigame-unity-webgl-transform/Design/CompressedTexture.html#webgl2-0-支持说明-beta","352":"/minigame-unity-webgl-transform/Design/CompressedTexture.html#忽略配置说明","353":"/minigame-unity-webgl-transform/Design/CompressedTexture.html#首资源包优化说明","354":"/minigame-unity-webgl-transform/Design/CompressedTexture.html#新版本异常回退说明","355":"/minigame-unity-webgl-transform/Design/CompressedTexture.html#原理解释","356":"/minigame-unity-webgl-transform/Design/CompressedTexture.html#q-a","357":"/minigame-unity-webgl-transform/Design/CompressedTexture.html#_1-生成的纹理太大","358":"/minigame-unity-webgl-transform/Design/CompressedTexture.html#_2-资源上传至cdn的注意事项","359":"/minigame-unity-webgl-transform/Design/CompressedTexture.html#_3-非4倍数的资源处理底层逻辑","360":"/minigame-unity-webgl-transform/Design/CompressedTexture.html#_4-node-js异常处理","361":"/minigame-unity-webgl-transform/Design/CompressedTexture.html#_5-分离纹理后各自单独下载是否会增加下载开销","362":"/minigame-unity-webgl-transform/Design/CompressedTexture.html#_6-macos系统执行报错-system-drawing-gdiplus-threw-an-exception","363":"/minigame-unity-webgl-transform/Design/CompressedTexture.html#解决方案一","364":"/minigame-unity-webgl-transform/Design/CompressedTexture.html#解决方案二","365":"/minigame-unity-webgl-transform/Design/CompressedTexture.html#微信压缩纹理api介绍","366":"/minigame-unity-webgl-transform/Design/CompressedTexture.html#wxassetstexttools-compresstext","367":"/minigame-unity-webgl-transform/Design/CompressedTexture.html#说明","368":"/minigame-unity-webgl-transform/Design/CompressedTexture.html#参数","369":"/minigame-unity-webgl-transform/Design/CompressedTexture.html#wxassetstexttools-getassetbundles","370":"/minigame-unity-webgl-transform/Design/CompressedTexture.html#说明-1","371":"/minigame-unity-webgl-transform/Design/CompressedTexture.html#参数-1","372":"/minigame-unity-webgl-transform/Design/CustomLoading.html#启动封面","373":"/minigame-unity-webgl-transform/Design/CustomLoading.html#完整配置","374":"/minigame-unity-webgl-transform/Design/CustomLoading.html#转换插件配置","375":"/minigame-unity-webgl-transform/Design/CustomLoading.html#game-js配置","376":"/minigame-unity-webgl-transform/Design/CustomLoading.html#默认效果","377":"/minigame-unity-webgl-transform/Design/CustomLoading.html#定制效果","378":"/minigame-unity-webgl-transform/Design/CustomURP.html#定制微信小游戏的-urp-管线","379":"/minigame-unity-webgl-transform/Design/CustomURP.html#本地化-urp-包","380":"/minigame-unity-webgl-transform/Design/CustomURP.html#准备条件编译宏","381":"/minigame-unity-webgl-transform/Design/CustomURP.html#定制本地化-urp-管线","382":"/minigame-unity-webgl-transform/Design/CustomURP.html#供参考的-urp-定制版本","383":"/minigame-unity-webgl-transform/Design/CustomURP.html#微信-urp-定制版本的性能数据对比","384":"/minigame-unity-webgl-transform/Design/CustomURP.html#注意事项","385":"/minigame-unity-webgl-transform/Design/CustomURP.html#参考","386":"/minigame-unity-webgl-transform/Design/DataCDN.html#资源部署与缓存","387":"/minigame-unity-webgl-transform/Design/DataCDN.html#资源部署","388":"/minigame-unity-webgl-transform/Design/DataCDN.html#首资源包","389":"/minigame-unity-webgl-transform/Design/DataCDN.html#assets","390":"/minigame-unity-webgl-transform/Design/DataCDN.html#streamingassets","391":"/minigame-unity-webgl-transform/Design/DataCDN.html#资源服务器注意事项","392":"/minigame-unity-webgl-transform/Design/DataCDN.html#资源更新说明","393":"/minigame-unity-webgl-transform/Design/DataCDN.html#资源缓存","394":"/minigame-unity-webgl-transform/Design/DataCDN.html#资源缓存规则","395":"/minigame-unity-webgl-transform/Design/DebugAndException.html#错误调试与异常排查","396":"/minigame-unity-webgl-transform/Design/DebugAndException.html#如何排查程序中出现的异常","397":"/minigame-unity-webgl-transform/Design/DebugAndException.html#如何查看日志","398":"/minigame-unity-webgl-transform/Design/DebugAndException.html#如何通过错误堆栈查找源代码问题","399":"/minigame-unity-webgl-transform/Design/DebugAndException.html#使用profiling-funcs","400":"/minigame-unity-webgl-transform/Design/DebugAndException.html#使用symbols文件可读函数名","401":"/minigame-unity-webgl-transform/Design/DebugAndException.html#影响异常错误的导出选项","402":"/minigame-unity-webgl-transform/Design/DebugAndException.html#enable-exceptions","403":"/minigame-unity-webgl-transform/Design/DebugAndException.html#debug-symbols","404":"/minigame-unity-webgl-transform/Design/DebugAndException.html#development-build","405":"/minigame-unity-webgl-transform/Design/DevelopmentQAList.html#技术常见问题qa","406":"/minigame-unity-webgl-transform/Design/DevelopmentQAList.html#工具使用","407":"/minigame-unity-webgl-transform/Design/DevelopmentQAList.html#_1-微信开发者工具打开时提示-app-json未找到","408":"/minigame-unity-webgl-transform/Design/DevelopmentQAList.html#_2-微信开发者工具打开时提示-找不到game-json或读取错误","409":"/minigame-unity-webgl-transform/Design/DevelopmentQAList.html#_3-如何在真机上预览游戏","410":"/minigame-unity-webgl-transform/Design/DevelopmentQAList.html#_4-如何在真机上进行调试和错误日志排查","411":"/minigame-unity-webgl-transform/Design/DevelopmentQAList.html#_5-unity-playersettings导出选项中使用-brotli-或-gzip-使用微信开发者工具无法启动游戏","412":"/minigame-unity-webgl-transform/Design/DevelopmentQAList.html#_6-使用代码分包的情况下-启动游戏出现-首次拉取代码分包-提示","413":"/minigame-unity-webgl-transform/Design/DevelopmentQAList.html#_7-微信开发者工具提示-资源下载失败","414":"/minigame-unity-webgl-transform/Design/DevelopmentQAList.html#_8-微信开发者工具能正常打开游戏-但android卡在首屏-资源下载失败","415":"/minigame-unity-webgl-transform/Design/DevelopmentQAList.html#_9-开发者工具提示-插件申请成功-待审核确认","416":"/minigame-unity-webgl-transform/Design/DevelopmentQAList.html#_10-内网开发时-微信开发者工具服务异常","417":"/minigame-unity-webgl-transform/Design/DevelopmentQAList.html#_11-开发者工具提示pluginid-wx7a727ff7d940bb3f-permission-deny字样错误","418":"/minigame-unity-webgl-transform/Design/DevelopmentQAList.html#_12-小游戏包中的webgl-wasm-symbols-unityweb不会被上传-是做什么用的","419":"/minigame-unity-webgl-transform/Design/DevelopmentQAList.html#_13-如何自定义接入构建流程","420":"/minigame-unity-webgl-transform/Design/DevelopmentQAList.html#unity-webgl","421":"/minigame-unity-webgl-transform/Design/DevelopmentQAList.html#_1-能否使用system-net命名空间下的接口","422":"/minigame-unity-webgl-transform/Design/DevelopmentQAList.html#_2-小游戏启动出现-unable-to-load-dll","423":"/minigame-unity-webgl-transform/Design/DevelopmentQAList.html#_3-能否使用system-file相关接口做文件存储","424":"/minigame-unity-webgl-transform/Design/DevelopmentQAList.html#_4-如何接入第三方的js-sdk-能写js脚本和c-进行交互吗","425":"/minigame-unity-webgl-transform/Design/DevelopmentQAList.html#_5-小游戏的中文字体不显示-但editor没问题","426":"/minigame-unity-webgl-transform/Design/DevelopmentQAList.html#_6-游戏逻辑是否能使用lua","427":"/minigame-unity-webgl-transform/Design/DevelopmentQAList.html#_7-touch事件丢失或错误-导致多点触控不正确","428":"/minigame-unity-webgl-transform/Design/DevelopmentQAList.html#_8-显示黑屏-运行提示大量shader编译错误","429":"/minigame-unity-webgl-transform/Design/DevelopmentQAList.html#_9-unity-fmod音频插件是否支持","430":"/minigame-unity-webgl-transform/Design/DevelopmentQAList.html#_10-mac-系统下-unity-构建-webgl-项目报failed-running-il2cppcore-il2cppcore-dll-错误解决办法","431":"/minigame-unity-webgl-transform/Design/DevelopmentQAList.html#_11-引擎代码裁剪级别-managed-striping-level-应该如何设置","432":"/minigame-unity-webgl-transform/Design/DevelopmentQAList.html#_12-使用xlua等方案在webgl平台报-argumentexception-destination-array-was-not-long-enough","433":"/minigame-unity-webgl-transform/Design/DevelopmentQAList.html#平台适配","434":"/minigame-unity-webgl-transform/Design/DevelopmentQAList.html#_1-文本输入框点击无法输入-没有弹出输入法","435":"/minigame-unity-webgl-transform/Design/DevelopmentQAList.html#_2-高性能模式下ios无法加载-但android和微信开发者工具没问题","436":"/minigame-unity-webgl-transform/Design/DevelopmentQAList.html#_3-android运行达到满帧较为流畅-ios性能差","437":"/minigame-unity-webgl-transform/Design/DevelopmentQAList.html#_4-小游戏中能插入超链接跳转网页吗","438":"/minigame-unity-webgl-transform/Design/DevelopmentQAList.html#_5-小游戏是否支持unity-videoplayer","439":"/minigame-unity-webgl-transform/Design/DevelopmentQAList.html#_6-为什么使用application-targetframerate无法限帧率-安卓左上角帧率不对","440":"/minigame-unity-webgl-transform/Design/DevelopmentQAList.html#_7-unity-audio音频是否需要使用小游戏音频适配","441":"/minigame-unity-webgl-transform/Design/DevelopmentQAList.html#_8-playerpref或用户数据存储失效","442":"/minigame-unity-webgl-transform/Design/DevelopmentQAList.html#_9-微信接口提示-fail-require-user-interaction-only-in-touchend-event","443":"/minigame-unity-webgl-transform/Design/DevtoolsDomain.html#微信开发者工具域名列表","444":"/minigame-unity-webgl-transform/Design/Evaluation.html#方案评估","445":"/minigame-unity-webgl-transform/Design/Evaluation.html#_1-游戏类目","446":"/minigame-unity-webgl-transform/Design/Evaluation.html#_2-引擎版本","447":"/minigame-unity-webgl-transform/Design/Evaluation.html#_3-能力支持","448":"/minigame-unity-webgl-transform/Design/FileCache.html#资源缓存","449":"/minigame-unity-webgl-transform/Design/FileCache.html#介绍","450":"/minigame-unity-webgl-transform/Design/FileCache.html#一、什么情况触发资源缓存","451":"/minigame-unity-webgl-transform/Design/FileCache.html#二、哪些资源会自动缓存","452":"/minigame-unity-webgl-transform/Design/FileCache.html#三、缓存规则","453":"/minigame-unity-webgl-transform/Design/FileCache.html#相关配置","454":"/minigame-unity-webgl-transform/Design/FileCache.html#是否缓存规则","455":"/minigame-unity-webgl-transform/Design/FileCache.html#是否缓存业务资源","456":"/minigame-unity-webgl-transform/Design/FileCache.html#是否缓存纹理","457":"/minigame-unity-webgl-transform/Design/FileCache.html#资源淘汰规则","458":"/minigame-unity-webgl-transform/Design/FileCache.html#识别业务资源版本","459":"/minigame-unity-webgl-transform/Design/FileCache.html#识别纹理资源版本","460":"/minigame-unity-webgl-transform/Design/FileCache.html#缓存清理规则","461":"/minigame-unity-webgl-transform/Design/FileCache.html#示例","462":"/minigame-unity-webgl-transform/Design/FileCache.html#四、判断是否走缓存","463":"/minigame-unity-webgl-transform/Design/FileCache.html#查看详细日志","464":"/minigame-unity-webgl-transform/Design/FileCache.html#查看缓存日志","465":"/minigame-unity-webgl-transform/Design/FileCache.html#五、注意项","466":"/minigame-unity-webgl-transform/Design/FirstSceneOptimization.html#首场景启动优化","467":"/minigame-unity-webgl-transform/Design/FirstSceneOptimization.html#小游戏profile","468":"/minigame-unity-webgl-transform/Design/FirstSceneOptimization.html#unity-callmain","469":"/minigame-unity-webgl-transform/Design/FirstSceneOptimization.html#callmain-profile分析","470":"/minigame-unity-webgl-transform/Design/Guide.html#unity-游戏接入微信小游戏指南","471":"/minigame-unity-webgl-transform/Design/Guide.html#【阶段一】兼容性评估","472":"/minigame-unity-webgl-transform/Design/Guide.html#【阶段二】项目转换","473":"/minigame-unity-webgl-transform/Design/Guide.html#快速开始——转换工具导出微信小游戏","474":"/minigame-unity-webgl-transform/Design/Guide.html#资源按需加载","475":"/minigame-unity-webgl-transform/Design/Guide.html#后端-网络通信适配","476":"/minigame-unity-webgl-transform/Design/Guide.html#资源服务器部署配置","477":"/minigame-unity-webgl-transform/Design/Guide.html#开发阶段的错误排查","478":"/minigame-unity-webgl-transform/Design/Guide.html#【阶段三】微信平台能力接入","479":"/minigame-unity-webgl-transform/Design/Guide.html#接入微信api","480":"/minigame-unity-webgl-transform/Design/Guide.html#启动留存数据上报统计","481":"/minigame-unity-webgl-transform/Design/Guide.html#【阶段四】体验调优","482":"/minigame-unity-webgl-transform/Design/Guide.html#首场景启动优化——首帧逻辑优化","483":"/minigame-unity-webgl-transform/Design/Guide.html#资源预下载","484":"/minigame-unity-webgl-transform/Design/Guide.html#运行性能及调优","485":"/minigame-unity-webgl-transform/Design/Guide.html#压缩纹理资源","486":"/minigame-unity-webgl-transform/Design/Guide.html#wasm代码分包","487":"/minigame-unity-webgl-transform/Design/Guide.html#封面图配置","488":"/minigame-unity-webgl-transform/Design/Guide.html#【阶段五】发布上线与现网监控","489":"/minigame-unity-webgl-transform/Design/InputAdaptation.html#输入法适配","490":"/minigame-unity-webgl-transform/Design/InputAdaptation.html#支持2022-input-field组件自动适配-低版本或者其他组件暂不支持","491":"/minigame-unity-webgl-transform/Design/InputAdaptation.html#低版本兼容","492":"/minigame-unity-webgl-transform/Design/HowToDebug.html#调试错误与异常处理","493":"/minigame-unity-webgl-transform/Design/HowToDebug.html#开启代码异常","494":"/minigame-unity-webgl-transform/Design/HowToDebug.html#异常产生时如何排查","495":"/minigame-unity-webgl-transform/Design/HowToDebug.html#微信开发者工具","496":"/minigame-unity-webgl-transform/Design/HowToDebug.html#真机环境","497":"/minigame-unity-webgl-transform/Design/HowToDebug.html#二、unity导出webgl","498":"/minigame-unity-webgl-transform/Design/HowToDebug.html#三、适配小游戏","499":"/minigame-unity-webgl-transform/Design/HowToDebug.html#四、使用脚本集成到自己的构建系统","500":"/minigame-unity-webgl-transform/Design/HowToDebug.html#五、常见问题","501":"/minigame-unity-webgl-transform/Design/InstantGameGuide.html#使用-autostreaming-进行资源按需加载","502":"/minigame-unity-webgl-transform/Design/InstantGameGuide.html#方案选择建议","503":"/minigame-unity-webgl-transform/Design/InstantGameGuide.html#实践指南","504":"/minigame-unity-webgl-transform/Design/InstantGameGuide.html#q-a","505":"/minigame-unity-webgl-transform/Design/InstantGameGuide.html#_1-游戏在微信开发者工具中运行缺失资源","506":"/minigame-unity-webgl-transform/Design/IssueAndContact.html#问题反馈与联系我们","507":"/minigame-unity-webgl-transform/Design/IssueAndContact.html#git-issue","508":"/minigame-unity-webgl-transform/Design/IssueAndContact.html#小游戏研发助手","509":"/minigame-unity-webgl-transform/Design/IssueForProduction.html#现网错误日志上报与排查","510":"/minigame-unity-webgl-transform/Design/IssueForProduction.html#用户反馈日志","511":"/minigame-unity-webgl-transform/Design/IssueForProduction.html#小游戏实时日志","512":"/minigame-unity-webgl-transform/Design/IssueForProduction.html#js-error错误日志","513":"/minigame-unity-webgl-transform/Design/LaunchOpera.html#启动剧情-beta","514":"/minigame-unity-webgl-transform/Design/LaunchOpera.html#演示效果","515":"/minigame-unity-webgl-transform/Design/LaunchOpera.html#能力特性","516":"/minigame-unity-webgl-transform/Design/LaunchOpera.html#推荐内容","517":"/minigame-unity-webgl-transform/Design/LaunchOpera.html#接入方式","518":"/minigame-unity-webgl-transform/Design/LaunchOpera.html#步骤一-设计剧情","519":"/minigame-unity-webgl-transform/Design/LaunchOpera.html#步骤二-配置启动剧情","520":"/minigame-unity-webgl-transform/Design/LaunchOpera.html#基于异步干预剧情发展","521":"/minigame-unity-webgl-transform/Design/LaunchOpera.html#自定义上报分析","522":"/minigame-unity-webgl-transform/Design/LaunchOpera.html#外显进度条接入","523":"/minigame-unity-webgl-transform/Design/LaunchOpera.html#关闭-样式调整","524":"/minigame-unity-webgl-transform/Design/LaunchOpera.html#弱网处理","525":"/minigame-unity-webgl-transform/Design/LaunchOpera.html#api执行环境说明","526":"/minigame-unity-webgl-transform/Design/LaunchOpera.html#api-javascript侧","527":"/minigame-unity-webgl-transform/Design/LaunchOpera.html#running","528":"/minigame-unity-webgl-transform/Design/LaunchOpera.html#config","529":"/minigame-unity-webgl-transform/Design/LaunchOpera.html#end","530":"/minigame-unity-webgl-transform/Design/LaunchOpera.html#onend-callback-function","531":"/minigame-unity-webgl-transform/Design/LaunchOpera.html#offend-callback-function","532":"/minigame-unity-webgl-transform/Design/LaunchOpera.html#onerr-callback-function","533":"/minigame-unity-webgl-transform/Design/LaunchOpera.html#offerr-callback-function","534":"/minigame-unity-webgl-transform/Design/LaunchOpera.html#onweaknetwork-callback-function","535":"/minigame-unity-webgl-transform/Design/LaunchOpera.html#offweaknetwork-callback-function","536":"/minigame-unity-webgl-transform/Design/LaunchOpera.html#setglobalvar-globalname-string-value-string","537":"/minigame-unity-webgl-transform/Design/LaunchOpera.html#getglobalvar-globalname-string-string-null","538":"/minigame-unity-webgl-transform/Design/LaunchOpera.html#onglobalvarchange-globalname-string-callback-function","539":"/minigame-unity-webgl-transform/Design/LaunchOpera.html#offglobalvarchange-globalname-string-callback-function","540":"/minigame-unity-webgl-transform/Design/LaunchOpera.html#api-c-侧","541":"/minigame-unity-webgl-transform/Design/LaunchOpera.html#获得交互句柄","542":"/minigame-unity-webgl-transform/Design/LaunchOpera.html#void-setpercentage-double-value","543":"/minigame-unity-webgl-transform/Design/LaunchOpera.html#bool-getrunning","544":"/minigame-unity-webgl-transform/Design/LaunchOpera.html#void-end","545":"/minigame-unity-webgl-transform/Design/LaunchOpera.html#void-onend-action-bool-callback","546":"/minigame-unity-webgl-transform/Design/LaunchOpera.html#void-offend-action-bool-callback","547":"/minigame-unity-webgl-transform/Design/LaunchOpera.html#void-setglobalvar-string-key-string-value","548":"/minigame-unity-webgl-transform/Design/LaunchOpera.html#string-getglobalvar-string-key","549":"/minigame-unity-webgl-transform/Design/OpenData.html#unity中如何展示排行榜这类微信关系数据","550":"/minigame-unity-webgl-transform/Design/OpenData.html#背景和原理介绍","551":"/minigame-unity-webgl-transform/Design/OpenData.html#详细步骤","552":"/minigame-unity-webgl-transform/Design/OpenData.html#_1、设置占位纹理","553":"/minigame-unity-webgl-transform/Design/OpenData.html#_2、调用sdk的api","554":"/minigame-unity-webgl-transform/Design/OpenData.html#_2-1-在需要展示的地方调用-wx-showopendata","555":"/minigame-unity-webgl-transform/Design/OpenData.html#_2-2-需要关闭时则调用-wx-hideopendata","556":"/minigame-unity-webgl-transform/Design/OpenData.html#_2-3-通过-postmessage-向开放数据域传递消息","557":"/minigame-unity-webgl-transform/Design/OpenData.html#_3、导出选项勾选使用好友关系链","558":"/minigame-unity-webgl-transform/Design/OpenData.html#_4、用js开发排行榜这类微信关系逻辑","559":"/minigame-unity-webgl-transform/Design/OpenData.html#_5、示例demo","560":"/minigame-unity-webgl-transform/Design/OpenData.html#_5-1-好友排行榜","561":"/minigame-unity-webgl-transform/Design/OpenData.html#_5-2-群好友排行榜","562":"/minigame-unity-webgl-transform/Design/OpenData.html#常见问题qa","563":"/minigame-unity-webgl-transform/Design/OptimizationMemory.html#优化unity-webgl的内存","564":"/minigame-unity-webgl-transform/Design/OptimizationMemory.html#一、内存与oom","565":"/minigame-unity-webgl-transform/Design/OptimizationMemory.html#二、unity-webgl适配小游戏的内存结构","566":"/minigame-unity-webgl-transform/Design/OptimizationMemory.html#三、内存查看工具","567":"/minigame-unity-webgl-transform/Design/OptimizationMemory.html#_3-1-进程总内存","568":"/minigame-unity-webgl-transform/Design/OptimizationMemory.html#instruments-in-xcode-ios","569":"/minigame-unity-webgl-transform/Design/OptimizationMemory.html#perfdog-android-or-ios","570":"/minigame-unity-webgl-transform/Design/OptimizationMemory.html#_3-2-unityheap","571":"/minigame-unity-webgl-transform/Design/OptimizationMemory.html#_3-3-profilingmemory","572":"/minigame-unity-webgl-transform/Design/OptimizationMemory.html#_3-4-unity-profiler","573":"/minigame-unity-webgl-transform/Design/OptimizationMemory.html#_3-5-javascript-heap","574":"/minigame-unity-webgl-transform/Design/OptimizationMemory.html#微信开发者工具","575":"/minigame-unity-webgl-transform/Design/OptimizationMemory.html#firefox-memory-pc","576":"/minigame-unity-webgl-transform/Design/OptimizationMemory.html#ios-safari-timeline-pc-or-ios","577":"/minigame-unity-webgl-transform/Design/OptimizationMemory.html#四、内存优化方案","578":"/minigame-unity-webgl-transform/Design/OptimizationMemory.html#_4-1-wasm代码编译内存","579":"/minigame-unity-webgl-transform/Design/OptimizationMemory.html#_4-2-gpu内存","580":"/minigame-unity-webgl-transform/Design/OptimizationMemory.html#_4-3-unityheap","581":"/minigame-unity-webgl-transform/Design/OptimizationMemory.html#_4-4-首资源包与assetbundle内存","582":"/minigame-unity-webgl-transform/Design/OptimizationMemory.html#_4-5-音频内存","583":"/minigame-unity-webgl-transform/Design/OptimizationMemory.html#_4-6-其他常见优化手段","584":"/minigame-unity-webgl-transform/Design/OptimizationMemory.html#五、qa","585":"/minigame-unity-webgl-transform/Design/OptimizationPerformence.html#优化unity-webgl的运行性能","586":"/minigame-unity-webgl-transform/Design/OptimizationPerformence.html#一、运行性能概述","587":"/minigame-unity-webgl-transform/Design/OptimizationPerformence.html#unity-webgl-vs-app的运行性能差异","588":"/minigame-unity-webgl-transform/Design/OptimizationPerformence.html#wasm-vs-js的运行差异","589":"/minigame-unity-webgl-transform/Design/OptimizationPerformence.html#系统平台之间的性能差异","590":"/minigame-unity-webgl-transform/Design/OptimizationPerformence.html#二、优化目标","591":"/minigame-unity-webgl-transform/Design/OptimizationPerformence.html#三、常用优化工具","592":"/minigame-unity-webgl-transform/Design/OptimizationPerformence.html#_3-1-小游戏android-cpu-profiler-推荐","593":"/minigame-unity-webgl-transform/Design/OptimizationPerformence.html#_3-2-unity-profiler","594":"/minigame-unity-webgl-transform/Design/OptimizationPerformence.html#_3-3-小游戏云测","595":"/minigame-unity-webgl-transform/Design/OptimizationPerformence.html#三、常见优化手段","596":"/minigame-unity-webgl-transform/Design/OptimizationPerformence.html#_1-配置加载与协议解析","597":"/minigame-unity-webgl-transform/Design/OptimizationPerformence.html#_2-lua性能","598":"/minigame-unity-webgl-transform/Design/OptimizationPerformence.html#_3-物理性能","599":"/minigame-unity-webgl-transform/Design/OptimizationPerformence.html#_4-实例化","600":"/minigame-unity-webgl-transform/Design/OptimizationPerformence.html#_5-限制帧率","601":"/minigame-unity-webgl-transform/Design/OptimizationPerformence.html#_6-限制分辨率","602":"/minigame-unity-webgl-transform/Design/OptimizationPerformence.html#_7-使用压缩纹理","603":"/minigame-unity-webgl-transform/Design/OptimizationPerformence.html#_8-webgl2-0说明","604":"/minigame-unity-webgl-transform/Design/OptimizationPerformence.html#_9-减少drawcall","605":"/minigame-unity-webgl-transform/Design/OptimizationPerformence.html#_10-使用srp-batcher","606":"/minigame-unity-webgl-transform/Design/OptimizationPerformence.html#_11-如何获取设备硬件信息","607":"/minigame-unity-webgl-transform/Design/PerfMeasure.html#unity-webgl小游戏适配方案性能标准","608":"/minigame-unity-webgl-transform/Design/PerfMeasure.html#为什么需要性能评测标准","609":"/minigame-unity-webgl-transform/Design/PerfMeasure.html#评测标准细则","610":"/minigame-unity-webgl-transform/Design/PerfMeasure.html#性能基线","611":"/minigame-unity-webgl-transform/Design/PerfMeasure.html#指标与测量方法","612":"/minigame-unity-webgl-transform/Design/PerfMeasure.html#代码与资源体积","613":"/minigame-unity-webgl-transform/Design/PerfMeasure.html#评测工具","614":"/minigame-unity-webgl-transform/Design/PerfMeasure.html#启动性能","615":"/minigame-unity-webgl-transform/Design/PerfMeasure.html#运行性能","616":"/minigame-unity-webgl-transform/Design/PerfMeasure.html#评测标准","617":"/minigame-unity-webgl-transform/Design/PerfMeasure.html#开发者需要关注哪些性能指标","618":"/minigame-unity-webgl-transform/Design/PerfMeasure.html#游戏类型说明","619":"/minigame-unity-webgl-transform/Design/PerfMeasure.html#ios性能评测标准","620":"/minigame-unity-webgl-transform/Design/PerfMeasure.html#android性能评测标准","621":"/minigame-unity-webgl-transform/Design/PerfMeasure_old.html#unity-webgl小游戏适配方案性能标准","622":"/minigame-unity-webgl-transform/Design/PerfMeasure_old.html#为什么需要性能评测标准","623":"/minigame-unity-webgl-transform/Design/PerfMeasure_old.html#开发者需要关注哪些性能指标","624":"/minigame-unity-webgl-transform/Design/PerfMeasure_old.html#评测标准细则","625":"/minigame-unity-webgl-transform/Design/PerfMeasure_old.html#性能基线","626":"/minigame-unity-webgl-transform/Design/PerfMeasure_old.html#评测工具","627":"/minigame-unity-webgl-transform/Design/PerfMeasure_old.html#代码与资源体积","628":"/minigame-unity-webgl-transform/Design/PerfMeasure_old.html#android-评测标准","629":"/minigame-unity-webgl-transform/Design/PerfMeasure_old.html#ios-评测标准","630":"/minigame-unity-webgl-transform/Design/PerfOptimization.html#性能优化总览","631":"/minigame-unity-webgl-transform/Design/PerfOptimization.html#一、为何需要进行性能优化","632":"/minigame-unity-webgl-transform/Design/PerfOptimization.html#二、优化目标","633":"/minigame-unity-webgl-transform/Design/PerfOptimization.html#三、最佳实践","634":"/minigame-unity-webgl-transform/Design/PerfOptimization.html#_3-1-加快游戏启动速度","635":"/minigame-unity-webgl-transform/Design/PerfOptimization.html#_3-2-资源按需加载","636":"/minigame-unity-webgl-transform/Design/PerfOptimization.html#_3-3-资源处理建议","637":"/minigame-unity-webgl-transform/Design/PerfOptimization.html#_3-4-降低小游戏内存使用","638":"/minigame-unity-webgl-transform/Design/PerfOptimization.html#_3-5-降低cpu消耗","639":"/minigame-unity-webgl-transform/Design/PerformanceMonitor.html#最佳实践检测工具","640":"/minigame-unity-webgl-transform/Design/PerformanceMonitor.html#作用","641":"/minigame-unity-webgl-transform/Design/PerformanceMonitor.html#如何使用","642":"/minigame-unity-webgl-transform/Design/PerformanceMonitor.html#检测示意","643":"/minigame-unity-webgl-transform/Design/PerformanceMonitor.html#检测指标解释","644":"/minigame-unity-webgl-transform/Design/PerformanceMonitor.html#启动检测","645":"/minigame-unity-webgl-transform/Design/PerformanceMonitor.html#监控指标","646":"/minigame-unity-webgl-transform/Design/PerformanceMonitor.html#优化建议概览","647":"/minigame-unity-webgl-transform/Design/PerformanceMonitor.html#预下载检测","648":"/minigame-unity-webgl-transform/Design/PerformanceMonitor.html#监控指标-1","649":"/minigame-unity-webgl-transform/Design/PerformanceMonitor.html#优化建议概览-1","650":"/minigame-unity-webgl-transform/Design/PerformanceMonitor.html#wasm分包检测","651":"/minigame-unity-webgl-transform/Design/PerformanceMonitor.html#监控指标-2","652":"/minigame-unity-webgl-transform/Design/PerformanceMonitor.html#优化建议概览-2","653":"/minigame-unity-webgl-transform/Design/PerformanceMonitor.html#网络信息检测","654":"/minigame-unity-webgl-transform/Design/PerformanceMonitor.html#监控指标-3","655":"/minigame-unity-webgl-transform/Design/PerformanceMonitor.html#优化建议概览-3","656":"/minigame-unity-webgl-transform/Design/PerformanceMonitor.html#帧率检测","657":"/minigame-unity-webgl-transform/Design/PerformanceMonitor.html#监控指标-4","658":"/minigame-unity-webgl-transform/Design/PerformanceMonitor.html#优化建议概览-4","659":"/minigame-unity-webgl-transform/Design/PerformanceMonitor.html#优化分析工具","660":"/minigame-unity-webgl-transform/Design/PerformanceMonitor.html#微信开发者工具","661":"/minigame-unity-webgl-transform/Design/Profile.html#使用unity-profiler性能调优","662":"/minigame-unity-webgl-transform/Design/RenderOptimization.html#renderoptimization","663":"/minigame-unity-webgl-transform/Design/RenderOptimization.html#webgl1-0-还是-webgl2-0","664":"/minigame-unity-webgl-transform/Design/RenderOptimization.html#选择哪种渲染管线","665":"/minigame-unity-webgl-transform/Design/RenderOptimization.html#线性颜色空间-还是-gamma-颜色空间","666":"/minigame-unity-webgl-transform/Design/RenderOptimization.html#渲染性能优化的一些建议","667":"/minigame-unity-webgl-transform/Design/RenderOptimization.html#光照和阴影","668":"/minigame-unity-webgl-transform/Design/RenderOptimization.html#材质和shader","669":"/minigame-unity-webgl-transform/Design/RenderOptimization.html#纹理设置","670":"/minigame-unity-webgl-transform/Design/RenderOptimization.html#网格和蒙皮","671":"/minigame-unity-webgl-transform/Design/RenderOptimization.html#drawcall-相关","672":"/minigame-unity-webgl-transform/Design/RenderOptimization.html#摄像机-camera","673":"/minigame-unity-webgl-transform/Design/RenderOptimization.html#渲染分辨率","674":"/minigame-unity-webgl-transform/Design/RenderOptimization.html#后处理","675":"/minigame-unity-webgl-transform/Design/RenderOptimization.html#特效","676":"/minigame-unity-webgl-transform/Design/RenderOptimization.html#参考文档","677":"/minigame-unity-webgl-transform/Design/ReportStartupStat.html#启动留存数据上报统计","678":"/minigame-unity-webgl-transform/Design/ReportStartupStat.html#一、概述","679":"/minigame-unity-webgl-transform/Design/ReportStartupStat.html#二、上报广告信息","680":"/minigame-unity-webgl-transform/Design/ReportStartupStat.html#如何上报","681":"/minigame-unity-webgl-transform/Design/ReportStartupStat.html#三、上报自定义阶段","682":"/minigame-unity-webgl-transform/Design/ReportStartupStat.html#四、获取loader启动阶段","683":"/minigame-unity-webgl-transform/Design/ReportStartupStat.html#五、获取数据统计","684":"/minigame-unity-webgl-transform/Design/ResourcesLoading.html#资源按需加载概述","685":"/minigame-unity-webgl-transform/Design/ResourcesLoading.html#aa包、ab包、instant-game-方案选择说明","686":"/minigame-unity-webgl-transform/Design/ResourcesLoading.html#各类型游戏的资源优化建议","687":"/minigame-unity-webgl-transform/Design/ResourcesLoading.html#原生-app-手游已使用-ab-aa-包等资源按需加载的游戏","688":"/minigame-unity-webgl-transform/Design/ResourcesLoading.html#原生-app-手游未使用-资源按需加载-的轻度游戏","689":"/minigame-unity-webgl-transform/Design/ResourcesLoading.html#原生-app-手游未使用-资源按需加载-的中重度游戏","690":"/minigame-unity-webgl-transform/Design/SDKInstaller.html#微信sdk安装","691":"/minigame-unity-webgl-transform/Design/SDKInstaller.html#方法一-package-方式安装","692":"/minigame-unity-webgl-transform/Design/SDKInstaller.html#安装指南","693":"/minigame-unity-webgl-transform/Design/SDKInstaller.html#方法二-资源包方式安装","694":"/minigame-unity-webgl-transform/Design/SDKInstaller.html#安装指南-1","695":"/minigame-unity-webgl-transform/Design/SDKInstaller.html#目录结构说明","696":"/minigame-unity-webgl-transform/Design/SDKInstaller.html#常见问题","697":"/minigame-unity-webgl-transform/Design/SDKInstaller.html#_1-游戏工程可以导出但在微信开发者工具运行提示报错","698":"/minigame-unity-webgl-transform/Design/ShowCase.html#转换案例","699":"/minigame-unity-webgl-transform/Design/ShowCase.html#地铁跑酷","700":"/minigame-unity-webgl-transform/Design/ShowCase.html#谜题大陆","701":"/minigame-unity-webgl-transform/Design/ShowCase.html#三国吧兄弟","702":"/minigame-unity-webgl-transform/Design/ShowCase.html#鱼吃鱼","703":"/minigame-unity-webgl-transform/Design/ShowCase.html#剑心吟","704":"/minigame-unity-webgl-transform/Design/ShowCase.html#巨兽战场","705":"/minigame-unity-webgl-transform/Design/ShowCase.html#小小蚁国","706":"/minigame-unity-webgl-transform/Design/ShowCase.html#翡翠大师","707":"/minigame-unity-webgl-transform/Design/ShowCase.html#超能世界","708":"/minigame-unity-webgl-transform/Design/ShowCase.html#大侠不哭","709":"/minigame-unity-webgl-transform/Design/ShowCase.html#我叫mt2","710":"/minigame-unity-webgl-transform/Design/ShowCase.html#葫芦娃大作战","711":"/minigame-unity-webgl-transform/Design/ShowCase.html#大圣顶住","712":"/minigame-unity-webgl-transform/Design/ShowCase.html#银河战舰","713":"/minigame-unity-webgl-transform/Design/ShowCase.html#守护球球","714":"/minigame-unity-webgl-transform/Design/Startup.html#小游戏启动流程与时序","715":"/minigame-unity-webgl-transform/Design/Startup.html#启动加载时序","716":"/minigame-unity-webgl-transform/Design/Startup.html#unity-loader工作流程","717":"/minigame-unity-webgl-transform/Design/Startup.html#qa","718":"/minigame-unity-webgl-transform/Design/StartupOptimization.html#提升unity-webgl游戏启动速度","719":"/minigame-unity-webgl-transform/Design/StartupOptimization.html#一、-为什么要做启动优化","720":"/minigame-unity-webgl-transform/Design/StartupOptimization.html#_1-1-小游戏与手游app的启动差异","721":"/minigame-unity-webgl-transform/Design/StartupOptimization.html#_1-2-优化的目标与标准","722":"/minigame-unity-webgl-transform/Design/StartupOptimization.html#二、分析小游戏启动速度","723":"/minigame-unity-webgl-transform/Design/StartupOptimization.html#_2-1-查看启动耗时","724":"/minigame-unity-webgl-transform/Design/StartupOptimization.html#_2-2-分阶段耗时","725":"/minigame-unity-webgl-transform/Design/StartupOptimization.html#_2-2-1-首资源包下载与体积","726":"/minigame-unity-webgl-transform/Design/StartupOptimization.html#_2-2-2-wasm代码下载和编译","727":"/minigame-unity-webgl-transform/Design/StartupOptimization.html#_2-2-3-引擎初始化与开发者首帧逻辑","728":"/minigame-unity-webgl-transform/Design/StartupOptimization.html#_2-2-4-游戏内资源按需加载","729":"/minigame-unity-webgl-transform/Design/StartupOptimization.html#_2-3-优化总览","730":"/minigame-unity-webgl-transform/Design/StartupOptimization.html#三、常用启动优化技巧","731":"/minigame-unity-webgl-transform/Design/StartupOptimization.html#四、常用启动优化工具","732":"/minigame-unity-webgl-transform/Design/StartupOptimization.html#_4-1-assetstudio-推荐","733":"/minigame-unity-webgl-transform/Design/StartupOptimization.html#_4-2-buildreporttool-推荐","734":"/minigame-unity-webgl-transform/Design/StartupOptimization.html#_4-3-asset-hunter","735":"/minigame-unity-webgl-transform/Design/StartupOptimization.html#_4-4-unity-addressable-assets-system","736":"/minigame-unity-webgl-transform/Design/Summary.html#unity-webgl小游戏适配方案概述","737":"/minigame-unity-webgl-transform/Design/Summary.html#一、技术原理","738":"/minigame-unity-webgl-transform/Design/Summary.html#二、接入流程","739":"/minigame-unity-webgl-transform/Design/Summary.html#三、参考资料","740":"/minigame-unity-webgl-transform/Design/SupportedPlatform.html#支持平台","741":"/minigame-unity-webgl-transform/Design/SupportedPlatform.html#操作系统","742":"/minigame-unity-webgl-transform/Design/SupportedPlatform.html#微信小游戏基础库","743":"/minigame-unity-webgl-transform/Design/Symbol.html#symbol-相关","744":"/minigame-unity-webgl-transform/Design/Symbol.html#tool","745":"/minigame-unity-webgl-transform/Design/Transform.html#转换工具导出微信小游戏","746":"/minigame-unity-webgl-transform/Design/Transform.html#一、unity导出webgl","747":"/minigame-unity-webgl-transform/Design/Transform.html#二、适配小游戏","748":"/minigame-unity-webgl-transform/Design/Transform.html#_2-1-转换小游戏","749":"/minigame-unity-webgl-transform/Design/Transform.html#_2-2-了解转换后目录结构","750":"/minigame-unity-webgl-transform/Design/Transform.html#_2-3-资源部署","751":"/minigame-unity-webgl-transform/Design/Transform.html#_2-4-小游戏预览","752":"/minigame-unity-webgl-transform/Design/Transform.html#三、使用脚本集成到自己的构建系统","753":"/minigame-unity-webgl-transform/Design/Transform.html#minigameconfig-asset支持的配置","754":"/minigame-unity-webgl-transform/Design/Transform.html#与转换面板配置有对应关系的配置项","755":"/minigame-unity-webgl-transform/Design/Transform.html#不常用配置","756":"/minigame-unity-webgl-transform/Design/Transform.html#四、常见问题","757":"/minigame-unity-webgl-transform/Design/UnityProfiler.html#使用unity-profiler性能调优","758":"/minigame-unity-webgl-transform/Design/UnityVersion.html#推荐引擎版本","759":"/minigame-unity-webgl-transform/Design/UnityVersion.html#版本兼容性","760":"/minigame-unity-webgl-transform/Design/UnityVersion.html#推荐版本","761":"/minigame-unity-webgl-transform/Design/UnityVersion.html#unity-instantgame版本获取","762":"/minigame-unity-webgl-transform/Design/UnityVersion.html#qa","763":"/minigame-unity-webgl-transform/Design/Update.html#版本更新","764":"/minigame-unity-webgl-transform/Design/Update.html#代码更新","765":"/minigame-unity-webgl-transform/Design/Update.html#更新策略","766":"/minigame-unity-webgl-transform/Design/Update.html#_1-静默更新-默认方式","767":"/minigame-unity-webgl-transform/Design/Update.html#_2-强制更新","768":"/minigame-unity-webgl-transform/Design/Update.html#_2-1-实时检测更新-updatemanager","769":"/minigame-unity-webgl-transform/Design/Update.html#_2-2-设置最低可用版本","770":"/minigame-unity-webgl-transform/Design/Update.html#资源更新","771":"/minigame-unity-webgl-transform/Design/UsingAddressable.html#使用addressable-assets-system进行资源按需加载","772":"/minigame-unity-webgl-transform/Design/UsingAddressable.html#一、概述","773":"/minigame-unity-webgl-transform/Design/UsingAddressable.html#二、addressable在小游戏中的应用","774":"/minigame-unity-webgl-transform/Design/UsingAddressable.html#_2-1-什么是addressable-assets-system","775":"/minigame-unity-webgl-transform/Design/UsingAddressable.html#_2-2-相对于assetsbundles的优势","776":"/minigame-unity-webgl-transform/Design/UsingAddressable.html#_2-3-在小游戏中使用addressable-assets-system","777":"/minigame-unity-webgl-transform/Design/UsingAddressable.html#_2-4-使用wxassetbundleprovider节省内存","778":"/minigame-unity-webgl-transform/Design/UsingAddressable.html#三、启动优化与资源优化实战","779":"/minigame-unity-webgl-transform/Design/UsingAddressable.html#_3-1-从首包开始","780":"/minigame-unity-webgl-transform/Design/UsingAddressable.html#_3-2-资源按需加载","781":"/minigame-unity-webgl-transform/Design/UsingAddressable.html#_3-2-1-场景动态加载","782":"/minigame-unity-webgl-transform/Design/UsingAddressable.html#_3-2-2-物件动态加载","783":"/minigame-unity-webgl-transform/Design/UsingAddressable.html#_3-3-小结","784":"/minigame-unity-webgl-transform/Design/UsingAddressable.html#四、如何优雅地异步加载","785":"/minigame-unity-webgl-transform/Design/UsingAddressable.html#_4-1-最基本的异步回调","786":"/minigame-unity-webgl-transform/Design/UsingAddressable.html#_4-2-使用协程","787":"/minigame-unity-webgl-transform/Design/UsingAddressable.html#_4-3-使用await","788":"/minigame-unity-webgl-transform/Design/UsingAddressable.html#五、旧系统资源改造","789":"/minigame-unity-webgl-transform/Design/UsingAddressable.html#_5-1-resource改造","790":"/minigame-unity-webgl-transform/Design/UsingAddressable.html#_5-2-assetsbundle迁移","791":"/minigame-unity-webgl-transform/Design/UsingAddressable.html#六、部署","792":"/minigame-unity-webgl-transform/Design/UsingAddressable.html#_6-1-addressable编译与部署","793":"/minigame-unity-webgl-transform/Design/UsingAddressable.html#_6-2-资源预下载","794":"/minigame-unity-webgl-transform/Design/UsingAddressable.html#五、参考资料","795":"/minigame-unity-webgl-transform/Design/UsingAssetBundle.html#使用-assetbundle-进行资源按需加载","796":"/minigame-unity-webgl-transform/Design/UsingAssetBundle.html#一、assetbundle使用","797":"/minigame-unity-webgl-transform/Design/UsingAssetBundle.html#_1-1-assetbundle打包参数建议","798":"/minigame-unity-webgl-transform/Design/UsingAssetBundle.html#_1-2-assetbundle下载","799":"/minigame-unity-webgl-transform/Design/UsingAssetBundle.html#二、小游戏与app的assetbundle缓存更新流程差异","800":"/minigame-unity-webgl-transform/Design/UsingAssetBundle.html#三、更节省内存的wxassetbundle","801":"/minigame-unity-webgl-transform/Design/UsingAssetBundle.html#四、assetbundle内存分析","802":"/minigame-unity-webgl-transform/Design/UsingAssetBundle.html#_4-1-切勿使用带cache能力的线管接口","803":"/minigame-unity-webgl-transform/Design/UsingAssetBundle.html#_4-2-尽可能使用unload","804":"/minigame-unity-webgl-transform/Design/UsingAssetBundle.html#四、参考资料","805":"/minigame-unity-webgl-transform/Design/UsingLoader.html#使用loader进行游游戏加载","806":"/minigame-unity-webgl-transform/Design/UsingLoader.html#一、什么是unity-loader","807":"/minigame-unity-webgl-transform/Design/UsingLoader.html#二、如何使用unity-loader插件","808":"/minigame-unity-webgl-transform/Design/UsingLoader.html#三、配置unity-loader功能","809":"/minigame-unity-webgl-transform/Design/UsingLoader.html#_3-1-资源下载","810":"/minigame-unity-webgl-transform/Design/UsingLoader.html#转换插件相关配置","811":"/minigame-unity-webgl-transform/Design/UsingLoader.html#通过接口修改","812":"/minigame-unity-webgl-transform/Design/UsingLoader.html#_3-2-启动界面","813":"/minigame-unity-webgl-transform/Design/UsingLoader.html#转换插件相关配置-1","814":"/minigame-unity-webgl-transform/Design/UsingLoader.html#game-js配置","815":"/minigame-unity-webgl-transform/Design/UsingLoader.html#_3-3-首包资源加载方式","816":"/minigame-unity-webgl-transform/Design/UsingLoader.html#转换插件相关配置-2","817":"/minigame-unity-webgl-transform/Design/UsingLoader.html#game-js配置-1","818":"/minigame-unity-webgl-transform/Design/UsingLoader.html#_3-4-预加载资源","819":"/minigame-unity-webgl-transform/Design/UsingLoader.html#_3-5-资源缓存与淘汰策略","820":"/minigame-unity-webgl-transform/Design/UsingLoader.html#_3-6-插件调试信息","821":"/minigame-unity-webgl-transform/Design/UsingMemoryProfiler.html#使用profilingmemory内存分析","822":"/minigame-unity-webgl-transform/Design/UsingMemoryProfiler.html#概述","823":"/minigame-unity-webgl-transform/Design/UsingMemoryProfiler.html#步骤","824":"/minigame-unity-webgl-transform/Design/UsingMemoryProfiler.html#数据分析","825":"/minigame-unity-webgl-transform/Design/UsingMemoryProfiler.html#浏览数据","826":"/minigame-unity-webgl-transform/Design/UsingMemoryProfiler.html#sql统计分析","827":"/minigame-unity-webgl-transform/Design/UsingMemoryProfiler.html#常见问题","828":"/minigame-unity-webgl-transform/Design/UsingMemoryProfiler.html#_1-开启proflingmemory后非常慢-特别是在有lua逻辑的情况","829":"/minigame-unity-webgl-transform/Design/UsingMemoryProfiler.html#_2-profilingmemory在真机上更容易出现内存崩溃","830":"/minigame-unity-webgl-transform/Design/UsingNetworking.html#网络通信适配","831":"/minigame-unity-webgl-transform/Design/UsingNetworking.html#http-通信","832":"/minigame-unity-webgl-transform/Design/UsingNetworking.html#使用方式","833":"/minigame-unity-webgl-transform/Design/UsingNetworking.html#tcp-网络通信","834":"/minigame-unity-webgl-transform/Design/UsingNetworking.html#tcpsocket","835":"/minigame-unity-webgl-transform/Design/UsingNetworking.html#websocket","836":"/minigame-unity-webgl-transform/Design/UsingNetworking.html#客户端","837":"/minigame-unity-webgl-transform/Design/UsingNetworking.html#服务端","838":"/minigame-unity-webgl-transform/Design/UsingNetworking.html#udp-网络通信","839":"/minigame-unity-webgl-transform/Design/UsingNetworking.html#注意事项","840":"/minigame-unity-webgl-transform/Design/UsingNetworking.html#安全域名","841":"/minigame-unity-webgl-transform/Design/UsingNetworking.html#ssl证书","842":"/minigame-unity-webgl-transform/Design/UsingPreload.html#使用预下载功能","843":"/minigame-unity-webgl-transform/Design/UsingPreload.html#概述","844":"/minigame-unity-webgl-transform/Design/UsingPreload.html#配置方式","845":"/minigame-unity-webgl-transform/Design/UsingPreload.html#导出预下载列表","846":"/minigame-unity-webgl-transform/Design/UsingPreload.html#minigameconfig-asset相关配置","847":"/minigame-unity-webgl-transform/Design/UsingPreload.html#手动配置","848":"/minigame-unity-webgl-transform/Design/UsingPreload.html#运行时配置「推荐」","849":"/minigame-unity-webgl-transform/Design/UsingPreload.html#在插件启动前修改","850":"/minigame-unity-webgl-transform/Design/UsingPreload.html#引擎初始化完成后修改","851":"/minigame-unity-webgl-transform/Design/UsingPreload.html#路径规范","852":"/minigame-unity-webgl-transform/Design/UsingPreload.html#如何验证","853":"/minigame-unity-webgl-transform/Design/UsingPreload.html#注意事项","854":"/minigame-unity-webgl-transform/Design/WXFont.html#微信系统字体","855":"/minigame-unity-webgl-transform/Design/WXFont.html#版本要求","856":"/minigame-unity-webgl-transform/Design/WXFont.html#代码示例","857":"/minigame-unity-webgl-transform/Design/WXFont.html#系统字体字符集","858":"/minigame-unity-webgl-transform/Design/WX_SDK.html#sdk-调用微信api","859":"/minigame-unity-webgl-transform/Design/WX_SDK.html#开发建议","860":"/minigame-unity-webgl-transform/Design/WX_SDK.html#demo-api示例","861":"/minigame-unity-webgl-transform/Design/WX_SDK.html#联调效率","862":"/minigame-unity-webgl-transform/Design/WX_SDK.html#注意事项","863":"/minigame-unity-webgl-transform/Design/WX_SDK.html#目前已完成api列表","864":"/minigame-unity-webgl-transform/Design/WasmSplit.html#代码分包","865":"/minigame-unity-webgl-transform/Design/WasmSplit.html#概述","866":"/minigame-unity-webgl-transform/Design/WasmSplit.html#背景","867":"/minigame-unity-webgl-transform/Design/WasmSplit.html#作用","868":"/minigame-unity-webgl-transform/Design/WasmSplit.html#实现原理","869":"/minigame-unity-webgl-transform/Design/WasmSplit.html#插件安装","870":"/minigame-unity-webgl-transform/Design/WasmSplit.html#插件更新","871":"/minigame-unity-webgl-transform/Design/WasmSplit.html#插件使用","872":"/minigame-unity-webgl-transform/Design/WasmSplit.html#启用分包","873":"/minigame-unity-webgl-transform/Design/WasmSplit.html#输入版本描述","874":"/minigame-unity-webgl-transform/Design/WasmSplit.html#等待上传文件","875":"/minigame-unity-webgl-transform/Design/WasmSplit.html#等待预处理","876":"/minigame-unity-webgl-transform/Design/WasmSplit.html#选择是否增量分包","877":"/minigame-unity-webgl-transform/Design/WasmSplit.html#等待分包","878":"/minigame-unity-webgl-transform/Design/WasmSplit.html#android收集-ios收集","879":"/minigame-unity-webgl-transform/Design/WasmSplit.html#重复收集与生成","880":"/minigame-unity-webgl-transform/Design/WasmSplit.html#关闭分包","881":"/minigame-unity-webgl-transform/Design/WasmSplit.html#注意事项","882":"/minigame-unity-webgl-transform/Design/WasmSplit.html#faq","883":"/minigame-unity-webgl-transform/Design/WasmSplit.html#分包是否是必要的","884":"/minigame-unity-webgl-transform/Design/WasmSplit.html#收集到什么时候可以结束","885":"/minigame-unity-webgl-transform/Design/WasmSplit.html#游戏内容难以遍历完整怎么办","886":"/minigame-unity-webgl-transform/Design/WasmSplit.html#分包总大小比原始包大","887":"/minigame-unity-webgl-transform/Design/WasmSplit.html#新增收集的函数要重新再次提审才会在首包吗","888":"/minigame-unity-webgl-transform/Design/WasmSplit.html#会不会最终跑到所有函数都收集的情况","889":"/minigame-unity-webgl-transform/Design/WasmSplit.html#ios-高性能模式收集很卡","890":"/minigame-unity-webgl-transform/Design/WasmSplit.html#ios-高性能模式代码分包后内存反而变得很高","891":"/minigame-unity-webgl-transform/Design/WasmSplit.html#ios-高性能模式出现-impport-section-s-count-is-too-big","892":"/minigame-unity-webgl-transform/Design/WasmSplit.html#没有看到增量分包的界面","893":"/minigame-unity-webgl-transform/Design/WasmSplit.html#增量分包没生效","894":"/minigame-unity-webgl-transform/Design/WasmSplit.html#如何更新分包插件","895":"/minigame-unity-webgl-transform/Design/WasmSplit.html#分包插件安装失败","896":"/minigame-unity-webgl-transform/Design/WasmSplit.html#分包插件卡住","897":"/minigame-unity-webgl-transform/Design/WasmSplit.html#内存优化版本未观察到内存优化","898":"/minigame-unity-webgl-transform/Design/WasmSplit.html#如何查看分包插件日志","899":"/minigame-unity-webgl-transform/Design/WasmSplit.html#changelog","900":"/minigame-unity-webgl-transform/Design/WasmSplit.html#v1-1-13","901":"/minigame-unity-webgl-transform/Design/WasmSplit.html#fixed","902":"/minigame-unity-webgl-transform/Design/WasmSplit.html#v1-1-12","903":"/minigame-unity-webgl-transform/Design/WasmSplit.html#fixed-1","904":"/minigame-unity-webgl-transform/Design/WasmSplit.html#v1-1-11","905":"/minigame-unity-webgl-transform/Design/WasmSplit.html#fixed-2","906":"/minigame-unity-webgl-transform/Design/WasmSplit.html#v1-1-10","907":"/minigame-unity-webgl-transform/Design/WasmSplit.html#fixed-3","908":"/minigame-unity-webgl-transform/Design/WasmSplit.html#v1-1-9","909":"/minigame-unity-webgl-transform/Design/WasmSplit.html#feature","910":"/minigame-unity-webgl-transform/Design/WasmSplit.html#v1-1-8","911":"/minigame-unity-webgl-transform/Design/WasmSplit.html#changed","912":"/minigame-unity-webgl-transform/Design/WasmSplit.html#v1-1-6","913":"/minigame-unity-webgl-transform/Design/WasmSplit.html#changed-1","914":"/minigame-unity-webgl-transform/Design/WasmSplit.html#v1-1-5","915":"/minigame-unity-webgl-transform/Design/WasmSplit.html#fixed-4","916":"/minigame-unity-webgl-transform/Design/WasmSplit.html#v1-1-4","917":"/minigame-unity-webgl-transform/Design/WasmSplit.html#fixed-5","918":"/minigame-unity-webgl-transform/Design/WasmSplit.html#v1-1-2","919":"/minigame-unity-webgl-transform/Design/WasmSplit.html#changed-2","920":"/minigame-unity-webgl-transform/Design/WasmSplit.html#v1-1-0","921":"/minigame-unity-webgl-transform/Design/WasmSplit.html#added","922":"/minigame-unity-webgl-transform/Design/WasmSplit.html#v1-0-2","923":"/minigame-unity-webgl-transform/Design/WasmSplit.html#added-1","924":"/minigame-unity-webgl-transform/Design/WebGL2.html#webgl2-0渲染支持说明","925":"/minigame-unity-webgl-transform/Design/WebGL2.html#适合使用场景","926":"/minigame-unity-webgl-transform/Design/WebGL2.html#用户占比","927":"/minigame-unity-webgl-transform/Design/WebGL2.html#已知兼容问题","928":"/minigame-unity-webgl-transform/Design/WebGL2.html#ios高性能模式开启gpu-instance-模型闪烁-消失-不绘制等问题","929":"/minigame-unity-webgl-transform/Design/WebGL2.html#ios高性能模式drawmeshinstanced显示错乱","930":"/minigame-unity-webgl-transform/Design/WebGL2.html#参考文档","931":"/minigame-unity-webgl-transform/Design/fixScreen.html#屏幕适配","932":"/minigame-unity-webgl-transform/Design/fixScreen.html#安全区域适配","933":"/minigame-unity-webgl-transform/Design/fixScreen.html#高分辨屏下模糊问题","934":"/minigame-unity-webgl-transform/Design/iOSOptimization.html#ios-高性能与高性能-模式","935":"/minigame-unity-webgl-transform/Design/iOSOptimization.html#什么是高性能模式","936":"/minigame-unity-webgl-transform/Design/iOSOptimization.html#什么是高性能-模式","937":"/minigame-unity-webgl-transform/Design/iOSOptimization.html#性能提升","938":"/minigame-unity-webgl-transform/Design/iOSOptimization.html#cpu-消耗","939":"/minigame-unity-webgl-transform/Design/iOSOptimization.html#压力测试","940":"/minigame-unity-webgl-transform/Design/iOSOptimization.html#如何开通","941":"/minigame-unity-webgl-transform/Design/iOSOptimization.html#高性能模式限制","942":"/minigame-unity-webgl-transform/Design/iOSOptimization.html#内存限制","943":"/minigame-unity-webgl-transform/Design/iOSOptimization.html#代码体积限制","944":"/minigame-unity-webgl-transform/Design/iOSOptimization.html#qa","945":"/minigame-unity-webgl-transform/Design/iOSOptimization.html#_1-如何判别游戏否已经开启了高性能模式","946":"/minigame-unity-webgl-transform/Design/iOSOptimization.html#_2-使用高性能模式下-游戏本身是否需要做修改","947":"/minigame-unity-webgl-transform/Design/iOSOptimization.html#_3-ios-报错提示未开启-gzip-br-压缩","948":"/minigame-unity-webgl-transform/Design/iOSOptimization.html#_4-资源下载提示istrusted","949":"/minigame-unity-webgl-transform/Design/iOSOptimization.html#_5-卡在启动封面无法启动","950":"/minigame-unity-webgl-transform/Design/iOSOptimization.html#_6-个别游戏-ui-会出现闪烁问题","951":"/minigame-unity-webgl-transform/Design/iOSOptimization.html#_7-为什么开启了高性能模式-游戏启动很烫","952":"/minigame-unity-webgl-transform/Design/iOSOptimization.html#_8-使用高性能模式下-不优化内存、wasm-代码包体积就发布上线可以吗","953":"/minigame-unity-webgl-transform/Design/iOSOptimization.html#_9-ios-高性能模式与安卓性能对比如何","954":"/minigame-unity-webgl-transform/Design/javascriptExt.html#微信小游戏包javascript扩展","955":"/minigame-unity-webgl-transform/Design/video.html#视频设计","956":"/minigame-unity-webgl-transform/Design/video.html#建议启动视频内带有团队宣传logo动画-游戏logo动画-带有吸引力的游戏玩法视频","957":"/minigame-unity-webgl-transform/Design/wasmWaterMark.html#wasm水印插件","958":"/minigame-unity-webgl-transform/Design/wasmWaterMark.html#说明","959":"/minigame-unity-webgl-transform/Design/wasmWaterMark.html#使用方式","960":"/minigame-unity-webgl-transform/Design/wasmWaterMark.html#添加插件","961":"/minigame-unity-webgl-transform/Design/wasmWaterMark.html#使用插件","962":"/minigame-unity-webgl-transform/Design/wasmWaterMark.html#注意","963":"/minigame-unity-webgl-transform/README.html#unity-webgl-微信小游戏适配方案-公测","964":"/minigame-unity-webgl-transform/README.html#方案特点","965":"/minigame-unity-webgl-transform/README.html#转换案例","966":"/minigame-unity-webgl-transform/README.html#安装与使用","967":"/minigame-unity-webgl-transform/README.html#文档总览"},"fieldIds":{"title":0,"titles":1,"text":2},"fieldLength":{"0":[5,1,3],"1":[1,5,7],"2":[5,1,3],"3":[1,5,6],"4":[5,1,11],"5":[1,5,11],"6":[5,1,5],"7":[1,5,3],"8":[5,1,1],"9":[1,5,10],"10":[1,5,9],"11":[5,1,3],"12":[1,5,9],"13":[1,5,8],"14":[5,1,3],"15":[1,5,4],"16":[1,5,3],"17":[4,1,3],"18":[1,4,10],"19":[5,1,3],"20":[1,5,9],"21":[1,5,8],"22":[5,1,1],"23":[1,5,3],"24":[3,1,4],"25":[1,3,9],"26":[1,3,4],"27":[3,1,2],"28":[1,3,7],"29":[3,1,2],"30":[1,3,2],"31":[3,1,2],"32":[1,3,7],"33":[1,3,6],"34":[5,1,1],"35":[1,5,10],"36":[3,1,4],"37":[1,3,4],"38":[1,3,7],"39":[3,1,1],"40":[1,3,8],"41":[3,1,1],"42":[1,3,2],"43":[1,3,9],"44":[3,1,1],"45":[1,3,6],"46":[1,3,11],"47":[3,1,1],"48":[1,3,19],"49":[1,3,17],"50":[3,1,1],"51":[1,3,7],"52":[3,1,1],"53":[1,3,18],"54":[1,3,14],"55":[3,1,1],"56":[1,3,4],"57":[1,3,7],"58":[3,1,1],"59":[1,3,6],"60":[1,3,3],"61":[3,1,1],"62":[1,3,8],"63":[3,1,1],"64":[1,3,9],"65":[1,3,2],"66":[3,1,1],"67":[1,3,5],"68":[1,3,4],"69":[3,1,1],"70":[1,3,6],"71":[3,1,1],"72":[1,3,10],"73":[1,3,4],"74":[3,1,1],"75":[1,3,5],"76":[3,1,1],"77":[1,3,3],"78":[1,3,6],"79":[3,1,1],"80":[1,3,15],"81":[1,3,5],"82":[3,1,1],"83":[1,3,6],"84":[1,3,2],"85":[3,1,1],"86":[1,3,26],"87":[1,3,20],"88":[3,1,1],"89":[1,3,4],"90":[3,1,1],"91":[1,3,2],"92":[3,1,1],"93":[1,3,3],"94":[3,1,1],"95":[1,3,5],"96":[3,1,1],"97":[1,3,8],"98":[1,3,4],"99":[3,1,1],"100":[1,3,4],"101":[3,1,1],"102":[1,3,9],"103":[1,3,7],"104":[3,1,1],"105":[1,3,37],"106":[1,3,2],"107":[3,1,1],"108":[1,3,17],"109":[1,3,6],"110":[3,1,1],"111":[1,3,5],"112":[3,1,1],"113":[1,3,9],"114":[3,1,1],"115":[1,3,11],"116":[1,3,3],"117":[3,1,1],"118":[1,3,6],"119":[3,1,1],"120":[1,3,4],"121":[1,3,3],"122":[3,1,1],"123":[1,3,4],"124":[3,1,1],"125":[1,3,7],"126":[1,3,2],"127":[3,1,1],"128":[1,3,2],"129":[1,3,3],"130":[3,1,1],"131":[1,3,5],"132":[3,1,1],"133":[1,3,7],"134":[1,3,2],"135":[3,1,1],"136":[1,3,6],"137":[1,3,4],"138":[3,1,1],"139":[1,3,4],"140":[1,3,3],"141":[3,1,1],"142":[1,3,4],"143":[3,1,1],"144":[1,3,3],"145":[1,3,10],"146":[3,1,1],"147":[1,3,4],"148":[3,1,1],"149":[1,3,5],"150":[3,1,1],"151":[1,3,5],"152":[3,1,1],"153":[1,3,6],"154":[3,1,1],"155":[1,3,2],"156":[3,1,1],"157":[1,3,3],"158":[1,3,9],"159":[3,1,1],"160":[1,3,2],"161":[3,1,1],"162":[1,3,2],"163":[1,3,2],"164":[1,3,2],"165":[3,1,1],"166":[1,3,4],"167":[3,1,1],"168":[1,3,4],"169":[3,1,1],"170":[1,3,4],"171":[3,1,1],"172":[1,3,2],"173":[1,3,3],"174":[3,1,1],"175":[1,3,2],"176":[3,1,1],"177":[1,3,3],"178":[1,3,3],"179":[3,1,1],"180":[1,3,5],"181":[3,1,1],"182":[1,3,2],"183":[1,3,6],"184":[3,1,1],"185":[1,3,3],"186":[3,1,1],"187":[1,3,2],"188":[3,1,1],"189":[1,3,2],"190":[3,1,1],"191":[1,3,2],"192":[3,1,1],"193":[1,3,3],"194":[1,3,3],"195":[3,1,1],"196":[1,3,5],"197":[3,1,1],"198":[1,3,2],"199":[3,1,1],"200":[1,3,2],"201":[1,3,4],"202":[3,1,1],"203":[1,3,7],"204":[3,1,1],"205":[1,3,6],"206":[1,3,3],"207":[3,1,1],"208":[1,3,3],"209":[3,1,1],"210":[1,3,2],"211":[3,1,1],"212":[1,3,6],"213":[3,1,1],"214":[1,3,6],"215":[3,1,1],"216":[1,3,2],"217":[3,1,1],"218":[1,3,11],"219":[3,1,1],"220":[1,3,4],"221":[3,1,1],"222":[1,3,4],"223":[3,1,1],"224":[1,3,12],"225":[3,1,1],"226":[1,3,2],"227":[3,1,1],"228":[1,3,4],"229":[3,1,1],"230":[1,3,3],"231":[3,1,1],"232":[1,3,5],"233":[3,1,1],"234":[1,3,3],"235":[3,1,1],"236":[1,3,3],"237":[1,3,15],"238":[3,1,1],"239":[1,3,4],"240":[3,1,1],"241":[1,3,2],"242":[1,3,2],"243":[3,1,1],"244":[1,3,6],"245":[3,1,1],"246":[1,3,5],"247":[3,1,1],"248":[1,3,4],"249":[3,1,1],"250":[1,3,4],"251":[3,1,1],"252":[1,3,8],"253":[3,1,1],"254":[1,3,3],"255":[3,1,1],"256":[1,3,2],"257":[3,1,1],"258":[1,3,8],"259":[1,3,4],"260":[3,1,1],"261":[1,3,7],"262":[3,1,1],"263":[1,3,4],"264":[1,3,8],"265":[3,1,1],"266":[1,3,2],"267":[3,1,1],"268":[1,3,10],"269":[1,3,2],"270":[1,3,2],"271":[3,1,1],"272":[1,3,4],"273":[3,1,1],"274":[1,3,3],"275":[3,1,1],"276":[1,3,2],"277":[3,1,1],"278":[1,3,5],"279":[1,3,6],"280":[1,3,8],"281":[3,1,1],"282":[1,3,3],"283":[1,3,2],"284":[3,1,1],"285":[1,3,2],"286":[3,1,1],"287":[1,3,2],"288":[3,1,1],"289":[1,3,3],"290":[3,1,1],"291":[1,3,7],"292":[3,1,1],"293":[1,3,3],"294":[3,1,1],"295":[1,3,5],"296":[3,1,1],"297":[1,3,6],"298":[3,1,1],"299":[1,3,2],"300":[3,1,1],"301":[1,3,3],"302":[1,3,2],"303":[3,1,1],"304":[1,3,5],"305":[3,1,1],"306":[1,3,4],"307":[3,1,1],"308":[1,3,5],"309":[3,1,1],"310":[1,3,2],"311":[3,1,1],"312":[1,3,5],"313":[1,3,3],"314":[3,1,1],"315":[1,3,5],"316":[3,1,1],"317":[1,3,3],"318":[3,1,1],"319":[1,3,2],"320":[1,3,3],"321":[3,1,1],"322":[1,3,2],"323":[1,3,2],"324":[1,3,6],"325":[1,3,3],"326":[1,3,13],"327":[3,1,1],"328":[1,3,6],"329":[3,1,99],"330":[1,1,3],"331":[1,1,4],"332":[1,1,1],"333":[1,2,50],"334":[1,1,16],"335":[1,1,1],"336":[1,1,17],"337":[1,1,10],"338":[1,1,141],"339":[4,1,1],"340":[1,4,42],"341":[1,4,30],"342":[2,4,45],"343":[1,4,9],"344":[4,4,7],"345":[4,4,10],"346":[2,8,33],"347":[2,8,38],"348":[2,4,13],"349":[2,4,25],"350":[2,4,18],"351":[5,4,12],"352":[1,4,26],"353":[1,4,20],"354":[1,4,10],"355":[1,4,12],"356":[3,4,1],"357":[2,6,10],"358":[2,6,5],"359":[2,6,29],"360":[3,6,24],"361":[3,6,10],"362":[9,6,10],"363":[2,15,21],"364":[2,15,28],"365":[1,4,12],"366":[3,4,17],"367":[1,7,12],"368":[1,7,42],"369":[3,4,12],"370":[1,7,4],"371":[1,7,14],"372":[1,1,13],"373":[1,1,1],"374":[1,2,15],"375":[2,2,117],"376":[1,1,22],"377":[1,1,106],"378":[3,1,35],"379":[3,3,151],"380":[1,3,136],"381":[3,3,94],"382":[3,4,203],"383":[3,4,52],"384":[1,3,94],"385":[1,3,4],"386":[1,1,36],"387":[1,1,13],"388":[1,2,30],"389":[1,2,4],"390":[1,2,7],"391":[1,2,14],"392":[1,1,27],"393":[1,1,2],"394":[1,2,2],"395":[1,1,3],"396":[1,1,1],"397":[1,2,34],"398":[1,2,1],"399":[2,3,7],"400":[1,3,12],"401":[1,1,14],"402":[2,2,100],"403":[2,2,13],"404":[2,2,11],"405":[1,1,1],"406":[1,1,1],"407":[5,2,5],"408":[5,2,3],"409":[2,2,9],"410":[2,2,22],"411":[8,2,8],"412":[5,2,8],"413":[5,2,4],"414":[4,2,4],"415":[5,2,7],"416":[3,2,3],"417":[5,2,12],"418":[6,2,3],"419":[2,2,21],"420":[2,1,1],"421":[3,3,4],"422":[8,3,8],"423":[3,3,14],"424":[6,3,10],"425":[3,3,4],"426":[2,3,7],"427":[3,3,6],"428":[3,3,6],"429":[4,3,3],"430":[12,3,65],"431":[7,3,4],"432":[10,3,8],"433":[1,1,1],"434":[3,2,4],"435":[3,2,2],"436":[3,2,2],"437":[3,2,3],"438":[3,2,6],"439":[4,2,7],"440":[3,2,3],"441":[2,2,40],"442":[11,2,8],"443":[1,1,35],"444":[1,1,1],"445":[2,1,24],"446":[2,1,8],"447":[2,1,64],"448":[1,1,23],"449":[1,1,24],"450":[2,1,12],"451":[3,1,7],"452":[2,1,1],"453":[1,3,44],"454":[1,4,3],"455":[1,5,11],"456":[1,5,6],"457":[1,4,7],"458":[1,5,19],"459":[1,5,5],"460":[1,4,55],"461":[1,3,72],"462":[2,1,1],"463":[1,3,29],"464":[1,3,37],"465":[2,1,34],"466":[1,1,15],"467":[1,1,42],"468":[2,1,73],"469":[2,1,40],"470":[2,1,19],"471":[3,2,8],"472":[3,2,2],"473":[2,4,10],"474":[1,4,22],"475":[2,4,21],"476":[1,4,24],"477":[1,4,10],"478":[3,2,1],"479":[1,4,20],"480":[1,4,13],"481":[3,2,7],"482":[2,4,18],"483":[1,4,9],"484":[1,4,14],"485":[1,4,29],"486":[1,4,19],"487":[1,4,15],"488":[3,2,9],"489":[1,1,1],"490":[4,1,1],"491":[2,1,71],"492":[1,1,7],"493":[1,1,20],"494":[1,1,10],"495":[1,2,1],"496":[1,2,22],"497":[2,1,8],"498":[2,1,53],"499":[2,1,20],"500":[2,1,60],"501":[3,1,11],"502":[1,3,36],"503":[1,3,11],"504":[3,3,1],"505":[3,6,7],"506":[1,1,7],"507":[2,1,12],"508":[1,1,4],"509":[1,1,11],"510":[1,1,27],"511":[1,1,11],"512":[2,1,14],"513":[3,1,14],"514":[1,3,5],"515":[1,3,8],"516":[1,3,7],"517":[1,3,7],"518":[2,3,7],"519":[2,3,93],"520":[1,3,39],"521":[1,3,14],"522":[1,3,14],"523":[2,4,52],"524":[1,3,24],"525":[1,3,50],"526":[3,3,10],"527":[2,5,13],"528":[2,5,33],"529":[2,5,2],"530":[4,5,8],"531":[4,5,2],"532":[4,5,17],"533":[4,5,2],"534":[4,5,39],"535":[4,5,2],"536":[5,5,2],"537":[6,5,2],"538":[6,5,2],"539":[6,5,2],"540":[4,3,1],"541":[1,6,7],"542":[5,6,14],"543":[3,6,6],"544":[3,6,2],"545":[8,6,30],"546":[8,6,2],"547":[6,6,2],"548":[4,6,2],"549":[1,1,1],"550":[1,1,48],"551":[1,1,1],"552":[2,2,17],"553":[2,2,1],"554":[5,4,54],"555":[4,4,11],"556":[5,4,48],"557":[2,2,12],"558":[2,2,27],"559":[2,2,8],"560":[3,4,102],"561":[3,4,80],"562":[1,1,50],"563":[2,1,1],"564":[2,2,35],"565":[3,2,74],"566":[2,2,17],"567":[3,4,11],"568":[5,7,9],"569":[5,7,5],"570":[3,4,69],"571":[2,4,5],"572":[4,4,12],"573":[4,4,14],"574":[1,8,1],"575":[4,8,1],"576":[6,8,1],"577":[2,4,40],"578":[3,4,19],"579":[3,4,20],"580":[3,4,59],"581":[2,4,16],"582":[3,4,10],"583":[3,4,6],"584":[2,2,58],"585":[2,1,1],"586":[2,2,16],"587":[4,4,37],"588":[3,4,18],"589":[1,4,13],"590":[2,2,14],"591":[2,2,1],"592":[7,4,16],"593":[4,4,17],"594":[2,4,12],"595":[2,2,1],"596":[2,4,10],"597":[2,4,9],"598":[2,4,7],"599":[2,4,6],"600":[2,4,9],"601":[2,4,26],"602":[2,4,6],"603":[3,4,3],"604":[2,4,11],"605":[3,4,9],"606":[2,4,25],"607":[2,1,1],"608":[2,2,6],"609":[1,2,1],"610":[1,3,29],"611":[1,3,65],"612":[1,3,11],"613":[1,3,1],"614":[1,4,5],"615":[1,4,6],"616":[1,3,11],"617":[1,4,24],"618":[1,4,20],"619":[1,4,8],"620":[1,4,3],"621":[2,1,1],"622":[2,2,3],"623":[1,2,14],"624":[1,2,1],"625":[1,3,73],"626":[1,3,11],"627":[1,3,11],"628":[2,3,29],"629":[2,3,29],"630":[1,1,1],"631":[3,1,16],"632":[2,1,6],"633":[2,1,1],"634":[3,3,17],"635":[3,3,13],"636":[2,3,8],"637":[3,3,11],"638":[3,3,15],"639":[1,1,15],"640":[1,1,6],"641":[1,1,48],"642":[1,1,7],"643":[1,1,1],"644":[1,2,2],"645":[1,3,21],"646":[1,3,23],"647":[1,2,10],"648":[1,3,24],"649":[1,3,45],"650":[1,2,10],"651":[1,3,17],"652":[1,3,22],"653":[1,2,6],"654":[1,3,81],"655":[1,3,81],"656":[1,2,4],"657":[1,3,25],"658":[1,3,23],"659":[1,1,1],"660":[1,2,11],"661":[2,1,70],"662":[1,1,5],"663":[4,1,46],"664":[1,1,58],"665":[4,1,37],"666":[1,1,1],"667":[1,2,58],"668":[1,2,92],"669":[1,2,43],"670":[1,2,55],"671":[2,2,38],"672":[2,2,11],"673":[1,2,18],"674":[1,2,9],"675":[1,2,6],"676":[1,1,5],"677":[1,1,1],"678":[2,1,17],"679":[2,1,7],"680":[2,3,21],"681":[2,1,67],"682":[2,1,47],"683":[2,1,28],"684":[1,1,25],"685":[5,1,76],"686":[1,1,5],"687":[7,2,41],"688":[5,2,16],"689":[6,2,20],"690":[1,1,4],"691":[3,1,6],"692":[1,4,27],"693":[2,1,6],"694":[1,3,7],"695":[1,1,17],"696":[1,1,1],"697":[3,3,12],"698":[1,1,8],"699":[1,1,6],"700":[1,1,4],"701":[1,1,1],"702":[1,1,1],"703":[1,1,2],"704":[1,1,3],"705":[1,1,4],"706":[1,1,9],"707":[1,1,1],"708":[1,1,4],"709":[1,1,7],"710":[1,1,1],"711":[1,1,1],"712":[1,1,1],"713":[1,1,1],"714":[1,1,1],"715":[1,1,5],"716":[2,1,22],"717":[2,1,19],"718":[2,1,1],"719":[2,2,1],"720":[2,4,7],"721":[3,4,6],"722":[2,2,1],"723":[3,4,12],"724":[2,4,1],"725":[3,4,55],"726":[2,4,32],"727":[3,4,18],"728":[3,4,9],"729":[3,4,3],"730":[2,2,7],"731":[2,2,1],"732":[5,4,11],"733":[5,4,16],"734":[4,4,14],"735":[5,4,14],"736":[2,1,1],"737":[2,2,16],"738":[2,2,3],"739":[2,2,30],"740":[1,1,1],"741":[1,1,4],"742":[1,1,6],"743":[2,1,1],"744":[1,2,56],"745":[1,1,1],"746":[2,1,5],"747":[2,1,1],"748":[3,3,56],"749":[2,3,10],"750":[3,3,4],"751":[3,3,25],"752":[2,1,20],"753":[2,3,1],"754":[1,5,55],"755":[1,5,22],"756":[2,1,2],"757":[2,1,104],"758":[1,1,1],"759":[1,1,12],"760":[1,1,73],"761":[2,1,2],"762":[1,1,31],"763":[1,1,1],"764":[1,1,3],"765":[2,1,1],"766":[4,3,20],"767":[2,3,1],"768":[5,4,11],"769":[2,4,7],"770":[1,1,3],"771":[3,1,1],"772":[2,3,31],"773":[2,3,1],"774":[5,5,35],"775":[2,5,22],"776":[5,5,6],"777":[3,5,24],"778":[2,3,1],"779":[3,5,26],"780":[3,5,1],"781":[4,8,76],"782":[3,5,51],"783":[2,5,15],"784":[2,3,1],"785":[3,5,31],"786":[3,5,48],"787":[3,5,29],"788":[2,3,6],"789":[3,3,39],"790":[3,3,6],"791":[2,3,1],"792":[3,5,8],"793":[3,5,4],"794":[2,5,41],"795":[3,1,4],"796":[2,3,3],"797":[2,5,39],"798":[3,5,42],"799":[2,3,28],"800":[2,3,73],"801":[2,3,1],"802":[3,5,30],"803":[3,5,20],"804":[2,3,40],"805":[1,1,1],"806":[4,1,11],"807":[3,1,20],"808":[3,1,1],"809":[3,4,2],"810":[1,7,6],"811":[1,7,12],"812":[3,4,9],"813":[1,7,19],"814":[2,7,70],"815":[2,4,15],"816":[1,6,6],"817":[2,6,21],"818":[3,4,4],"819":[3,4,4],"820":[3,4,14],"821":[1,1,1],"822":[1,1,19],"823":[1,1,59],"824":[1,1,1],"825":[1,2,14],"826":[1,2,57],"827":[1,1,1],"828":[3,2,61],"829":[2,2,8],"830":[1,1,23],"831":[2,1,7],"832":[1,3,61],"833":[2,1,13],"834":[1,3,99],"835":[1,3,1],"836":[1,4,65],"837":[1,4,23],"838":[2,1,104],"839":[1,1,37],"840":[1,2,35],"841":[1,2,11],"842":[1,1,1],"843":[1,1,29],"844":[1,1,1],"845":[1,2,1],"846":[2,3,9],"847":[1,2,28],"848":[3,2,17],"849":[1,5,32],"850":[1,5,52],"851":[1,1,14],"852":[1,1,6],"853":[1,1,18],"854":[1,1,9],"855":[1,1,24],"856":[1,1,20],"857":[1,1,94],"858":[2,1,58],"859":[1,2,1],"860":[2,3,4],"861":[1,3,22],"862":[1,2,6],"863":[2,2,84],"864":[1,1,64],"865":[1,1,1],"866":[1,2,34],"867":[1,2,11],"868":[1,1,34],"869":[1,1,7],"870":[1,1,6],"871":[1,1,23],"872":[1,3,6],"873":[1,3,1],"874":[1,3,1],"875":[1,3,8],"876":[1,3,18],"877":[1,3,1],"878":[3,3,16],"879":[1,3,13],"880":[1,2,3],"881":[1,2,25],"882":[1,1,1],"883":[1,2,28],"884":[1,2,15],"885":[1,2,4],"886":[1,2,17],"887":[1,2,3],"888":[1,2,14],"889":[2,2,16],"890":[2,2,8],"891":[9,2,3],"892":[1,2,5],"893":[1,2,5],"894":[1,2,12],"895":[1,2,15],"896":[1,2,6],"897":[1,2,13],"898":[1,2,16],"899":[1,1,1],"900":[3,2,1],"901":[1,5,4],"902":[3,2,1],"903":[1,5,2],"904":[3,2,1],"905":[1,5,2],"906":[3,2,1],"907":[1,5,3],"908":[3,2,1],"909":[1,5,3],"910":[3,2,1],"911":[1,5,2],"912":[3,2,1],"913":[1,5,2],"914":[3,2,1],"915":[1,5,5],"916":[3,2,1],"917":[1,5,9],"918":[3,2,1],"919":[1,5,2],"920":[3,2,1],"921":[1,5,9],"922":[3,2,1],"923":[1,5,6],"924":[2,1,1],"925":[1,2,29],"926":[1,2,21],"927":[1,2,10],"928":[5,3,30],"929":[1,3,8],"930":[1,2,4],"931":[1,1,1],"932":[1,1,42],"933":[1,1,20],"934":[2,1,41],"935":[1,2,21],"936":[1,2,10],"937":[1,2,1],"938":[2,3,18],"939":[1,3,28],"940":[1,2,23],"941":[1,2,1],"942":[1,3,30],"943":[1,3,14],"944":[1,2,1],"945":[3,3,29],"946":[4,3,11],"947":[6,3,21],"948":[2,3,7],"949":[2,3,49],"950":[4,3,12],"951":[4,3,5],"952":[6,3,14],"953":[4,3,8],"954":[1,1,1],"955":[1,1,1],"956":[3,1,52],"957":[1,1,4],"958":[2,1,8],"959":[2,1,9],"960":[1,3,6],"961":[1,3,21],"962":[1,1,7],"963":[5,1,13],"964":[1,5,9],"965":[1,5,10],"966":[1,5,23],"967":[1,5,75]},"averageFieldLength":[2.0175619834710745,2.579545454545452,13.792355371900838],"storedFields":{"0":{"title":"2024-4-3 【重要更新】","titles":[]},"1":{"title":"Fixed","titles":["2024-4-3 【重要更新】"]},"2":{"title":"2024-3-28 【普通更新】","titles":[]},"3":{"title":"Fixed","titles":["2024-3-28 【普通更新】"]},"4":{"title":"2024-3-5 【普通更新】","titles":[]},"5":{"title":"Fixed","titles":["2024-3-5 【普通更新】"]},"6":{"title":"2024-1-18 【普通更新】","titles":[]},"7":{"title":"Fixed","titles":["2024-1-18 【普通更新】"]},"8":{"title":"2024-1-15 【普通更新】","titles":[]},"9":{"title":"Feature","titles":["2024-1-15 【普通更新】"]},"10":{"title":"Fixed","titles":["2024-1-15 【普通更新】"]},"11":{"title":"2024-1-2 【重要更新】","titles":[]},"12":{"title":"Feature","titles":["2024-1-2 【重要更新】"]},"13":{"title":"Fixed","titles":["2024-1-2 【重要更新】"]},"14":{"title":"2023-12-18 【重要更新】","titles":[]},"15":{"title":"Feature","titles":["2023-12-18 【重要更新】"]},"16":{"title":"Fixed","titles":["2023-12-18 【重要更新】"]},"17":{"title":"2023-12-12 【重要更新】","titles":[]},"18":{"title":"Feature","titles":["2023-12-12 【重要更新】"]},"19":{"title":"2023-12-08 【重要更新】","titles":[]},"20":{"title":"Feature","titles":["2023-12-08 【重要更新】"]},"21":{"title":"Fixed","titles":["2023-12-08 【重要更新】"]},"22":{"title":"2023-11-29 【普通更新】","titles":[]},"23":{"title":"Fixed","titles":["2023-11-29 【普通更新】"]},"24":{"title":"2023-11-28","titles":[]},"25":{"title":"Feature","titles":["2023-11-28"]},"26":{"title":"Fixed","titles":["2023-11-28"]},"27":{"title":"2023-11-10","titles":[]},"28":{"title":"Feature","titles":["2023-11-10"]},"29":{"title":"2023-11-02","titles":[]},"30":{"title":"Fixed","titles":["2023-11-02"]},"31":{"title":"2023-10-20","titles":[]},"32":{"title":"Feature","titles":["2023-10-20"]},"33":{"title":"Fixed","titles":["2023-10-20"]},"34":{"title":"2023-10-11【普通更新】","titles":[]},"35":{"title":"Feature","titles":["2023-10-11【普通更新】"]},"36":{"title":"2023-9-26","titles":[]},"37":{"title":"Feature","titles":["2023-9-26"]},"38":{"title":"Fixed","titles":["2023-9-26"]},"39":{"title":"2023-09-20","titles":[]},"40":{"title":"Feature","titles":["2023-09-20"]},"41":{"title":"2023-09-01","titles":[]},"42":{"title":"Feature","titles":["2023-09-01"]},"43":{"title":"Fixed","titles":["2023-09-01"]},"44":{"title":"2023-08-24","titles":[]},"45":{"title":"Feature","titles":["2023-08-24"]},"46":{"title":"Fixed","titles":["2023-08-24"]},"47":{"title":"2023-08-18","titles":[]},"48":{"title":"Feature","titles":["2023-08-18"]},"49":{"title":"Fixed","titles":["2023-08-18"]},"50":{"title":"2023-08-10","titles":[]},"51":{"title":"Feature","titles":["2023-08-10"]},"52":{"title":"2023-08-3","titles":[]},"53":{"title":"Feature","titles":["2023-08-3"]},"54":{"title":"Fixed","titles":["2023-08-3"]},"55":{"title":"2023-07-27","titles":[]},"56":{"title":"Feature","titles":["2023-07-27"]},"57":{"title":"Fixed","titles":["2023-07-27"]},"58":{"title":"2023-07-20","titles":[]},"59":{"title":"Feature","titles":["2023-07-20"]},"60":{"title":"Fixed","titles":["2023-07-20"]},"61":{"title":"2023-07-12","titles":[]},"62":{"title":"Feature","titles":["2023-07-12"]},"63":{"title":"2023-07-05","titles":[]},"64":{"title":"Feature","titles":["2023-07-05"]},"65":{"title":"Fixed","titles":["2023-07-05"]},"66":{"title":"2023-06-29","titles":[]},"67":{"title":"Feature","titles":["2023-06-29"]},"68":{"title":"Fixed","titles":["2023-06-29"]},"69":{"title":"2023-06-16","titles":[]},"70":{"title":"Fixed","titles":["2023-06-16"]},"71":{"title":"2023-06-14","titles":[]},"72":{"title":"Feature","titles":["2023-06-14"]},"73":{"title":"Fixed","titles":["2023-06-14"]},"74":{"title":"2023-06-12","titles":[]},"75":{"title":"Fixed","titles":["2023-06-12"]},"76":{"title":"2023-06-7","titles":[]},"77":{"title":"Feature","titles":["2023-06-7"]},"78":{"title":"Fixed","titles":["2023-06-7"]},"79":{"title":"2023-06-1","titles":[]},"80":{"title":"Feature","titles":["2023-06-1"]},"81":{"title":"Fixed","titles":["2023-06-1"]},"82":{"title":"2023-05-24","titles":[]},"83":{"title":"Feature","titles":["2023-05-24"]},"84":{"title":"Fixed","titles":["2023-05-24"]},"85":{"title":"2023-05-22","titles":[]},"86":{"title":"Feature","titles":["2023-05-22"]},"87":{"title":"Fixed","titles":["2023-05-22"]},"88":{"title":"2023-04-26","titles":[]},"89":{"title":"Changed","titles":["2023-04-26"]},"90":{"title":"2023-03-31","titles":[]},"91":{"title":"Feature","titles":["2023-03-31"]},"92":{"title":"2023-02-22","titles":[]},"93":{"title":"Feature","titles":["2023-02-22"]},"94":{"title":"2023-02-15","titles":[]},"95":{"title":"Fixed","titles":["2023-02-15"]},"96":{"title":"2023-02-9","titles":[]},"97":{"title":"Feature","titles":["2023-02-9"]},"98":{"title":"Fixed","titles":["2023-02-9"]},"99":{"title":"2023-01-17","titles":[]},"100":{"title":"Fixed","titles":["2023-01-17"]},"101":{"title":"2023-01-17","titles":[]},"102":{"title":"Feature","titles":["2023-01-17"]},"103":{"title":"Fixed","titles":["2023-01-17"]},"104":{"title":"2023-01-04","titles":[]},"105":{"title":"Feature","titles":["2023-01-04"]},"106":{"title":"Fixed","titles":["2023-01-04"]},"107":{"title":"2022-12-28","titles":[]},"108":{"title":"Feature","titles":["2022-12-28"]},"109":{"title":"Fixed","titles":["2022-12-28"]},"110":{"title":"2022-12-22","titles":[]},"111":{"title":"Fixed","titles":["2022-12-22"]},"112":{"title":"2022-12-21","titles":[]},"113":{"title":"Feature","titles":["2022-12-21"]},"114":{"title":"2022-12-7","titles":[]},"115":{"title":"Feature","titles":["2022-12-7"]},"116":{"title":"Fixed","titles":["2022-12-7"]},"117":{"title":"2022-11-30","titles":[]},"118":{"title":"Feature","titles":["2022-11-30"]},"119":{"title":"2022-11-23","titles":[]},"120":{"title":"Feature","titles":["2022-11-23"]},"121":{"title":"Fixed","titles":["2022-11-23"]},"122":{"title":"2022-11-17","titles":[]},"123":{"title":"Feature","titles":["2022-11-17"]},"124":{"title":"2022-11-9","titles":[]},"125":{"title":"Feature","titles":["2022-11-9"]},"126":{"title":"Fixed","titles":["2022-11-9"]},"127":{"title":"2022-10-27","titles":[]},"128":{"title":"Feature","titles":["2022-10-27"]},"129":{"title":"Fixed","titles":["2022-10-27"]},"130":{"title":"2022-10-20","titles":[]},"131":{"title":"Feature","titles":["2022-10-20"]},"132":{"title":"2022-10-12","titles":[]},"133":{"title":"Feature","titles":["2022-10-12"]},"134":{"title":"Fixed","titles":["2022-10-12"]},"135":{"title":"2022-9-28","titles":[]},"136":{"title":"Feature","titles":["2022-9-28"]},"137":{"title":"Fixed","titles":["2022-9-28"]},"138":{"title":"2022-9-21","titles":[]},"139":{"title":"Feature","titles":["2022-9-21"]},"140":{"title":"Fixed","titles":["2022-9-21"]},"141":{"title":"2022-9-13","titles":[]},"142":{"title":"Feature","titles":["2022-9-13"]},"143":{"title":"2022-9-8","titles":[]},"144":{"title":"Fixed","titles":["2022-9-8"]},"145":{"title":"Feature","titles":["2022-9-8"]},"146":{"title":"2022-9-7","titles":[]},"147":{"title":"Fixed","titles":["2022-9-7"]},"148":{"title":"2022-8-31","titles":[]},"149":{"title":"Fixed","titles":["2022-8-31"]},"150":{"title":"2022-8-26","titles":[]},"151":{"title":"Feature","titles":["2022-8-26"]},"152":{"title":"2022-8-17","titles":[]},"153":{"title":"Feature","titles":["2022-8-17"]},"154":{"title":"2022-8-11","titles":[]},"155":{"title":"Fixed","titles":["2022-8-11"]},"156":{"title":"2022-8-10","titles":[]},"157":{"title":"Feature","titles":["2022-8-10"]},"158":{"title":"Fixed","titles":["2022-8-10"]},"159":{"title":"2022-7-28","titles":[]},"160":{"title":"Feature","titles":["2022-7-28"]},"161":{"title":"2022-7-20","titles":[]},"162":{"title":"Feature","titles":["2022-7-20"]},"163":{"title":"Fixed","titles":["2022-7-20"]},"164":{"title":"Feature","titles":["2022-7-20"]},"165":{"title":"2022-7-14","titles":[]},"166":{"title":"Fixed","titles":["2022-7-14"]},"167":{"title":"2022-7-1","titles":[]},"168":{"title":"Fixed","titles":["2022-7-1"]},"169":{"title":"2022-6-30","titles":[]},"170":{"title":"Fixed","titles":["2022-6-30"]},"171":{"title":"2022-6-28","titles":[]},"172":{"title":"Feature","titles":["2022-6-28"]},"173":{"title":"Fixed","titles":["2022-6-28"]},"174":{"title":"2022-6-18","titles":[]},"175":{"title":"Fixed","titles":["2022-6-18"]},"176":{"title":"2022-6-16","titles":[]},"177":{"title":"Feature","titles":["2022-6-16"]},"178":{"title":"Fixed","titles":["2022-6-16"]},"179":{"title":"2022-6-13","titles":[]},"180":{"title":"Fixed","titles":["2022-6-13"]},"181":{"title":"2022-6-8","titles":[]},"182":{"title":"Feature","titles":["2022-6-8"]},"183":{"title":"Fixed","titles":["2022-6-8"]},"184":{"title":"2022-6-7","titles":[]},"185":{"title":"Feature","titles":["2022-6-7"]},"186":{"title":"2022-6-1","titles":[]},"187":{"title":"Feature","titles":["2022-6-1"]},"188":{"title":"2022-5-31","titles":[]},"189":{"title":"Feature","titles":["2022-5-31"]},"190":{"title":"2022-5-30","titles":[]},"191":{"title":"Fixed","titles":["2022-5-30"]},"192":{"title":"2022-5-26","titles":[]},"193":{"title":"Changed","titles":["2022-5-26"]},"194":{"title":"Fixed","titles":["2022-5-26"]},"195":{"title":"2022-5-24","titles":[]},"196":{"title":"Feature","titles":["2022-5-24"]},"197":{"title":"2022-4-29","titles":[]},"198":{"title":"Fixed","titles":["2022-4-29"]},"199":{"title":"2022-4-26","titles":[]},"200":{"title":"Fixed","titles":["2022-4-26"]},"201":{"title":"Feature","titles":["2022-4-26"]},"202":{"title":"2022-4-24","titles":[]},"203":{"title":"Fixed","titles":["2022-4-24"]},"204":{"title":"2022-4-22","titles":[]},"205":{"title":"Fixed","titles":["2022-4-22"]},"206":{"title":"Feature","titles":["2022-4-22"]},"207":{"title":"2022-4-18","titles":[]},"208":{"title":"Feature","titles":["2022-4-18"]},"209":{"title":"2022-4-14","titles":[]},"210":{"title":"Feature","titles":["2022-4-14"]},"211":{"title":"2022-4-11","titles":[]},"212":{"title":"Changed","titles":["2022-4-11"]},"213":{"title":"2022-3-29","titles":[]},"214":{"title":"Changed","titles":["2022-3-29"]},"215":{"title":"2022-3-22","titles":[]},"216":{"title":"Changed","titles":["2022-3-22"]},"217":{"title":"2022-3-7","titles":[]},"218":{"title":"Changed","titles":["2022-3-7"]},"219":{"title":"2022-3-7","titles":[]},"220":{"title":"Changed","titles":["2022-3-7"]},"221":{"title":"2022-2-17","titles":[]},"222":{"title":"Changed","titles":["2022-2-17"]},"223":{"title":"2022-2-15","titles":[]},"224":{"title":"Fixed","titles":["2022-2-15"]},"225":{"title":"2022-2-14","titles":[]},"226":{"title":"Feature","titles":["2022-2-14"]},"227":{"title":"2022-2-11","titles":[]},"228":{"title":"Feature","titles":["2022-2-11"]},"229":{"title":"2022-1-26","titles":[]},"230":{"title":"Feature","titles":["2022-1-26"]},"231":{"title":"2022-1-25","titles":[]},"232":{"title":"Fixed","titles":["2022-1-25"]},"233":{"title":"2022-1-24","titles":[]},"234":{"title":"Feature","titles":["2022-1-24"]},"235":{"title":"2022-1-21","titles":[]},"236":{"title":"Feature","titles":["2022-1-21"]},"237":{"title":"Changed","titles":["2022-1-21"]},"238":{"title":"2022-1-20","titles":[]},"239":{"title":"Feature","titles":["2022-1-20"]},"240":{"title":"2022-1-17","titles":[]},"241":{"title":"Fixed","titles":["2022-1-17"]},"242":{"title":"Changed","titles":["2022-1-17"]},"243":{"title":"2022-1-13","titles":[]},"244":{"title":"Fixed","titles":["2022-1-13"]},"245":{"title":"2022-1-7","titles":[]},"246":{"title":"Fixed","titles":["2022-1-7"]},"247":{"title":"2021-12-31","titles":[]},"248":{"title":"Fixed","titles":["2021-12-31"]},"249":{"title":"2021-12-30","titles":[]},"250":{"title":"Fixed","titles":["2021-12-30"]},"251":{"title":"2021-12-20","titles":[]},"252":{"title":"Fixed","titles":["2021-12-20"]},"253":{"title":"2021-12-16","titles":[]},"254":{"title":"Feature","titles":["2021-12-16"]},"255":{"title":"2021-12-10","titles":[]},"256":{"title":"Fixed","titles":["2021-12-10"]},"257":{"title":"2021-12-06","titles":[]},"258":{"title":"Feature","titles":["2021-12-06"]},"259":{"title":"Fixed","titles":["2021-12-06"]},"260":{"title":"2021-12-02","titles":[]},"261":{"title":"Fixed","titles":["2021-12-02"]},"262":{"title":"2021-11-30","titles":[]},"263":{"title":"Changed","titles":["2021-11-30"]},"264":{"title":"Fixed","titles":["2021-11-30"]},"265":{"title":"2021-11-19","titles":[]},"266":{"title":"Fixed","titles":["2021-11-19"]},"267":{"title":"2021-11-18","titles":[]},"268":{"title":"Feature","titles":["2021-11-18"]},"269":{"title":"Fixed","titles":["2021-11-18"]},"270":{"title":"Changed","titles":["2021-11-18"]},"271":{"title":"2021-10-26","titles":[]},"272":{"title":"Feature","titles":["2021-10-26"]},"273":{"title":"2021-10-09","titles":[]},"274":{"title":"Feature","titles":["2021-10-09"]},"275":{"title":"2021-09-23","titles":[]},"276":{"title":"Fixed","titles":["2021-09-23"]},"277":{"title":"2021-09-22","titles":[]},"278":{"title":"Feature","titles":["2021-09-22"]},"279":{"title":"Feature","titles":["2021-09-22"]},"280":{"title":"Feature","titles":["2021-09-22"]},"281":{"title":"2021-09-14","titles":[]},"282":{"title":"Feature","titles":["2021-09-14"]},"283":{"title":"Fixed","titles":["2021-09-14"]},"284":{"title":"2021-09-06","titles":[]},"285":{"title":"Feature","titles":["2021-09-06"]},"286":{"title":"2021-8-20","titles":[]},"287":{"title":"Feature","titles":["2021-8-20"]},"288":{"title":"2021-8-12","titles":[]},"289":{"title":"Feature","titles":["2021-8-12"]},"290":{"title":"2021-8-10","titles":[]},"291":{"title":"Changed","titles":["2021-8-10"]},"292":{"title":"2021-08-05","titles":[]},"293":{"title":"Feature","titles":["2021-08-05"]},"294":{"title":"2021-08-04","titles":[]},"295":{"title":"Fixed","titles":["2021-08-04"]},"296":{"title":"2021-08-02","titles":[]},"297":{"title":"Fixed","titles":["2021-08-02"]},"298":{"title":"2021-08-01","titles":[]},"299":{"title":"Changed","titles":["2021-08-01"]},"300":{"title":"2021-07-31","titles":[]},"301":{"title":"Feature","titles":["2021-07-31"]},"302":{"title":"Changed","titles":["2021-07-31"]},"303":{"title":"2021-07-26","titles":[]},"304":{"title":"Feature","titles":["2021-07-26"]},"305":{"title":"2021-07-26","titles":[]},"306":{"title":"Feature","titles":["2021-07-26"]},"307":{"title":"2021-07-20","titles":[]},"308":{"title":"Fixed","titles":["2021-07-20"]},"309":{"title":"2021-07-19","titles":[]},"310":{"title":"Changed","titles":["2021-07-19"]},"311":{"title":"2021-07-13","titles":[]},"312":{"title":"Fixed","titles":["2021-07-13"]},"313":{"title":"Changed","titles":["2021-07-13"]},"314":{"title":"2021-07-09","titles":[]},"315":{"title":"Fixed","titles":["2021-07-09"]},"316":{"title":"2021-07-02","titles":[]},"317":{"title":"Fixed","titles":["2021-07-02"]},"318":{"title":"2021-06-30","titles":[]},"319":{"title":"Fixed","titles":["2021-06-30"]},"320":{"title":"Feature","titles":["2021-06-30"]},"321":{"title":"2021-06-29","titles":[]},"322":{"title":"Fixed","titles":["2021-06-29"]},"323":{"title":"Feature","titles":["2021-06-29"]},"324":{"title":"Removed","titles":["2021-06-29"]},"325":{"title":"Changed","titles":["2021-06-29"]},"326":{"title":"Others","titles":["2021-06-29"]},"327":{"title":"2021-06-10","titles":[]},"328":{"title":"Fixed","titles":["2021-06-10"]},"329":{"title":"使用Android CPU Profiler性能调优","titles":[]},"330":{"title":"资源优化","titles":[]},"331":{"title":"工具入口","titles":["资源优化"]},"332":{"title":"工具介绍","titles":["资源优化"]},"333":{"title":"Texture","titles":["资源优化","工具介绍"]},"334":{"title":"优化建议","titles":["资源优化"]},"335":{"title":"后端服务指引","titles":[]},"336":{"title":"后端服务模式","titles":["后端服务指引"]},"337":{"title":"自建后端服务","titles":["后端服务指引"]},"338":{"title":"云开发","titles":["后端服务指引"]},"339":{"title":"微信小游戏压缩纹理工具2.0(Beta)","titles":[]},"340":{"title":"概述","titles":["微信小游戏压缩纹理工具2.0(Beta)"]},"341":{"title":"使用建议","titles":["微信小游戏压缩纹理工具2.0(Beta)"]},"342":{"title":"Unity 版本支持问题","titles":["微信小游戏压缩纹理工具2.0(Beta)"]},"343":{"title":"使用说明","titles":["微信小游戏压缩纹理工具2.0(Beta)"]},"344":{"title":"1.安装 Node.js","titles":["微信小游戏压缩纹理工具2.0(Beta)","使用说明"]},"345":{"title":"2.构建 Bundle 文件","titles":["微信小游戏压缩纹理工具2.0(Beta)","使用说明"]},"346":{"title":"构建前的纹理格式配置说明:","titles":["微信小游戏压缩纹理工具2.0(Beta)","使用说明","2.构建 Bundle 文件"]},"347":{"title":"ASTC格式配置说明:","titles":["微信小游戏压缩纹理工具2.0(Beta)","使用说明","2.构建 Bundle 文件"]},"348":{"title":"3.导出游戏","titles":["微信小游戏压缩纹理工具2.0(Beta)","使用说明"]},"349":{"title":"4.执行压缩纹理","titles":["微信小游戏压缩纹理工具2.0(Beta)","使用说明"]},"350":{"title":"5.上传CDN","titles":["微信小游戏压缩纹理工具2.0(Beta)","使用说明"]},"351":{"title":"WebGL2.0 支持说明(Beta)","titles":["微信小游戏压缩纹理工具2.0(Beta)"]},"352":{"title":"忽略配置说明","titles":["微信小游戏压缩纹理工具2.0(Beta)"]},"353":{"title":"首资源包优化说明","titles":["微信小游戏压缩纹理工具2.0(Beta)"]},"354":{"title":"新版本异常回退说明","titles":["微信小游戏压缩纹理工具2.0(Beta)"]},"355":{"title":"原理解释","titles":["微信小游戏压缩纹理工具2.0(Beta)"]},"356":{"title":"Q&A","titles":["微信小游戏压缩纹理工具2.0(Beta)"]},"357":{"title":"1.生成的纹理太大","titles":["微信小游戏压缩纹理工具2.0(Beta)","Q&A"]},"358":{"title":"2.资源上传至CDN的注意事项","titles":["微信小游戏压缩纹理工具2.0(Beta)","Q&A"]},"359":{"title":"3.非4倍数的资源处理底层逻辑","titles":["微信小游戏压缩纹理工具2.0(Beta)","Q&A"]},"360":{"title":"4.Node.js异常处理","titles":["微信小游戏压缩纹理工具2.0(Beta)","Q&A"]},"361":{"title":"5.分离纹理后各自单独下载是否会增加下载开销?","titles":["微信小游戏压缩纹理工具2.0(Beta)","Q&A"]},"362":{"title":"6.MacOS系统执行报错 “'System.Drawing.GDIPlus' threw an exception”","titles":["微信小游戏压缩纹理工具2.0(Beta)","Q&A"]},"363":{"title":"解决方案一:","titles":["微信小游戏压缩纹理工具2.0(Beta)","Q&A","6.MacOS系统执行报错 “'System.Drawing.GDIPlus' threw an exception”"]},"364":{"title":"解决方案二:","titles":["微信小游戏压缩纹理工具2.0(Beta)","Q&A","6.MacOS系统执行报错 “'System.Drawing.GDIPlus' threw an exception”"]},"365":{"title":"微信压缩纹理API介绍","titles":["微信小游戏压缩纹理工具2.0(Beta)"]},"366":{"title":"WXAssetsTextTools.CompressText( ... )","titles":["微信小游戏压缩纹理工具2.0(Beta)","微信压缩纹理API介绍"]},"367":{"title":"说明","titles":["微信小游戏压缩纹理工具2.0(Beta)","微信压缩纹理API介绍","WXAssetsTextTools.CompressText( ... )"]},"368":{"title":"参数","titles":["微信小游戏压缩纹理工具2.0(Beta)","微信压缩纹理API介绍","WXAssetsTextTools.CompressText( ... )"]},"369":{"title":"WXAssetsTextTools.GetAssetBundles( ... )","titles":["微信小游戏压缩纹理工具2.0(Beta)","微信压缩纹理API介绍"]},"370":{"title":"说明","titles":["微信小游戏压缩纹理工具2.0(Beta)","微信压缩纹理API介绍","WXAssetsTextTools.GetAssetBundles( ... )"]},"371":{"title":"参数","titles":["微信小游戏压缩纹理工具2.0(Beta)","微信压缩纹理API介绍","WXAssetsTextTools.GetAssetBundles( ... )"]},"372":{"title":"启动封面","titles":[]},"373":{"title":"完整配置","titles":["启动封面"]},"374":{"title":"转换插件配置","titles":["启动封面","完整配置"]},"375":{"title":"game.js配置","titles":["启动封面","完整配置"]},"376":{"title":"默认效果","titles":["启动封面"]},"377":{"title":"定制效果","titles":["启动封面"]},"378":{"title":"定制微信小游戏的 URP 管线","titles":[]},"379":{"title":"本地化 URP 包","titles":["定制微信小游戏的 URP 管线"]},"380":{"title":"准备条件编译宏","titles":["定制微信小游戏的 URP 管线"]},"381":{"title":"定制本地化 URP 管线","titles":["定制微信小游戏的 URP 管线"]},"382":{"title":"供参考的 URP 定制版本","titles":["定制微信小游戏的 URP 管线","定制本地化 URP 管线"]},"383":{"title":"微信 URP 定制版本的性能数据对比","titles":["定制微信小游戏的 URP 管线","定制本地化 URP 管线"]},"384":{"title":"注意事项","titles":["定制微信小游戏的 URP 管线"]},"385":{"title":"参考","titles":["定制微信小游戏的 URP 管线"]},"386":{"title":"资源部署与缓存","titles":[]},"387":{"title":"资源部署","titles":["资源部署与缓存"]},"388":{"title":"首资源包","titles":["资源部署与缓存","资源部署"]},"389":{"title":"Assets","titles":["资源部署与缓存","资源部署"]},"390":{"title":"StreamingAssets","titles":["资源部署与缓存","资源部署"]},"391":{"title":"资源服务器注意事项","titles":["资源部署与缓存","资源部署"]},"392":{"title":"资源更新说明","titles":["资源部署与缓存"]},"393":{"title":"资源缓存","titles":["资源部署与缓存"]},"394":{"title":"资源缓存规则","titles":["资源部署与缓存","资源缓存"]},"395":{"title":"错误调试与异常排查","titles":[]},"396":{"title":"如何排查程序中出现的异常","titles":["错误调试与异常排查"]},"397":{"title":"如何查看日志","titles":["错误调试与异常排查","如何排查程序中出现的异常"]},"398":{"title":"如何通过错误堆栈查找源代码问题","titles":["错误调试与异常排查","如何排查程序中出现的异常"]},"399":{"title":"使用Profiling-funcs","titles":["错误调试与异常排查","如何排查程序中出现的异常","如何通过错误堆栈查找源代码问题"]},"400":{"title":"使用symbols文件可读函数名","titles":["错误调试与异常排查","如何排查程序中出现的异常","如何通过错误堆栈查找源代码问题"]},"401":{"title":"影响异常错误的导出选项","titles":["错误调试与异常排查"]},"402":{"title":"Enable Exceptions","titles":["错误调试与异常排查","影响异常错误的导出选项"]},"403":{"title":"Debug Symbols","titles":["错误调试与异常排查","影响异常错误的导出选项"]},"404":{"title":"Development Build","titles":["错误调试与异常排查","影响异常错误的导出选项"]},"405":{"title":"技术常见问题QA","titles":[]},"406":{"title":"工具使用","titles":["技术常见问题QA"]},"407":{"title":"1.微信开发者工具打开时提示“app.json未找到”","titles":["技术常见问题QA","工具使用"]},"408":{"title":"2.微信开发者工具打开时提示“找不到game.json或读取错误”","titles":["技术常见问题QA","工具使用"]},"409":{"title":"3.如何在真机上预览游戏","titles":["技术常见问题QA","工具使用"]},"410":{"title":"4.如何在真机上进行调试和错误日志排查","titles":["技术常见问题QA","工具使用"]},"411":{"title":"5.Unity PlayerSettings导出选项中使用"brotli"或"gzip", 使用微信开发者工具无法启动游戏","titles":["技术常见问题QA","工具使用"]},"412":{"title":"6.使用代码分包的情况下,启动游戏出现“首次拉取代码分包”提示","titles":["技术常见问题QA","工具使用"]},"413":{"title":"7.微信开发者工具提示"资源下载失败"","titles":["技术常见问题QA","工具使用"]},"414":{"title":"8.微信开发者工具能正常打开游戏,但Android卡在首屏,资源下载失败","titles":["技术常见问题QA","工具使用"]},"415":{"title":"9.开发者工具提示“插件申请成功,待审核确认”","titles":["技术常见问题QA","工具使用"]},"416":{"title":"10.内网开发时,微信开发者工具服务异常","titles":["技术常见问题QA","工具使用"]},"417":{"title":"11.开发者工具提示pluginid: wx7a727ff7d940bb3f, permission deny字样错误","titles":["技术常见问题QA","工具使用"]},"418":{"title":"12.小游戏包中的webgl.wasm.symbols.unityweb不会被上传,是做什么用的","titles":["技术常见问题QA","工具使用"]},"419":{"title":"13.如何自定义接入构建流程","titles":["技术常见问题QA","工具使用"]},"420":{"title":"Unity WebGL","titles":["技术常见问题QA"]},"421":{"title":"1.能否使用System.Net命名空间下的接口","titles":["技术常见问题QA","Unity WebGL"]},"422":{"title":"2.小游戏启动出现"Unable to load DLL ...."","titles":["技术常见问题QA","Unity WebGL"]},"423":{"title":"3.能否使用System.File相关接口做文件存储","titles":["技术常见问题QA","Unity WebGL"]},"424":{"title":"4.如何接入第三方的js sdk, 能写js脚本和C#进行交互吗?","titles":["技术常见问题QA","Unity WebGL"]},"425":{"title":"5.小游戏的中文字体不显示,但Editor没问题","titles":["技术常见问题QA","Unity WebGL"]},"426":{"title":"6.游戏逻辑是否能使用lua","titles":["技术常见问题QA","Unity WebGL"]},"427":{"title":"7.Touch事件丢失或错误,导致多点触控不正确","titles":["技术常见问题QA","Unity WebGL"]},"428":{"title":"8.显示黑屏,运行提示大量shader编译错误","titles":["技术常见问题QA","Unity WebGL"]},"429":{"title":"9.Unity FMOD音频插件是否支持?","titles":["技术常见问题QA","Unity WebGL"]},"430":{"title":"10.Mac 系统下 Unity 构建 WebGL 项目报Failed running "../il2cppcore/il2cppcore.dll"错误解决办法","titles":["技术常见问题QA","Unity WebGL"]},"431":{"title":"11.引擎代码裁剪级别(Managed Striping Level)应该如何设置?","titles":["技术常见问题QA","Unity WebGL"]},"432":{"title":"12.使用xlua等方案在WebGL平台报“ArgumentException: Destination array was not long enough”?","titles":["技术常见问题QA","Unity WebGL"]},"433":{"title":"平台适配","titles":["技术常见问题QA"]},"434":{"title":"1.文本输入框点击无法输入,没有弹出输入法","titles":["技术常见问题QA","平台适配"]},"435":{"title":"2.高性能模式下iOS无法加载,但Android和微信开发者工具没问题","titles":["技术常见问题QA","平台适配"]},"436":{"title":"3.Android运行达到满帧较为流畅,iOS性能差","titles":["技术常见问题QA","平台适配"]},"437":{"title":"4.小游戏中能插入超链接跳转网页吗?","titles":["技术常见问题QA","平台适配"]},"438":{"title":"5.小游戏是否支持Unity VideoPlayer","titles":["技术常见问题QA","平台适配"]},"439":{"title":"6.为什么使用Application.targetFrameRate无法限帧率?安卓左上角帧率不对","titles":["技术常见问题QA","平台适配"]},"440":{"title":"7.Unity Audio音频是否需要使用小游戏音频适配","titles":["技术常见问题QA","平台适配"]},"441":{"title":"8.PlayerPref或用户数据存储失效","titles":["技术常见问题QA","平台适配"]},"442":{"title":"9.微信接口提示“fail require user interaction (only in touchend event)”","titles":["技术常见问题QA","平台适配"]},"443":{"title":"微信开发者工具域名列表","titles":[]},"444":{"title":"方案评估","titles":[]},"445":{"title":"1. 游戏类目","titles":["方案评估"]},"446":{"title":"2. 引擎版本","titles":["方案评估"]},"447":{"title":"3. 能力支持","titles":["方案评估"]},"448":{"title":"资源缓存","titles":[]},"449":{"title":"介绍","titles":[]},"450":{"title":"一、什么情况触发资源缓存","titles":["介绍"]},"451":{"title":"二、哪些资源会自动缓存?","titles":["介绍"]},"452":{"title":"三、缓存规则","titles":["介绍"]},"453":{"title":"相关配置","titles":["介绍","三、缓存规则"]},"454":{"title":"是否缓存规则","titles":["介绍","三、缓存规则","相关配置"]},"455":{"title":"是否缓存业务资源","titles":["介绍","三、缓存规则","相关配置","是否缓存规则"]},"456":{"title":"是否缓存纹理","titles":["介绍","三、缓存规则","相关配置","是否缓存规则"]},"457":{"title":"资源淘汰规则","titles":["介绍","三、缓存规则","相关配置"]},"458":{"title":"识别业务资源版本","titles":["介绍","三、缓存规则","相关配置","资源淘汰规则"]},"459":{"title":"识别纹理资源版本","titles":["介绍","三、缓存规则","相关配置","资源淘汰规则"]},"460":{"title":"缓存清理规则","titles":["介绍","三、缓存规则","相关配置"]},"461":{"title":"示例","titles":["介绍","三、缓存规则"]},"462":{"title":"四、判断是否走缓存","titles":["介绍"]},"463":{"title":"查看详细日志","titles":["介绍","四、判断是否走缓存"]},"464":{"title":"查看缓存日志","titles":["介绍","四、判断是否走缓存"]},"465":{"title":"五、注意项","titles":["介绍"]},"466":{"title":"首场景启动优化","titles":[]},"467":{"title":"小游戏Profile","titles":["首场景启动优化"]},"468":{"title":"Unity CallMain","titles":["首场景启动优化"]},"469":{"title":"CallMain Profile分析","titles":["首场景启动优化"]},"470":{"title":"Unity 游戏接入微信小游戏指南","titles":[]},"471":{"title":"【阶段一】兼容性评估","titles":["Unity 游戏接入微信小游戏指南"]},"472":{"title":"【阶段二】项目转换","titles":["Unity 游戏接入微信小游戏指南"]},"473":{"title":"快速开始——转换工具导出微信小游戏","titles":["Unity 游戏接入微信小游戏指南","【阶段二】项目转换"]},"474":{"title":"资源按需加载","titles":["Unity 游戏接入微信小游戏指南","【阶段二】项目转换"]},"475":{"title":"后端/网络通信适配","titles":["Unity 游戏接入微信小游戏指南","【阶段二】项目转换"]},"476":{"title":"资源服务器部署配置","titles":["Unity 游戏接入微信小游戏指南","【阶段二】项目转换"]},"477":{"title":"开发阶段的错误排查","titles":["Unity 游戏接入微信小游戏指南","【阶段二】项目转换"]},"478":{"title":"【阶段三】微信平台能力接入","titles":["Unity 游戏接入微信小游戏指南"]},"479":{"title":"接入微信API","titles":["Unity 游戏接入微信小游戏指南","【阶段三】微信平台能力接入"]},"480":{"title":"启动留存数据上报统计","titles":["Unity 游戏接入微信小游戏指南","【阶段三】微信平台能力接入"]},"481":{"title":"【阶段四】体验调优","titles":["Unity 游戏接入微信小游戏指南"]},"482":{"title":"首场景启动优化——首帧逻辑优化","titles":["Unity 游戏接入微信小游戏指南","【阶段四】体验调优"]},"483":{"title":"资源预下载","titles":["Unity 游戏接入微信小游戏指南","【阶段四】体验调优"]},"484":{"title":"运行性能及调优","titles":["Unity 游戏接入微信小游戏指南","【阶段四】体验调优"]},"485":{"title":"压缩纹理资源","titles":["Unity 游戏接入微信小游戏指南","【阶段四】体验调优"]},"486":{"title":"WASM代码分包","titles":["Unity 游戏接入微信小游戏指南","【阶段四】体验调优"]},"487":{"title":"封面图配置","titles":["Unity 游戏接入微信小游戏指南","【阶段四】体验调优"]},"488":{"title":"【阶段五】发布上线与现网监控","titles":["Unity 游戏接入微信小游戏指南"]},"489":{"title":"输入法适配","titles":[]},"490":{"title":"支持2022 Input Field组件自动适配,低版本或者其他组件暂不支持","titles":["输入法适配"]},"491":{"title":"低版本兼容:","titles":["输入法适配"]},"492":{"title":"调试错误与异常处理","titles":[]},"493":{"title":"开启代码异常","titles":["调试错误与异常处理"]},"494":{"title":"异常产生时如何排查","titles":["调试错误与异常处理"]},"495":{"title":"微信开发者工具","titles":["调试错误与异常处理","异常产生时如何排查"]},"496":{"title":"真机环境","titles":["调试错误与异常处理","异常产生时如何排查"]},"497":{"title":"二、Unity导出WebGL","titles":["调试错误与异常处理"]},"498":{"title":"三、适配小游戏","titles":["调试错误与异常处理"]},"499":{"title":"四、使用脚本集成到自己的构建系统","titles":["调试错误与异常处理"]},"500":{"title":"五、常见问题","titles":["调试错误与异常处理"]},"501":{"title":"使用 AutoStreaming 进行资源按需加载","titles":[]},"502":{"title":"方案选择建议","titles":["使用 AutoStreaming 进行资源按需加载"]},"503":{"title":"实践指南","titles":["使用 AutoStreaming 进行资源按需加载"]},"504":{"title":"Q&A","titles":["使用 AutoStreaming 进行资源按需加载"]},"505":{"title":"1.游戏在微信开发者工具中运行缺失资源?","titles":["使用 AutoStreaming 进行资源按需加载","Q&A"]},"506":{"title":"问题反馈与联系我们","titles":[]},"507":{"title":"Git Issue","titles":["问题反馈与联系我们"]},"508":{"title":"小游戏研发助手","titles":["问题反馈与联系我们"]},"509":{"title":"现网错误日志上报与排查","titles":[]},"510":{"title":"用户反馈日志","titles":["现网错误日志上报与排查"]},"511":{"title":"小游戏实时日志","titles":["现网错误日志上报与排查"]},"512":{"title":"JS Error错误日志","titles":["现网错误日志上报与排查"]},"513":{"title":"启动剧情(Beta)","titles":[]},"514":{"title":"演示效果","titles":["启动剧情(Beta)"]},"515":{"title":"能力特性","titles":["启动剧情(Beta)"]},"516":{"title":"推荐内容","titles":["启动剧情(Beta)"]},"517":{"title":"接入方式","titles":["启动剧情(Beta)"]},"518":{"title":"步骤一:设计剧情","titles":["启动剧情(Beta)","接入方式"]},"519":{"title":"步骤二:配置启动剧情","titles":["启动剧情(Beta)","接入方式"]},"520":{"title":"基于异步干预剧情发展","titles":["启动剧情(Beta)","接入方式"]},"521":{"title":"自定义上报分析","titles":["启动剧情(Beta)","接入方式"]},"522":{"title":"外显进度条接入","titles":["启动剧情(Beta)","接入方式"]},"523":{"title":"关闭/样式调整","titles":["启动剧情(Beta)","接入方式","外显进度条接入"]},"524":{"title":"弱网处理","titles":["启动剧情(Beta)","接入方式"]},"525":{"title":"API执行环境说明","titles":["启动剧情(Beta)"]},"526":{"title":"API(JavaScript侧)","titles":["启动剧情(Beta)"]},"527":{"title":".running","titles":["启动剧情(Beta)","API(JavaScript侧)"]},"528":{"title":".config","titles":["启动剧情(Beta)","API(JavaScript侧)"]},"529":{"title":".end()","titles":["启动剧情(Beta)","API(JavaScript侧)"]},"530":{"title":".onEnd(callback: Function)","titles":["启动剧情(Beta)","API(JavaScript侧)"]},"531":{"title":".offEnd(callback: Function)","titles":["启动剧情(Beta)","API(JavaScript侧)"]},"532":{"title":".onErr(callback: Function)","titles":["启动剧情(Beta)","API(JavaScript侧)"]},"533":{"title":".offErr(callback: Function)","titles":["启动剧情(Beta)","API(JavaScript侧)"]},"534":{"title":".onWeakNetwork(callback: Function)","titles":["启动剧情(Beta)","API(JavaScript侧)"]},"535":{"title":".offWeakNetwork(callback: Function)","titles":["启动剧情(Beta)","API(JavaScript侧)"]},"536":{"title":".setGlobalVar(globalName: string, value: string)","titles":["启动剧情(Beta)","API(JavaScript侧)"]},"537":{"title":".getGlobalVar(globalName: string): string | null","titles":["启动剧情(Beta)","API(JavaScript侧)"]},"538":{"title":".onGlobalVarChange(globalName: string, callback: Function)","titles":["启动剧情(Beta)","API(JavaScript侧)"]},"539":{"title":".offGlobalVarChange(globalName: string, callback: Function)","titles":["启动剧情(Beta)","API(JavaScript侧)"]},"540":{"title":"API(C#侧)","titles":["启动剧情(Beta)"]},"541":{"title":"获得交互句柄","titles":["启动剧情(Beta)","API(C#侧)"]},"542":{"title":"void SetPercentage(double value)","titles":["启动剧情(Beta)","API(C#侧)"]},"543":{"title":"bool GetRunning()","titles":["启动剧情(Beta)","API(C#侧)"]},"544":{"title":"void End()","titles":["启动剧情(Beta)","API(C#侧)"]},"545":{"title":"void onEnd(Action<bool> callback)","titles":["启动剧情(Beta)","API(C#侧)"]},"546":{"title":"void offEnd(Action<bool> callback)","titles":["启动剧情(Beta)","API(C#侧)"]},"547":{"title":"void SetGlobalVar(string key, string value)","titles":["启动剧情(Beta)","API(C#侧)"]},"548":{"title":"string GetGlobalVar(string key)","titles":["启动剧情(Beta)","API(C#侧)"]},"549":{"title":"Unity中如何展示排行榜这类微信关系数据","titles":[]},"550":{"title":"背景和原理介绍","titles":["Unity中如何展示排行榜这类微信关系数据"]},"551":{"title":"详细步骤","titles":["Unity中如何展示排行榜这类微信关系数据"]},"552":{"title":"1、设置占位纹理","titles":["Unity中如何展示排行榜这类微信关系数据","详细步骤"]},"553":{"title":"2、调用SDK的API","titles":["Unity中如何展示排行榜这类微信关系数据","详细步骤"]},"554":{"title":"2.1 在需要展示的地方调用,WX.ShowOpenData","titles":["Unity中如何展示排行榜这类微信关系数据","详细步骤","2、调用SDK的API"]},"555":{"title":"2.2 需要关闭时则调用,WX.HideOpenData","titles":["Unity中如何展示排行榜这类微信关系数据","详细步骤","2、调用SDK的API"]},"556":{"title":"2.3 通过 PostMessage 向开放数据域传递消息","titles":["Unity中如何展示排行榜这类微信关系数据","详细步骤","2、调用SDK的API"]},"557":{"title":"3、导出选项勾选使用好友关系链","titles":["Unity中如何展示排行榜这类微信关系数据","详细步骤"]},"558":{"title":"4、用JS开发排行榜这类微信关系逻辑","titles":["Unity中如何展示排行榜这类微信关系数据","详细步骤"]},"559":{"title":"5、示例DEMO","titles":["Unity中如何展示排行榜这类微信关系数据","详细步骤"]},"560":{"title":"5.1 好友排行榜","titles":["Unity中如何展示排行榜这类微信关系数据","详细步骤","5、示例DEMO"]},"561":{"title":"5.2 群好友排行榜","titles":["Unity中如何展示排行榜这类微信关系数据","详细步骤","5、示例DEMO"]},"562":{"title":"常见问题QA","titles":["Unity中如何展示排行榜这类微信关系数据"]},"563":{"title":"优化Unity WebGL的内存","titles":[]},"564":{"title":"一、内存与OOM","titles":["优化Unity WebGL的内存"]},"565":{"title":"二、Unity WebGL适配小游戏的内存结构","titles":["优化Unity WebGL的内存"]},"566":{"title":"三、内存查看工具","titles":["优化Unity WebGL的内存"]},"567":{"title":"3.1 进程总内存","titles":["优化Unity WebGL的内存","三、内存查看工具"]},"568":{"title":"Instruments in Xcode(iOS)","titles":["优化Unity WebGL的内存","三、内存查看工具","3.1 进程总内存"]},"569":{"title":"Perfdog(Android or iOS)","titles":["优化Unity WebGL的内存","三、内存查看工具","3.1 进程总内存"]},"570":{"title":"3.2 UnityHeap","titles":["优化Unity WebGL的内存","三、内存查看工具"]},"571":{"title":"3.3 ProfilingMemory","titles":["优化Unity WebGL的内存","三、内存查看工具"]},"572":{"title":"3.4 Unity Profiler","titles":["优化Unity WebGL的内存","三、内存查看工具"]},"573":{"title":"3.5 JavaScript Heap","titles":["优化Unity WebGL的内存","三、内存查看工具"]},"574":{"title":"微信开发者工具","titles":["优化Unity WebGL的内存","三、内存查看工具","3.5 JavaScript Heap"]},"575":{"title":"FireFox Memory(PC)","titles":["优化Unity WebGL的内存","三、内存查看工具","3.5 JavaScript Heap"]},"576":{"title":"iOS Safari Timeline(PC or iOS)","titles":["优化Unity WebGL的内存","三、内存查看工具","3.5 JavaScript Heap"]},"577":{"title":"四、内存优化方案","titles":["优化Unity WebGL的内存","三、内存查看工具"]},"578":{"title":"4.1 WASM代码编译内存","titles":["优化Unity WebGL的内存","三、内存查看工具"]},"579":{"title":"4.2 GPU内存","titles":["优化Unity WebGL的内存","三、内存查看工具"]},"580":{"title":"4.3 UnityHeap","titles":["优化Unity WebGL的内存","三、内存查看工具"]},"581":{"title":"4.4 首资源包与AssetBundle内存","titles":["优化Unity WebGL的内存","三、内存查看工具"]},"582":{"title":"4.5 音频内存","titles":["优化Unity WebGL的内存","三、内存查看工具"]},"583":{"title":"4.6 其他常见优化手段","titles":["优化Unity WebGL的内存","三、内存查看工具"]},"584":{"title":"五、QA","titles":["优化Unity WebGL的内存"]},"585":{"title":"优化Unity WebGL的运行性能","titles":[]},"586":{"title":"一、运行性能概述","titles":["优化Unity WebGL的运行性能"]},"587":{"title":"Unity WebGL VS APP的运行性能差异","titles":["优化Unity WebGL的运行性能","一、运行性能概述"]},"588":{"title":"WASM VS JS的运行差异","titles":["优化Unity WebGL的运行性能","一、运行性能概述"]},"589":{"title":"系统平台之间的性能差异","titles":["优化Unity WebGL的运行性能","一、运行性能概述"]},"590":{"title":"二、优化目标","titles":["优化Unity WebGL的运行性能"]},"591":{"title":"三、常用优化工具","titles":["优化Unity WebGL的运行性能"]},"592":{"title":"3.1 小游戏Android CPU Profiler(推荐)","titles":["优化Unity WebGL的运行性能","三、常用优化工具"]},"593":{"title":"3.2 Unity Profiler","titles":["优化Unity WebGL的运行性能","三、常用优化工具"]},"594":{"title":"3.3 小游戏云测","titles":["优化Unity WebGL的运行性能","三、常用优化工具"]},"595":{"title":"三、常见优化手段","titles":["优化Unity WebGL的运行性能"]},"596":{"title":"1. 配置加载与协议解析","titles":["优化Unity WebGL的运行性能","三、常见优化手段"]},"597":{"title":"2. LUA性能","titles":["优化Unity WebGL的运行性能","三、常见优化手段"]},"598":{"title":"3. 物理性能","titles":["优化Unity WebGL的运行性能","三、常见优化手段"]},"599":{"title":"4. 实例化","titles":["优化Unity WebGL的运行性能","三、常见优化手段"]},"600":{"title":"5. 限制帧率","titles":["优化Unity WebGL的运行性能","三、常见优化手段"]},"601":{"title":"6. 限制分辨率","titles":["优化Unity WebGL的运行性能","三、常见优化手段"]},"602":{"title":"7. 使用压缩纹理","titles":["优化Unity WebGL的运行性能","三、常见优化手段"]},"603":{"title":"8. WebGL2.0说明","titles":["优化Unity WebGL的运行性能","三、常见优化手段"]},"604":{"title":"9. 减少Drawcall","titles":["优化Unity WebGL的运行性能","三、常见优化手段"]},"605":{"title":"10. 使用SRP Batcher","titles":["优化Unity WebGL的运行性能","三、常见优化手段"]},"606":{"title":"11. 如何获取设备硬件信息","titles":["优化Unity WebGL的运行性能","三、常见优化手段"]},"607":{"title":"Unity WebGL小游戏适配方案性能标准","titles":[]},"608":{"title":"为什么需要性能评测标准?","titles":["Unity WebGL小游戏适配方案性能标准"]},"609":{"title":"评测标准细则","titles":["Unity WebGL小游戏适配方案性能标准"]},"610":{"title":"性能基线","titles":["Unity WebGL小游戏适配方案性能标准","评测标准细则"]},"611":{"title":"指标与测量方法","titles":["Unity WebGL小游戏适配方案性能标准","评测标准细则"]},"612":{"title":"代码与资源体积","titles":["Unity WebGL小游戏适配方案性能标准","评测标准细则"]},"613":{"title":"评测工具","titles":["Unity WebGL小游戏适配方案性能标准","评测标准细则"]},"614":{"title":"启动性能","titles":["Unity WebGL小游戏适配方案性能标准","评测标准细则","评测工具"]},"615":{"title":"运行性能","titles":["Unity WebGL小游戏适配方案性能标准","评测标准细则","评测工具"]},"616":{"title":"评测标准","titles":["Unity WebGL小游戏适配方案性能标准","评测标准细则"]},"617":{"title":"开发者需要关注哪些性能指标","titles":["Unity WebGL小游戏适配方案性能标准","评测标准细则","评测标准"]},"618":{"title":"游戏类型说明","titles":["Unity WebGL小游戏适配方案性能标准","评测标准细则","评测标准"]},"619":{"title":"iOS性能评测标准","titles":["Unity WebGL小游戏适配方案性能标准","评测标准细则","评测标准"]},"620":{"title":"Android性能评测标准","titles":["Unity WebGL小游戏适配方案性能标准","评测标准细则","评测标准"]},"621":{"title":"Unity WebGL小游戏适配方案性能标准","titles":[]},"622":{"title":"为什么需要性能评测标准?","titles":["Unity WebGL小游戏适配方案性能标准"]},"623":{"title":"开发者需要关注哪些性能指标","titles":["Unity WebGL小游戏适配方案性能标准"]},"624":{"title":"评测标准细则","titles":["Unity WebGL小游戏适配方案性能标准"]},"625":{"title":"性能基线","titles":["Unity WebGL小游戏适配方案性能标准","评测标准细则"]},"626":{"title":"评测工具","titles":["Unity WebGL小游戏适配方案性能标准","评测标准细则"]},"627":{"title":"代码与资源体积","titles":["Unity WebGL小游戏适配方案性能标准","评测标准细则"]},"628":{"title":"Android 评测标准","titles":["Unity WebGL小游戏适配方案性能标准","评测标准细则"]},"629":{"title":"iOS 评测标准","titles":["Unity WebGL小游戏适配方案性能标准","评测标准细则"]},"630":{"title":"性能优化总览","titles":[]},"631":{"title":"一、为何需要进行性能优化?","titles":["性能优化总览"]},"632":{"title":"二、优化目标","titles":["性能优化总览"]},"633":{"title":"三、最佳实践","titles":["性能优化总览"]},"634":{"title":"3.1 加快游戏启动速度","titles":["性能优化总览","三、最佳实践"]},"635":{"title":"3.2 资源按需加载","titles":["性能优化总览","三、最佳实践"]},"636":{"title":"3.3 资源处理建议","titles":["性能优化总览","三、最佳实践"]},"637":{"title":"3.4 降低小游戏内存使用","titles":["性能优化总览","三、最佳实践"]},"638":{"title":"3.5 降低CPU消耗","titles":["性能优化总览","三、最佳实践"]},"639":{"title":"最佳实践检测工具","titles":[]},"640":{"title":"作用","titles":["最佳实践检测工具"]},"641":{"title":"如何使用","titles":["最佳实践检测工具"]},"642":{"title":"检测示意","titles":["最佳实践检测工具"]},"643":{"title":"检测指标解释","titles":["最佳实践检测工具"]},"644":{"title":"启动检测","titles":["最佳实践检测工具","检测指标解释"]},"645":{"title":"监控指标","titles":["最佳实践检测工具","检测指标解释","启动检测"]},"646":{"title":"优化建议概览","titles":["最佳实践检测工具","检测指标解释","启动检测"]},"647":{"title":"预下载检测","titles":["最佳实践检测工具","检测指标解释"]},"648":{"title":"监控指标","titles":["最佳实践检测工具","检测指标解释","预下载检测"]},"649":{"title":"优化建议概览","titles":["最佳实践检测工具","检测指标解释","预下载检测"]},"650":{"title":"wasm分包检测","titles":["最佳实践检测工具","检测指标解释"]},"651":{"title":"监控指标","titles":["最佳实践检测工具","检测指标解释","wasm分包检测"]},"652":{"title":"优化建议概览","titles":["最佳实践检测工具","检测指标解释","wasm分包检测"]},"653":{"title":"网络信息检测","titles":["最佳实践检测工具","检测指标解释"]},"654":{"title":"监控指标","titles":["最佳实践检测工具","检测指标解释","网络信息检测"]},"655":{"title":"优化建议概览","titles":["最佳实践检测工具","检测指标解释","网络信息检测"]},"656":{"title":"帧率检测","titles":["最佳实践检测工具","检测指标解释"]},"657":{"title":"监控指标","titles":["最佳实践检测工具","检测指标解释","帧率检测"]},"658":{"title":"优化建议概览","titles":["最佳实践检测工具","检测指标解释","帧率检测"]},"659":{"title":"优化分析工具","titles":["最佳实践检测工具"]},"660":{"title":"微信开发者工具","titles":["最佳实践检测工具","优化分析工具"]},"661":{"title":"使用Unity Profiler性能调优","titles":[]},"662":{"title":"RenderOptimization","titles":[]},"663":{"title":"WebGL1.0 还是 WebGL2.0","titles":["RenderOptimization"]},"664":{"title":"选择哪种渲染管线","titles":["RenderOptimization"]},"665":{"title":"线性颜色空间 还是 Gamma 颜色空间","titles":["RenderOptimization"]},"666":{"title":"渲染性能优化的一些建议","titles":["RenderOptimization"]},"667":{"title":"光照和阴影","titles":["RenderOptimization","渲染性能优化的一些建议"]},"668":{"title":"材质和Shader","titles":["RenderOptimization","渲染性能优化的一些建议"]},"669":{"title":"纹理设置","titles":["RenderOptimization","渲染性能优化的一些建议"]},"670":{"title":"网格和蒙皮","titles":["RenderOptimization","渲染性能优化的一些建议"]},"671":{"title":"DrawCall 相关","titles":["RenderOptimization","渲染性能优化的一些建议"]},"672":{"title":"摄像机 Camera","titles":["RenderOptimization","渲染性能优化的一些建议"]},"673":{"title":"渲染分辨率","titles":["RenderOptimization","渲染性能优化的一些建议"]},"674":{"title":"后处理","titles":["RenderOptimization","渲染性能优化的一些建议"]},"675":{"title":"特效","titles":["RenderOptimization","渲染性能优化的一些建议"]},"676":{"title":"参考文档","titles":["RenderOptimization"]},"677":{"title":"启动留存数据上报统计","titles":[]},"678":{"title":"一、概述","titles":["启动留存数据上报统计"]},"679":{"title":"二、上报广告信息","titles":["启动留存数据上报统计"]},"680":{"title":"如何上报?","titles":["启动留存数据上报统计","二、上报广告信息"]},"681":{"title":"三、上报自定义阶段","titles":["启动留存数据上报统计"]},"682":{"title":"四、获取Loader启动阶段","titles":["启动留存数据上报统计"]},"683":{"title":"五、获取数据统计","titles":["启动留存数据上报统计"]},"684":{"title":"资源按需加载概述","titles":[]},"685":{"title":"AA包、AB包、Instant Game 方案选择说明","titles":["资源按需加载概述"]},"686":{"title":"各类型游戏的资源优化建议","titles":["资源按需加载概述"]},"687":{"title":"原生 APP 手游已使用 AB/AA 包等资源按需加载的游戏**","titles":["资源按需加载概述","各类型游戏的资源优化建议"]},"688":{"title":"原生 APP 手游未使用 资源按需加载 的轻度游戏","titles":["资源按需加载概述","各类型游戏的资源优化建议"]},"689":{"title":"原生 APP 手游未使用 资源按需加载 的中重度游戏**","titles":["资源按需加载概述","各类型游戏的资源优化建议"]},"690":{"title":"微信SDK安装","titles":[]},"691":{"title":"方法一:Package 方式安装","titles":["微信SDK安装"]},"692":{"title":"安装指南","titles":["微信SDK安装","方法一:Package 方式安装"]},"693":{"title":"方法二:资源包方式安装","titles":["微信SDK安装"]},"694":{"title":"安装指南","titles":["微信SDK安装","方法二:资源包方式安装"]},"695":{"title":"目录结构说明","titles":["微信SDK安装"]},"696":{"title":"常见问题","titles":["微信SDK安装"]},"697":{"title":"1.游戏工程可以导出但在微信开发者工具运行提示报错:","titles":["微信SDK安装","常见问题","安装指南"]},"698":{"title":"转换案例","titles":[]},"699":{"title":"地铁跑酷","titles":["转换案例"]},"700":{"title":"谜题大陆","titles":["转换案例"]},"701":{"title":"三国吧兄弟","titles":["转换案例"]},"702":{"title":"鱼吃鱼","titles":["转换案例"]},"703":{"title":"剑心吟","titles":["转换案例"]},"704":{"title":"巨兽战场","titles":["转换案例"]},"705":{"title":"小小蚁国","titles":["转换案例"]},"706":{"title":"翡翠大师","titles":["转换案例"]},"707":{"title":"超能世界","titles":["转换案例"]},"708":{"title":"大侠不哭","titles":["转换案例"]},"709":{"title":"我叫MT2","titles":["转换案例"]},"710":{"title":"葫芦娃大作战","titles":["转换案例"]},"711":{"title":"大圣顶住","titles":["转换案例"]},"712":{"title":"银河战舰","titles":["转换案例"]},"713":{"title":"守护球球","titles":["转换案例"]},"714":{"title":"小游戏启动流程与时序","titles":[]},"715":{"title":"启动加载时序","titles":["小游戏启动流程与时序"]},"716":{"title":"Unity Loader工作流程","titles":["小游戏启动流程与时序"]},"717":{"title":"QA:","titles":["小游戏启动流程与时序"]},"718":{"title":"提升Unity WebGL游戏启动速度","titles":[]},"719":{"title":"一、 为什么要做启动优化","titles":["提升Unity WebGL游戏启动速度"]},"720":{"title":"1.1 小游戏与手游APP的启动差异","titles":["提升Unity WebGL游戏启动速度","一、 为什么要做启动优化"]},"721":{"title":"1.2 优化的目标与标准","titles":["提升Unity WebGL游戏启动速度","一、 为什么要做启动优化"]},"722":{"title":"二、分析小游戏启动速度","titles":["提升Unity WebGL游戏启动速度"]},"723":{"title":"2.1. 查看启动耗时","titles":["提升Unity WebGL游戏启动速度","二、分析小游戏启动速度"]},"724":{"title":"2.2 分阶段耗时","titles":["提升Unity WebGL游戏启动速度","二、分析小游戏启动速度"]},"725":{"title":"2.2.1 首资源包下载与体积","titles":["提升Unity WebGL游戏启动速度","二、分析小游戏启动速度"]},"726":{"title":"2.2.2 WASM代码下载和编译","titles":["提升Unity WebGL游戏启动速度","二、分析小游戏启动速度"]},"727":{"title":"2.2.3 引擎初始化与开发者首帧逻辑","titles":["提升Unity WebGL游戏启动速度","二、分析小游戏启动速度"]},"728":{"title":"2.2.4 游戏内资源按需加载","titles":["提升Unity WebGL游戏启动速度","二、分析小游戏启动速度"]},"729":{"title":"2.3 优化总览","titles":["提升Unity WebGL游戏启动速度","二、分析小游戏启动速度"]},"730":{"title":"三、常用启动优化技巧","titles":["提升Unity WebGL游戏启动速度"]},"731":{"title":"四、常用启动优化工具","titles":["提升Unity WebGL游戏启动速度"]},"732":{"title":"4.1. AssetStudio(推荐)","titles":["提升Unity WebGL游戏启动速度","四、常用启动优化工具"]},"733":{"title":"4.2 BuildReportTool(推荐)","titles":["提升Unity WebGL游戏启动速度","四、常用启动优化工具"]},"734":{"title":"4.3 Asset Hunter","titles":["提升Unity WebGL游戏启动速度","四、常用启动优化工具"]},"735":{"title":"4.4 Unity Addressable Assets System","titles":["提升Unity WebGL游戏启动速度","四、常用启动优化工具"]},"736":{"title":"Unity WebGL小游戏适配方案概述","titles":[]},"737":{"title":"一、技术原理","titles":["Unity WebGL小游戏适配方案概述"]},"738":{"title":"二、接入流程","titles":["Unity WebGL小游戏适配方案概述"]},"739":{"title":"三、参考资料","titles":["Unity WebGL小游戏适配方案概述"]},"740":{"title":"支持平台","titles":[]},"741":{"title":"操作系统","titles":["支持平台"]},"742":{"title":"微信小游戏基础库","titles":["支持平台"]},"743":{"title":"Symbol 相关","titles":[]},"744":{"title":"Tool","titles":["Symbol 相关"]},"745":{"title":"转换工具导出微信小游戏","titles":[]},"746":{"title":"一、Unity导出WebGL","titles":["转换工具导出微信小游戏"]},"747":{"title":"二、适配小游戏","titles":["转换工具导出微信小游戏"]},"748":{"title":"2.1 转换小游戏","titles":["转换工具导出微信小游戏","二、适配小游戏"]},"749":{"title":"2.2 了解转换后目录结构","titles":["转换工具导出微信小游戏","二、适配小游戏"]},"750":{"title":"2.3 资源部署","titles":["转换工具导出微信小游戏","二、适配小游戏"]},"751":{"title":"2.4 小游戏预览","titles":["转换工具导出微信小游戏","二、适配小游戏"]},"752":{"title":"三、使用脚本集成到自己的构建系统","titles":["转换工具导出微信小游戏"]},"753":{"title":"MiniGameConfig.asset支持的配置","titles":["转换工具导出微信小游戏","三、使用脚本集成到自己的构建系统"]},"754":{"title":"与转换面板配置有对应关系的配置项","titles":["转换工具导出微信小游戏","三、使用脚本集成到自己的构建系统","MiniGameConfig.asset支持的配置"]},"755":{"title":"不常用配置","titles":["转换工具导出微信小游戏","三、使用脚本集成到自己的构建系统","MiniGameConfig.asset支持的配置"]},"756":{"title":"四、常见问题","titles":["转换工具导出微信小游戏"]},"757":{"title":"使用Unity Profiler性能调优","titles":[]},"758":{"title":"推荐引擎版本","titles":[]},"759":{"title":"版本兼容性","titles":["推荐引擎版本"]},"760":{"title":"推荐版本","titles":["推荐引擎版本"]},"761":{"title":"Unity InstantGame版本获取","titles":["推荐引擎版本"]},"762":{"title":"QA","titles":["推荐引擎版本"]},"763":{"title":"版本更新","titles":[]},"764":{"title":"代码更新","titles":["版本更新"]},"765":{"title":"更新策略:","titles":["版本更新"]},"766":{"title":"1. 静默更新(默认方式)","titles":["版本更新","更新策略:"]},"767":{"title":"2. 强制更新","titles":["版本更新","更新策略:"]},"768":{"title":"2.1 实时检测更新(UpdateManager)","titles":["版本更新","更新策略:","2. 强制更新"]},"769":{"title":"2.2 设置最低可用版本","titles":["版本更新","更新策略:","2. 强制更新"]},"770":{"title":"资源更新","titles":["版本更新"]},"771":{"title":"使用Addressable Assets System进行资源按需加载","titles":[]},"772":{"title":"一、概述","titles":["使用Addressable Assets System进行资源按需加载"]},"773":{"title":"二、Addressable在小游戏中的应用","titles":["使用Addressable Assets System进行资源按需加载"]},"774":{"title":"2.1 什么是Addressable Assets System","titles":["使用Addressable Assets System进行资源按需加载","二、Addressable在小游戏中的应用"]},"775":{"title":"2.2 相对于AssetsBundles的优势","titles":["使用Addressable Assets System进行资源按需加载","二、Addressable在小游戏中的应用"]},"776":{"title":"2.3 在小游戏中使用Addressable Assets System","titles":["使用Addressable Assets System进行资源按需加载","二、Addressable在小游戏中的应用"]},"777":{"title":"2.4 使用WXAssetBundleProvider节省内存","titles":["使用Addressable Assets System进行资源按需加载","二、Addressable在小游戏中的应用"]},"778":{"title":"三、启动优化与资源优化实战","titles":["使用Addressable Assets System进行资源按需加载"]},"779":{"title":"3.1 从首包开始","titles":["使用Addressable Assets System进行资源按需加载","三、启动优化与资源优化实战"]},"780":{"title":"3.2 资源按需加载","titles":["使用Addressable Assets System进行资源按需加载","三、启动优化与资源优化实战"]},"781":{"title":"3.2.1 场景动态加载","titles":["使用Addressable Assets System进行资源按需加载","三、启动优化与资源优化实战","3.2 资源按需加载"]},"782":{"title":"3.2.2 物件动态加载","titles":["使用Addressable Assets System进行资源按需加载","三、启动优化与资源优化实战"]},"783":{"title":"3.3 小结","titles":["使用Addressable Assets System进行资源按需加载","三、启动优化与资源优化实战"]},"784":{"title":"四、如何优雅地异步加载","titles":["使用Addressable Assets System进行资源按需加载"]},"785":{"title":"4.1 最基本的异步回调","titles":["使用Addressable Assets System进行资源按需加载","四、如何优雅地异步加载"]},"786":{"title":"4.2 使用协程","titles":["使用Addressable Assets System进行资源按需加载","四、如何优雅地异步加载"]},"787":{"title":"4.3 使用await","titles":["使用Addressable Assets System进行资源按需加载","四、如何优雅地异步加载"]},"788":{"title":"五、旧系统资源改造","titles":["使用Addressable Assets System进行资源按需加载"]},"789":{"title":"5.1 Resource改造","titles":["使用Addressable Assets System进行资源按需加载"]},"790":{"title":"5.2 AssetsBundle迁移","titles":["使用Addressable Assets System进行资源按需加载"]},"791":{"title":"六、部署","titles":["使用Addressable Assets System进行资源按需加载"]},"792":{"title":"6.1 Addressable编译与部署","titles":["使用Addressable Assets System进行资源按需加载","六、部署"]},"793":{"title":"6.2 资源预下载","titles":["使用Addressable Assets System进行资源按需加载","六、部署"]},"794":{"title":"五、参考资料","titles":["使用Addressable Assets System进行资源按需加载","六、部署"]},"795":{"title":"使用 AssetBundle 进行资源按需加载","titles":[]},"796":{"title":"一、AssetBundle使用","titles":["使用 AssetBundle 进行资源按需加载"]},"797":{"title":"1.1 AssetBundle打包参数建议","titles":["使用 AssetBundle 进行资源按需加载","一、AssetBundle使用"]},"798":{"title":"1.2 AssetBundle下载","titles":["使用 AssetBundle 进行资源按需加载","一、AssetBundle使用"]},"799":{"title":"二、小游戏与APP的AssetBundle缓存更新流程差异","titles":["使用 AssetBundle 进行资源按需加载"]},"800":{"title":"三、更节省内存的WXAssetBundle","titles":["使用 AssetBundle 进行资源按需加载"]},"801":{"title":"四、AssetBundle内存分析","titles":["使用 AssetBundle 进行资源按需加载"]},"802":{"title":"4.1 切勿使用带Cache能力的线管接口","titles":["使用 AssetBundle 进行资源按需加载","四、AssetBundle内存分析"]},"803":{"title":"4.2 尽可能使用Unload","titles":["使用 AssetBundle 进行资源按需加载","四、AssetBundle内存分析"]},"804":{"title":"四、参考资料","titles":["使用 AssetBundle 进行资源按需加载"]},"805":{"title":"使用Loader进行游游戏加载","titles":[]},"806":{"title":"一、什么是Unity Loader?","titles":["使用Loader进行游游戏加载"]},"807":{"title":"二、如何使用Unity Loader插件","titles":["使用Loader进行游游戏加载"]},"808":{"title":"三、配置Unity Loader功能","titles":["使用Loader进行游游戏加载"]},"809":{"title":"3.1 资源下载","titles":["使用Loader进行游游戏加载","三、配置Unity Loader功能"]},"810":{"title":"转换插件相关配置","titles":["使用Loader进行游游戏加载","三、配置Unity Loader功能","3.1 资源下载"]},"811":{"title":"通过接口修改","titles":["使用Loader进行游游戏加载","三、配置Unity Loader功能","3.1 资源下载"]},"812":{"title":"3.2 启动界面","titles":["使用Loader进行游游戏加载","三、配置Unity Loader功能"]},"813":{"title":"转换插件相关配置","titles":["使用Loader进行游游戏加载","三、配置Unity Loader功能","3.2 启动界面"]},"814":{"title":"game.js配置","titles":["使用Loader进行游游戏加载","三、配置Unity Loader功能","3.2 启动界面"]},"815":{"title":"3.3 首包资源加载方式","titles":["使用Loader进行游游戏加载","三、配置Unity Loader功能"]},"816":{"title":"转换插件相关配置","titles":["使用Loader进行游游戏加载","三、配置Unity Loader功能","3.3 首包资源加载方式"]},"817":{"title":"game.js配置","titles":["使用Loader进行游游戏加载","三、配置Unity Loader功能","3.3 首包资源加载方式"]},"818":{"title":"3.4 预加载资源","titles":["使用Loader进行游游戏加载","三、配置Unity Loader功能"]},"819":{"title":"3.5 资源缓存与淘汰策略","titles":["使用Loader进行游游戏加载","三、配置Unity Loader功能"]},"820":{"title":"3.6 插件调试信息","titles":["使用Loader进行游游戏加载","三、配置Unity Loader功能"]},"821":{"title":"使用ProfilingMemory内存分析","titles":[]},"822":{"title":"概述","titles":["使用ProfilingMemory内存分析"]},"823":{"title":"步骤","titles":["使用ProfilingMemory内存分析"]},"824":{"title":"数据分析","titles":["使用ProfilingMemory内存分析"]},"825":{"title":"浏览数据","titles":["使用ProfilingMemory内存分析","数据分析"]},"826":{"title":"SQL统计分析","titles":["使用ProfilingMemory内存分析","数据分析"]},"827":{"title":"常见问题","titles":["使用ProfilingMemory内存分析"]},"828":{"title":"1. 开启ProflingMemory后非常慢,特别是在有Lua逻辑的情况","titles":["使用ProfilingMemory内存分析","常见问题"]},"829":{"title":"2. ProfilingMemory在真机上更容易出现内存崩溃","titles":["使用ProfilingMemory内存分析","常见问题"]},"830":{"title":"网络通信适配","titles":[]},"831":{"title":"HTTP 通信","titles":["网络通信适配"]},"832":{"title":"使用方式","titles":["网络通信适配","HTTP 通信"]},"833":{"title":"TCP 网络通信","titles":["网络通信适配"]},"834":{"title":"TCPSocket","titles":["网络通信适配","TCP 网络通信"]},"835":{"title":"WebSocket","titles":["网络通信适配","TCP 网络通信"]},"836":{"title":"客户端","titles":["网络通信适配","TCP 网络通信","WebSocket"]},"837":{"title":"服务端","titles":["网络通信适配","TCP 网络通信","WebSocket"]},"838":{"title":"UDP 网络通信","titles":["网络通信适配"]},"839":{"title":"注意事项","titles":["网络通信适配"]},"840":{"title":"安全域名","titles":["网络通信适配","注意事项"]},"841":{"title":"SSL证书","titles":["网络通信适配","注意事项"]},"842":{"title":"使用预下载功能","titles":[]},"843":{"title":"概述","titles":["使用预下载功能"]},"844":{"title":"配置方式","titles":["使用预下载功能"]},"845":{"title":"导出预下载列表","titles":["使用预下载功能","配置方式"]},"846":{"title":"MiniGameConfig.asset相关配置","titles":["使用预下载功能","配置方式","导出预下载列表"]},"847":{"title":"手动配置","titles":["使用预下载功能","配置方式"]},"848":{"title":"运行时配置「推荐」","titles":["使用预下载功能","配置方式"]},"849":{"title":"在插件启动前修改","titles":["使用预下载功能","配置方式","运行时配置「推荐」"]},"850":{"title":"引擎初始化完成后修改","titles":["使用预下载功能","配置方式","运行时配置「推荐」"]},"851":{"title":"路径规范","titles":["使用预下载功能"]},"852":{"title":"如何验证","titles":["使用预下载功能"]},"853":{"title":"注意事项","titles":["使用预下载功能"]},"854":{"title":"微信系统字体","titles":[]},"855":{"title":"版本要求","titles":["微信系统字体"]},"856":{"title":"代码示例","titles":["微信系统字体"]},"857":{"title":"系统字体字符集","titles":["微信系统字体"]},"858":{"title":"SDK 调用微信API","titles":[]},"859":{"title":"开发建议","titles":["SDK 调用微信API"]},"860":{"title":"Demo API示例","titles":["SDK 调用微信API","开发建议"]},"861":{"title":"联调效率","titles":["SDK 调用微信API","开发建议"]},"862":{"title":"注意事项","titles":["SDK 调用微信API"]},"863":{"title":"目前已完成API列表:","titles":["SDK 调用微信API"]},"864":{"title":"代码分包","titles":[]},"865":{"title":"概述","titles":["代码分包"]},"866":{"title":"背景","titles":["代码分包","概述"]},"867":{"title":"作用","titles":["代码分包","概述"]},"868":{"title":"实现原理","titles":["代码分包"]},"869":{"title":"插件安装","titles":["代码分包"]},"870":{"title":"插件更新","titles":["代码分包"]},"871":{"title":"插件使用","titles":["代码分包"]},"872":{"title":"启用分包","titles":["代码分包","插件使用","作用"]},"873":{"title":"输入版本描述","titles":["代码分包","插件使用","作用"]},"874":{"title":"等待上传文件","titles":["代码分包","插件使用","作用"]},"875":{"title":"等待预处理","titles":["代码分包","插件使用","作用"]},"876":{"title":"选择是否增量分包","titles":["代码分包","插件使用","作用"]},"877":{"title":"等待分包","titles":["代码分包","插件使用","作用"]},"878":{"title":"android收集 + iOS收集","titles":["代码分包","插件使用","作用"]},"879":{"title":"重复收集与生成","titles":["代码分包","插件使用","作用"]},"880":{"title":"关闭分包","titles":["代码分包","插件使用"]},"881":{"title":"注意事项","titles":["代码分包","插件使用"]},"882":{"title":"FAQ","titles":["代码分包"]},"883":{"title":"分包是否是必要的","titles":["代码分包","FAQ"]},"884":{"title":"收集到什么时候可以结束","titles":["代码分包","FAQ"]},"885":{"title":"游戏内容难以遍历完整怎么办","titles":["代码分包","FAQ"]},"886":{"title":"分包总大小比原始包大","titles":["代码分包","FAQ"]},"887":{"title":"新增收集的函数要重新再次提审才会在首包吗","titles":["代码分包","FAQ"]},"888":{"title":"会不会最终跑到所有函数都收集的情况","titles":["代码分包","FAQ"]},"889":{"title":"iOS 高性能模式收集很卡","titles":["代码分包","FAQ"]},"890":{"title":"iOS 高性能模式代码分包后内存反而变得很高","titles":["代码分包","FAQ"]},"891":{"title":"iOS 高性能模式出现 impport section's count is too big","titles":["代码分包","FAQ"]},"892":{"title":"没有看到增量分包的界面","titles":["代码分包","FAQ"]},"893":{"title":"增量分包没生效","titles":["代码分包","FAQ"]},"894":{"title":"如何更新分包插件","titles":["代码分包","FAQ"]},"895":{"title":"分包插件安装失败","titles":["代码分包","FAQ"]},"896":{"title":"分包插件卡住","titles":["代码分包","FAQ"]},"897":{"title":"内存优化版本未观察到内存优化","titles":["代码分包","FAQ"]},"898":{"title":"如何查看分包插件日志","titles":["代码分包","FAQ"]},"899":{"title":"Changelog","titles":["代码分包"]},"900":{"title":"v1.1.13","titles":["代码分包","Changelog"]},"901":{"title":"Fixed","titles":["代码分包","Changelog","v1.1.13"]},"902":{"title":"v1.1.12","titles":["代码分包","Changelog"]},"903":{"title":"Fixed","titles":["代码分包","Changelog","v1.1.12"]},"904":{"title":"v1.1.11","titles":["代码分包","Changelog"]},"905":{"title":"Fixed","titles":["代码分包","Changelog","v1.1.11"]},"906":{"title":"v1.1.10","titles":["代码分包","Changelog"]},"907":{"title":"Fixed","titles":["代码分包","Changelog","v1.1.10"]},"908":{"title":"v1.1.9","titles":["代码分包","Changelog"]},"909":{"title":"Feature","titles":["代码分包","Changelog","v1.1.9"]},"910":{"title":"v1.1.8","titles":["代码分包","Changelog"]},"911":{"title":"Changed","titles":["代码分包","Changelog","v1.1.8"]},"912":{"title":"v1.1.6","titles":["代码分包","Changelog"]},"913":{"title":"Changed","titles":["代码分包","Changelog","v1.1.6"]},"914":{"title":"v1.1.5","titles":["代码分包","Changelog"]},"915":{"title":"Fixed","titles":["代码分包","Changelog","v1.1.5"]},"916":{"title":"v1.1.4","titles":["代码分包","Changelog"]},"917":{"title":"Fixed","titles":["代码分包","Changelog","v1.1.4"]},"918":{"title":"v1.1.2","titles":["代码分包","Changelog"]},"919":{"title":"Changed","titles":["代码分包","Changelog","v1.1.2"]},"920":{"title":"v1.1.0","titles":["代码分包","Changelog"]},"921":{"title":"Added","titles":["代码分包","Changelog","v1.1.0"]},"922":{"title":"v1.0.2","titles":["代码分包","Changelog"]},"923":{"title":"Added","titles":["代码分包","Changelog","v1.0.2"]},"924":{"title":"WebGL2.0渲染支持说明","titles":[]},"925":{"title":"适合使用场景","titles":["WebGL2.0渲染支持说明"]},"926":{"title":"用户占比","titles":["WebGL2.0渲染支持说明"]},"927":{"title":"已知兼容问题","titles":["WebGL2.0渲染支持说明"]},"928":{"title":"iOS高性能模式开启GPU Instance,模型闪烁/消失/不绘制等问题","titles":["WebGL2.0渲染支持说明","已知兼容问题"]},"929":{"title":"iOS高性能模式DrawMeshInstanced显示错乱","titles":["WebGL2.0渲染支持说明","已知兼容问题"]},"930":{"title":"参考文档","titles":["WebGL2.0渲染支持说明"]},"931":{"title":"屏幕适配","titles":[]},"932":{"title":"安全区域适配","titles":["屏幕适配"]},"933":{"title":"高分辨屏下模糊问题","titles":["屏幕适配"]},"934":{"title":"iOS 高性能与高性能+模式","titles":[]},"935":{"title":"什么是高性能模式","titles":["iOS 高性能与高性能+模式"]},"936":{"title":"什么是高性能+模式","titles":["iOS 高性能与高性能+模式"]},"937":{"title":"性能提升","titles":["iOS 高性能与高性能+模式"]},"938":{"title":"CPU 消耗","titles":["iOS 高性能与高性能+模式","性能提升"]},"939":{"title":"压力测试","titles":["iOS 高性能与高性能+模式","性能提升"]},"940":{"title":"如何开通","titles":["iOS 高性能与高性能+模式"]},"941":{"title":"高性能模式限制","titles":["iOS 高性能与高性能+模式"]},"942":{"title":"内存限制","titles":["iOS 高性能与高性能+模式","高性能模式限制"]},"943":{"title":"代码体积限制","titles":["iOS 高性能与高性能+模式","高性能模式限制"]},"944":{"title":"QA","titles":["iOS 高性能与高性能+模式"]},"945":{"title":"1. 如何判别游戏否已经开启了高性能模式?","titles":["iOS 高性能与高性能+模式","QA"]},"946":{"title":"2. 使用高性能模式下,游戏本身是否需要做修改?","titles":["iOS 高性能与高性能+模式","QA"]},"947":{"title":"3. iOS 报错提示未开启 gzip/br 压缩","titles":["iOS 高性能与高性能+模式","QA"]},"948":{"title":"4. 资源下载提示isTrusted","titles":["iOS 高性能与高性能+模式","QA"]},"949":{"title":"5. 卡在启动封面无法启动","titles":["iOS 高性能与高性能+模式","QA"]},"950":{"title":"6. 个别游戏 UI 会出现闪烁问题","titles":["iOS 高性能与高性能+模式","QA"]},"951":{"title":"7. 为什么开启了高性能模式,游戏启动很烫?","titles":["iOS 高性能与高性能+模式","QA"]},"952":{"title":"8. 使用高性能模式下,不优化内存、WASM 代码包体积就发布上线可以吗?","titles":["iOS 高性能与高性能+模式","QA"]},"953":{"title":"9. iOS 高性能模式与安卓性能对比如何?","titles":["iOS 高性能与高性能+模式","QA"]},"954":{"title":"微信小游戏包JavaScript扩展","titles":[]},"955":{"title":"视频设计","titles":[]},"956":{"title":"建议启动视频内带有团队宣传logo动画,游戏logo动画,带有吸引力的游戏玩法视频","titles":["视频设计"]},"957":{"title":"wasm水印插件","titles":[]},"958":{"title":"说明:","titles":["wasm水印插件"]},"959":{"title":"使用方式:","titles":["wasm水印插件"]},"960":{"title":"添加插件","titles":["wasm水印插件","使用方式:"]},"961":{"title":"使用插件","titles":["wasm水印插件","使用方式:"]},"962":{"title":"注意","titles":["wasm水印插件"]},"963":{"title":"Unity WebGL 微信小游戏适配方案(公测)","titles":[]},"964":{"title":"方案特点","titles":["Unity WebGL 微信小游戏适配方案(公测)"]},"965":{"title":"转换案例","titles":["Unity WebGL 微信小游戏适配方案(公测)"]},"966":{"title":"安装与使用","titles":["Unity WebGL 微信小游戏适配方案(公测)"]},"967":{"title":"文档总览","titles":["Unity WebGL 微信小游戏适配方案(公测)"]}},"dirtCount":0,"index":[["热血神剑",{"2":{"965":1}}],["旅行串串",{"2":{"965":1}}],["欢迎使用",{"2":{"963":1}}],["公测",{"0":{"963":1},"1":{"964":1,"965":1,"966":1,"967":1}}],["公众平台",{"2":{"683":1}}],["音轨",{"2":{"956":1}}],["音轨sample",{"2":{"956":1}}],["音轨格式",{"2":{"956":1}}],["音频支持",{"2":{"762":1}}],["音频支持获取播放状态",{"2":{"293":1}}],["音频优化",{"2":{"748":1}}],["音频资源",{"2":{"685":1}}],["音频资源尽可能勾选强制单声道",{"2":{"637":1}}],["音频将占用小游戏环境的内存",{"2":{"582":1}}],["音频内存",{"0":{"582":1}}],["音频",{"2":{"565":1,"577":3,"760":1}}],["音频数据流畅",{"2":{"524":1}}],["音频被切到后台会停止",{"2":{"500":1}}],["音频fmod导出适配",{"2":{"73":1}}],["码率",{"2":{"956":1}}],["期间重复播放",{"2":{"956":1}}],["秒",{"2":{"956":1}}],["竖屏视频",{"2":{"956":1}}],["×",{"2":{"956":2}}],["素材分辨率",{"2":{"956":1}}],["素材类型",{"2":{"680":1}}],["素材类型的数据",{"2":{"679":1}}],["横屏视频",{"2":{"956":1}}],["难以横向对比",{"2":{"953":1}}],["苹果官方17",{"2":{"949":1}}],["头",{"2":{"947":1}}],["日志中的",{"2":{"945":1}}],["日志",{"2":{"945":1}}],["日志获取方式",{"2":{"898":1}}],["虽无法达到",{"2":{"939":1}}],["虽然适配方案有较为广泛的兼容性",{"2":{"762":1}}],["虽然不再是标准的浏览器",{"2":{"565":1}}],["端小游戏高性能模式适用于遇到",{"2":{"940":1}}],["端普通模式与高性能模式的得分",{"2":{"939":1}}],["端口可达",{"2":{"757":1}}],["端口可通修改webgl",{"2":{"757":1}}],["端口",{"2":{"757":1}}],["明显低于普通模式",{"2":{"938":1}}],["算力得到明显提升",{"2":{"935":1}}],["算力不及原生app",{"2":{"631":1}}],["计算资源消耗过高",{"2":{"935":1}}],["计算公式",{"2":{"577":1}}],["报错提示未开启",{"0":{"947":1},"2":{"934":1}}],["报错原因",{"2":{"430":1}}],["压力测试",{"0":{"939":1},"2":{"934":1}}],["压缩",{"0":{"947":1},"2":{"934":1}}],["压缩后为",{"2":{"866":1}}],["压缩后",{"2":{"866":1}}],["压缩后只有几十k",{"2":{"558":1}}],["压缩音频",{"2":{"760":1}}],["压缩音频等支持",{"2":{"446":1}}],["压缩至原code包的20",{"2":{"726":1}}],["压缩首资源包",{"2":{"725":1}}],["压缩比更大",{"2":{"669":1}}],["压缩纹理优化能最大程度地减少内存与解压开销",{"2":{"579":1}}],["压缩纹理优化",{"2":{"485":1,"637":1,"967":1}}],["压缩纹理资源",{"0":{"485":1}}],["压缩纹理",{"2":{"349":1,"367":1,"446":1,"584":1,"760":1}}],["压缩纹理兼容flare",{"2":{"319":1}}],["压缩纹理替换速度优化",{"2":{"306":1}}],["压缩纹理替换优化",{"2":{"272":1}}],["压缩纹理工具独立命名",{"2":{"173":1}}],["压缩纹理工具逻辑异常",{"2":{"170":1}}],["压缩纹理工具支持特殊字符资源",{"2":{"158":1}}],["压缩纹理工具替换过程的卡死问题",{"2":{"149":1}}],["压缩纹理支持剔除功能",{"2":{"153":1}}],["压缩纹理对于不支持的引擎版本增加提示",{"2":{"151":1}}],["压缩纹理回退使用png时也支持缓存逻辑",{"2":{"128":1}}],["联系详细排查",{"2":{"927":1}}],["联调效率",{"0":{"861":1}}],["拉取分包时网络异常弹框提示",{"2":{"911":1}}],["拉取游戏后台接口获取最新的预下载列表后",{"2":{"850":1}}],["拉取游戏后台获取最新的预下载列表",{"2":{"849":1}}],["遇到流程卡住问题",{"2":{"896":1}}],["遇到事件不生效的问题",{"2":{"562":1}}],["拓展",{"2":{"895":1}}],["拓展列表查看插件版本确认是否为最新版本",{"2":{"894":1}}],["拓展设置",{"2":{"869":1,"895":1}}],["第二次导出的版本开始才可以使用",{"2":{"892":1}}],["第三方原生插件",{"2":{"565":1,"570":1}}],["第三方插件",{"2":{"447":1,"570":1,"578":1}}],["刚开始收集时又基本是跑子包函数",{"2":{"889":1}}],["了再来考虑这个问题",{"2":{"888":1}}],["了解小游戏分包",{"2":{"815":1}}],["了解小游戏的更新机制",{"2":{"764":1}}],["了解转换后目录结构",{"0":{"749":1}}],["了解",{"2":{"565":1}}],["到",{"2":{"888":1}}],["到底用线性还是gamma",{"2":{"665":1}}],["到底怎么选",{"2":{"664":1}}],["覆盖尽可能多的场景",{"2":{"878":1}}],["把之前收集过的函数当做放到首包",{"2":{"876":1}}],["编辑器区域",{"2":{"894":1,"895":1}}],["编辑器自定义拓展",{"2":{"869":1}}],["编译优化将耗费大量性能",{"2":{"951":1}}],["编译优化",{"2":{"938":1}}],["编译",{"2":{"775":1,"830":1}}],["编译速度都更快利于版本迭代",{"2":{"762":1}}],["编译体积更小利于启动速度和运行内存",{"2":{"762":1}}],["编译体积",{"2":{"760":1}}],["编译与实例化",{"2":{"716":1}}],["编译选项中仅勾选首场景",{"2":{"634":1}}],["编译选项增加",{"2":{"280":1}}],["编译选项增加cleanbuild",{"2":{"115":1}}],["编译所占用内存占用非常大",{"2":{"578":1}}],["编译为跨平台的webassembly二进制代码",{"2":{"578":1}}],["编译内存",{"2":{"577":2}}],["编译阶段文案",{"2":{"375":1,"377":1,"814":1}}],["编译中",{"2":{"375":1,"814":1}}],["编译版本仅当导出勾选profiling",{"2":{"329":1}}],["编译代码将含有函数名",{"2":{"280":1}}],["子包是有延迟加载的",{"2":{"886":1}}],["子包不会加载",{"2":{"866":1}}],["子包",{"2":{"866":1}}],["拆分为两个",{"2":{"866":1}}],["拆分得尽量细",{"2":{"772":1}}],["放首包的内存占用相对小些",{"2":{"890":1}}],["放在",{"2":{"866":1}}],["放到wx",{"2":{"777":1}}],["收集界面增加连接状态",{"2":{"921":1}}],["收集时可使用安卓和ios同时进行",{"2":{"921":1}}],["收集操作",{"2":{"878":1}}],["收集的场景覆盖率越高",{"2":{"868":1}}],["收集到什么时候可以结束",{"0":{"884":1},"2":{"864":1}}],["收益应该会比较明显",{"2":{"671":1}}],["启用分包",{"0":{"872":1},"2":{"864":1}}],["启动时发烫现象严重等问题",{"2":{"952":1}}],["启动时长",{"2":{"623":1}}],["启动流程与时序",{"2":{"967":1}}],["启动流程与时序我们知道",{"2":{"843":1}}],["启动流程与时时序",{"2":{"482":1}}],["启动进度显示",{"2":{"806":1}}],["启动优化与资源优化实战",{"0":{"778":1},"1":{"779":1,"780":1,"781":1,"782":1,"783":1}}],["启动界面",{"0":{"812":1},"1":{"813":1,"814":1},"2":{"755":1}}],["启动loader设置",{"2":{"754":1}}],["启动loader提供的默认加载界面为了契合不同游戏",{"2":{"377":1}}],["启动背景",{"2":{"748":1}}],["启动需要一定耗时",{"2":{"748":1}}],["启动准备阶段有两个处理分支",{"2":{"716":1}}],["启动加载时序",{"0":{"715":1}}],["启动仅能加载少量资源",{"2":{"684":1}}],["启动下载的wasm包大小",{"2":{"645":1}}],["启动检测",{"0":{"644":1},"1":{"645":1,"646":1},"2":{"639":1}}],["启动较慢",{"2":{"631":1}}],["启动阶段背景图片",{"2":{"748":1}}],["启动阶段",{"2":{"623":1,"866":1}}],["启动阶段点三次封面视频下方unity",{"2":{"397":1,"463":1}}],["启动",{"2":{"617":1}}],["启动性能",{"0":{"614":1},"2":{"619":1,"620":1,"626":1,"967":1}}],["启动与运行性能由于网络和设备条件稳定性问题不一定准确",{"2":{"594":1}}],["启动后",{"2":{"525":1}}],["启动场景上报分析",{"2":{"521":1}}],["启动剧情通常以视频内容呈现为主",{"2":{"524":1}}],["启动剧情外显进度条默认为用户开启",{"2":{"522":1}}],["启动剧情能力工作期间",{"2":{"522":1}}],["启动剧情的运行环境主要以",{"2":{"525":1}}],["启动剧情的",{"2":{"521":1}}],["启动剧情是一个持续较长时间的业务内容",{"2":{"521":1}}],["启动剧情插件允许配置相关变量进而干预剧情发展",{"2":{"520":1}}],["启动剧情剧本自助设计工具及文档",{"2":{"518":1}}],["启动剧情",{"0":{"513":1},"1":{"514":1,"515":1,"516":1,"517":1,"518":1,"519":1,"520":1,"521":1,"522":1,"523":1,"524":1,"525":1,"526":1,"527":1,"528":1,"529":1,"530":1,"531":1,"532":1,"533":1,"534":1,"535":1,"536":1,"537":1,"538":1,"539":1,"540":1,"541":1,"542":1,"543":1,"544":1,"545":1,"546":1,"547":1,"548":1},"2":{"513":1}}],["启动剧情新增hash",{"2":{"12":1}}],["启动留存数据上报统计",{"0":{"480":1,"677":1},"1":{"678":1,"679":1,"680":1,"681":1,"682":1,"683":1},"2":{"480":1,"967":1}}],["启动游戏出现",{"0":{"412":1}}],["启动视频",{"2":{"374":1,"376":1,"813":1}}],["启动视频样式错误",{"2":{"155":1}}],["启动封面图",{"2":{"374":1,"376":1,"813":1}}],["启动封面",{"0":{"372":1},"1":{"373":1,"374":1,"375":1,"376":1,"377":1},"2":{"487":1}}],["启动封面拉伸",{"2":{"144":1}}],["启动期间校验首资源包大小",{"2":{"62":1}}],["启动卡住时补充上报dependency",{"2":{"53":1}}],["登录mp微信公众平台",{"2":{"966":1}}],["登录",{"2":{"863":1}}],["登录态参考登录态管理",{"2":{"337":1}}],["振动",{"2":{"863":1}}],["里面有详细注释说明",{"2":{"858":1}}],["里面要实现",{"2":{"550":1}}],["几乎一个数量级的差异",{"2":{"939":1}}],["几乎不需要任何代价",{"2":{"774":1}}],["几乎不需要修改代码",{"2":{"774":1}}],["几何图形",{"2":{"857":1}}],["箭头",{"2":{"857":1}}],["货币符号",{"2":{"857":1}}],["装饰符号",{"2":{"857":1}}],["杂项符号",{"2":{"857":1}}],["英文标点",{"2":{"857":1}}],["英文大小写",{"2":{"857":1}}],["伪代码如下",{"2":{"849":1,"850":1}}],["访问https请求时",{"2":{"841":1}}],["合法域名",{"2":{"840":1}}],["合理位置标记为非新用户",{"2":{"519":1}}],["合理设置纹理maxsize可以减小纹理资源大小",{"2":{"334":1}}],["经实际游戏测试",{"2":{"939":1}}],["经过",{"2":{"866":1}}],["经过微信小游戏团队测试",{"2":{"355":1}}],["经常有开发者问道",{"2":{"839":1}}],["向指定的",{"2":{"838":1}}],["向开放数据域传递消息",{"0":{"556":1}}],["粘包",{"2":{"837":1}}],["挪到最后",{"2":{"836":1}}],["感谢",{"2":{"836":1}}],["客户端信息",{"2":{"863":1}}],["客户端",{"0":{"836":1}}],["客户端根据硬件",{"2":{"485":1}}],["消耗",{"0":{"938":1},"2":{"934":1}}],["消失",{"0":{"928":1}}],["消息",{"2":{"834":1,"838":1}}],["消除",{"2":{"445":1}}],["连接",{"2":{"836":1}}],["连接失败",{"2":{"834":1}}],["连接成功时发送数据",{"2":{"834":1}}],["连接成功",{"2":{"834":1}}],["出于应用场景考虑",{"2":{"834":1,"838":1}}],["出现首个业务场景",{"2":{"611":1,"625":1}}],["出现以下两种日志",{"2":{"464":1}}],["出现vconsole",{"2":{"397":1,"463":1}}],["采用代码分包后",{"2":{"938":1}}],["采用单线程机制",{"2":{"832":1}}],["采集profile",{"2":{"467":1}}],["环境运行性能不足",{"2":{"940":1}}],["环境下",{"2":{"935":1}}],["环境下禁止使用以下代码",{"2":{"832":1}}],["环境中的函数调用",{"2":{"525":1}}],["键值对",{"2":{"832":1}}],["套接字来实现网络连接",{"2":{"830":1}}],["浏览数据",{"0":{"825":1}}],["浏览器中渲染图形的",{"2":{"925":1}}],["浏览器http对象",{"2":{"803":1}}],["浏览器或小游戏",{"2":{"565":1}}],["浏览器菜单打开",{"2":{"329":1}}],["拖拽并以csv方式导入sqlite数据库",{"2":{"823":1}}],["者在微信开发者工具中选择gamecontext",{"2":{"823":1}}],["省略其他配置",{"2":{"817":1,"847":1}}],["声明cdn地址",{"2":{"809":1}}],["声明控制后30",{"2":{"523":1}}],["khz",{"2":{"956":1}}],["kbit",{"2":{"956":2}}],["kongregate",{"2":{"804":1}}],["key",{"0":{"547":1,"548":1},"2":{"519":1,"832":1}}],["略大于ab本身体积",{"2":{"803":1}}],["拷贝到wasm临时内存",{"2":{"803":1}}],["读磁盘必定影响性能",{"2":{"800":1}}],["读取systeminfo",{"2":{"697":1}}],["读取启动剧情全局变量值",{"2":{"537":1,"548":1}}],["读取",{"2":{"519":1}}],["读取路径是否正确等",{"2":{"505":1}}],["于是我们仍旧在js内存中维护了完整bundle的缓存",{"2":{"800":1}}],["于是微信小游戏提供了wasm代码分包能力",{"2":{"486":1}}],["频繁读写磁盘损耗性能",{"2":{"800":1}}],["写入文件系统",{"2":{"799":1}}],["写缓存时未删除同名旧缓存",{"2":{"158":1}}],["阐述如何在小游戏环境对assetbundle进行打包",{"2":{"795":1}}],["六",{"0":{"791":1},"1":{"792":1,"793":1,"794":1}}],["物件动态加载",{"0":{"782":1}}],["物理计算较重的游戏使用fixed",{"2":{"638":1}}],["物理性能",{"0":{"598":1}}],["物理",{"2":{"447":1}}],["答案是assetreference",{"2":{"782":1}}],["答案是肯定的",{"2":{"781":1,"839":1}}],["答题",{"2":{"445":1}}],["战斗等",{"2":{"781":1}}],["场景动态加载",{"0":{"781":1}}],["场景中必须与非及时资源在启动时一并加载",{"2":{"689":1}}],["组织bundle",{"2":{"775":1}}],["组件",{"2":{"668":1}}],["然而",{"2":{"782":1,"789":1}}],["然而使用ab需要做不少的工作",{"2":{"775":1}}],["然后重启开发者工具",{"2":{"896":1}}],["然后收集",{"2":{"871":1}}],["然后继续下一步",{"2":{"871":2}}],["然后下一步",{"2":{"871":1}}],["然后对应方法名首字母由小写改为大写",{"2":{"858":1}}],["然后使用类似这种方式加载",{"2":{"789":1}}],["然后调用wxeditorwindow",{"2":{"499":1,"752":1}}],["然后通过",{"2":{"384":1}}],["然后在project",{"2":{"380":1}}],["然后再导入universal",{"2":{"379":1}}],["然后点击apply",{"2":{"380":1}}],["然后点击面板右下角的",{"2":{"379":1}}],["然后点击加载前面导出的cpuprofile文件即可",{"2":{"329":1}}],["你的主逻辑",{"2":{"858":1,"933":1}}],["你的内容彻底可用时",{"2":{"774":1}}],["你都能快速的切换来addressable系统中",{"2":{"774":1}}],["你可以使用微信开发者工具查看",{"2":{"329":1}}],["附可参考的项目",{"2":{"772":1}}],["附录",{"2":{"661":1,"757":1}}],["剩余的游戏资源如何加载",{"2":{"772":1}}],["戏运行期间检查是否有新版本",{"2":{"768":1}}],["依赖的开发者工具版本为",{"2":{"868":1}}],["依赖的基础代码包",{"2":{"379":1}}],["依赖关系以及后期维护的复杂工作",{"2":{"775":1}}],["依赖管理",{"2":{"774":1}}],["依然可能体验到旧版本内容",{"2":{"766":1}}],["老项目请尽量选择2019以上版本",{"2":{"760":1}}],["备注",{"2":{"760":1}}],["具有非常宽泛的兼容性",{"2":{"759":1}}],["具体操作和注意事项如下",{"2":{"871":1}}],["具体做法",{"2":{"828":1}}],["具体参见assetbundle缓存",{"2":{"748":2}}],["具体请参考使用",{"2":{"687":1}}],["具体请移步版本更新",{"2":{"392":1}}],["具体如何抉择",{"2":{"520":1}}],["具体支持情况参考支持平台",{"2":{"500":1}}],["具体可参考使用loader进行游游戏加载",{"2":{"498":1}}],["具体可参阅首场景启动优化手册",{"2":{"482":1}}],["具体可阅读后续资源缓存规则文档",{"2":{"392":1}}],["具体实施可阅读具体指引文档",{"2":{"474":1}}],["具体方式请参考unity官方文档interaction",{"2":{"424":1}}],["具体值可通过minigame",{"2":{"237":1}}],["扫码二维码预览即可",{"2":{"751":1}}],["扫描结束的回调函数",{"2":{"371":1}}],["扫描的资源将包含ab包内的单个纹理资源信息",{"2":{"352":1}}],["稳定版",{"2":{"751":1,"868":1,"959":1}}],["勿用测试appid",{"2":{"748":1}}],["信息有说明要如何操作",{"2":{"744":1}}],["映射到函数名",{"2":{"744":1}}],["操作同理",{"2":{"961":1}}],["操作系统",{"0":{"741":1}}],["操作步骤",{"2":{"507":1}}],["zh",{"2":{"739":1}}],["zoommode",{"2":{"375":1,"377":1}}],["强烈建议",{"2":{"760":1}}],["强烈建议开发者可以使用代码分包工具将代码包减少到原始尺寸的到1",{"2":{"726":1}}],["强制更新",{"0":{"767":1},"1":{"768":1,"769":1}}],["强制结束",{"2":{"532":1,"534":1}}],["强制结束启动剧情",{"2":{"532":1}}],["强制storebinary",{"2":{"358":1}}],["务必在服务器对txt后缀开启",{"2":{"779":1}}],["务必对首资源包进行压缩传输",{"2":{"725":1}}],["务必对首资源包压缩",{"2":{"725":1}}],["务必避免这样使用",{"2":{"573":1}}],["另外这两个",{"2":{"883":1}}],["另外对于",{"2":{"867":1}}],["另外对于ios高性能模式",{"2":{"866":1}}],["另一个可以延迟加载",{"2":{"866":1}}],["另",{"2":{"725":1}}],["守护球球",{"0":{"713":1}}],["银河战舰",{"0":{"712":1}}],["葫芦娃大作战",{"0":{"710":1}}],["外域探险玩法都将为您呈现独一无二的掌中魔幻世界",{"2":{"709":1}}],["外显进度条的进度设置等",{"2":{"525":1}}],["外显进度条配置",{"2":{"523":1,"528":1}}],["外显进度条接入",{"0":{"522":1},"1":{"523":1}}],["钓鱼挖矿",{"2":{"709":1}}],["延迟加载",{"2":{"783":1}}],["延迟渲染",{"2":{"381":1,"382":1}}],["延续了传统",{"2":{"709":1}}],["我已收集好",{"2":{"878":1}}],["我叫mt",{"2":{"709":1}}],["我叫mt2",{"0":{"709":1},"2":{"965":1}}],["我们得到以下结论",{"2":{"938":1}}],["我们得到实际游戏项目的",{"2":{"938":1}}],["我们发现相对于webgl1",{"2":{"925":1}}],["我们针对这种情况也有线上patch可以进行补漏",{"2":{"885":1}}],["我们也会在启动",{"2":{"883":1}}],["我们也可以根据业务自己的使用特点来进行sql分析",{"2":{"826":1}}],["我们会对比前后两个包的symbol",{"2":{"876":1}}],["我们会根据验证情况以及大量转换游戏反馈的情况给出引擎版本建议",{"2":{"759":1}}],["我们提供了一个微信开发者工具里的插件来辅助分包过程",{"2":{"868":1}}],["我们提供了以下支持",{"2":{"737":1}}],["我们可以在此阶段提前下载资源",{"2":{"843":1}}],["我们可以在",{"2":{"826":1}}],["我们可以通过size进行排序分析内存最大占用的堆栈情况",{"2":{"825":1}}],["我们可以分析unityheap",{"2":{"822":1}}],["我们可以看到",{"2":{"520":1}}],["我们在微信小游戏环境将文件系统接口桥接到了微信的文件系统接口",{"2":{"800":1}}],["我们只需要将对应的streammingassets上传到对应的cdn服务器即可",{"2":{"792":1}}],["我们只需要关注callmain调用的playerloadfirstscene函数",{"2":{"469":1}}],["我们需要将这些资源设置为",{"2":{"789":1}}],["我们需要先确定监控的小游戏进程名称",{"2":{"567":1}}],["我们还会经常动态实例化",{"2":{"782":1}}],["我们应将这些冗余的内容单独进行设置为addressable",{"2":{"781":1}}],["我们应让启动剧情插件正常启动",{"2":{"520":1}}],["我们构建时仅选择了splash",{"2":{"781":1}}],["我们总结下启动时序以及开发者",{"2":{"729":1}}],["我们必要理解启动流程",{"2":{"723":1}}],["我们建议得优化原则是",{"2":{"772":1}}],["我们建议开发者",{"2":{"783":1}}],["我们建议开发者使用预下载功能",{"2":{"727":1}}],["我们建议开发者将启动优化作为上线前最为重要的事项",{"2":{"721":1}}],["我们建议原始代码包",{"2":{"726":1}}],["我们建议内存峰值控制在以下范围",{"2":{"564":1}}],["我们希望sdk与工程代码节藕",{"2":{"695":1}}],["我们拆分了三个部分",{"2":{"681":1}}],["我们给出unity",{"2":{"632":1}}],["我们此处给出转换游戏中最容易遇到的内存问题与解决方案",{"2":{"577":1}}],["我们关注的内存",{"2":{"573":1}}],["我们从大到小各个角度去监控和分析游戏的内存情况",{"2":{"566":1}}],["我们通常也是从该入口进行能力迭代",{"2":{"525":1}}],["曾梦想惩恶扬善",{"2":{"708":1}}],["喜欢武侠世界",{"2":{"708":1}}],["熠熠生辉",{"2":{"706":1}}],["抛光的流程获得精美的翡翠雕刻成品",{"2":{"706":1}}],["翡翠大师",{"0":{"706":1}}],["建立你的地下王国",{"2":{"705":1}}],["建议启动视频内带有团队宣传logo动画",{"0":{"956":1}}],["建议新增收集函数个数超过100个的还是要生成新分包+发版本",{"2":{"885":1}}],["建议先重启下开发者工具",{"2":{"875":1}}],["建议先以js方式直接修改minigame的js代码进行调试",{"2":{"861":1}}],["建议在微信开发者工具",{"2":{"822":1}}],["建议自行在修改接口时候加编译宏方便控制导出版本",{"2":{"800":1}}],["建议直接升级到2021支持压缩纹理",{"2":{"762":1}}],["建议首屏启动时间控制在5~10s甚至更短",{"2":{"723":1}}],["建议继续沿用常规资源加载方案",{"2":{"685":1}}],["建议开发者勾选",{"2":{"726":1}}],["建议开发者具体测试一下",{"2":{"671":1}}],["建议开发者根据指引优化",{"2":{"942":1}}],["建议开发者根据",{"2":{"342":1}}],["建议用",{"2":{"669":1}}],["建议材质引用的纹理数尽量控制在",{"2":{"669":1}}],["建议检查一下最终生成的",{"2":{"668":1}}],["建议从256尝试是否合适",{"2":{"667":1}}],["建议进行cdn预热",{"2":{"655":1}}],["建议以性能评估标准实测为准",{"2":{"594":1}}],["建议中轻度游戏不超过该值",{"2":{"580":1}}],["建议值",{"2":{"580":1}}],["建议主动提前结束启动剧情",{"2":{"524":1}}],["建议仅勾选loading场景",{"2":{"497":1,"746":1}}],["建议使用webgl2",{"2":{"936":1}}],["建议使用微信开发者工具或android真机进行内存堆栈导出",{"2":{"829":1}}],["建议使用",{"2":{"664":1,"688":1,"836":1}}],["建议使用压缩纹理优化",{"2":{"602":1}}],["建议使用2022或团结版的memoryprofiler",{"2":{"584":1}}],["建议使用lts版本",{"2":{"446":1}}],["建议使用异步接口以不影响主线程帧率",{"2":{"441":1}}],["建议勾选并设置为high",{"2":{"431":1}}],["建议单文件2~5mb以内",{"2":{"391":1}}],["建议基于当前",{"2":{"384":1}}],["建议优先使用brotli",{"2":{"357":1}}],["建议",{"2":{"341":1,"510":1,"562":1,"590":1,"655":1,"725":1}}],["小于",{"2":{"956":1}}],["小时的函数个数都在",{"2":{"888":1}}],["小时之内下发新版本信息到用户",{"2":{"766":1}}],["小结",{"0":{"783":1}}],["小程序最低可用版本",{"2":{"769":1}}],["小小蚁国",{"0":{"705":1},"2":{"705":1}}],["小游戏版本更新",{"2":{"967":1}}],["小游戏资源缓存",{"2":{"967":1}}],["小游戏资源部署",{"2":{"967":1}}],["小游戏资源下载并发数为10",{"2":{"391":1}}],["小游戏适配",{"2":{"963":1}}],["小游戏适配插件已自动进行缓存",{"2":{"687":1}}],["小游戏高性能+模式可以支持ios系统版本",{"2":{"926":1}}],["小游戏ios高性能模式需要ios系统版本",{"2":{"926":1}}],["小游戏需要先下载完",{"2":{"866":1}}],["小游戏需要做到",{"2":{"684":1}}],["小游戏因其平台特殊性",{"2":{"799":1}}],["小游戏与app的assetbundle缓存更新流程差异",{"0":{"799":1}}],["小游戏与手游app的启动差异",{"0":{"720":1}}],["小游戏环境框架提供了高性能运行模式",{"2":{"935":1}}],["小游戏环境不支持assetbundle本地加载",{"2":{"796":1}}],["小游戏环境适当降低画质",{"2":{"636":1}}],["小游戏底层会自动进行压缩减少网络传输",{"2":{"779":1}}],["小游戏",{"2":{"777":1}}],["小游戏appid",{"2":{"754":1}}],["小游戏android平台在8",{"2":{"926":1}}],["小游戏android",{"0":{"592":1}}],["小游戏预览",{"0":{"751":1}}],["小游戏玩家对于启动时长更为敏感",{"2":{"720":1}}],["小游戏玩家对于游戏的启动时长是较为敏感的",{"2":{"482":1}}],["小游戏启动后将通过",{"2":{"757":1}}],["小游戏启动主要由三部分影响",{"2":{"723":1}}],["小游戏启动流程与时序",{"0":{"714":1},"1":{"715":1,"716":1,"717":1}}],["小游戏启动出现",{"0":{"422":1}}],["小游戏数据助手",{"2":{"683":1}}],["小游戏平台的压缩纹理支持",{"2":{"760":1}}],["小游戏平台不支持",{"2":{"655":1}}],["小游戏平台下不需要太大的纹理",{"2":{"334":1}}],["小游戏天生为",{"2":{"631":1}}],["小游戏云测是使用大量真实的移动设备测试游戏的功能",{"2":{"594":1}}],["小游戏云测",{"0":{"594":1}}],["小游戏基础库",{"2":{"577":2}}],["小游戏公共库约占用内存100~150mb",{"2":{"565":1}}],["小游戏进程也就成为了",{"2":{"565":1}}],["小游戏提供了一系列接口获取好友关系链数据",{"2":{"550":1}}],["小游戏实时日志",{"0":{"511":1},"2":{"509":1,"511":1}}],["小游戏研发助手",{"0":{"508":1}}],["小游戏被切到后台会停止播放音频需代码中监听",{"2":{"500":1}}],["小游戏默认不检查因此能请求通过",{"2":{"500":1}}],["小游戏的屏幕适配与unity游戏适配常见手机屏幕没有区别",{"2":{"932":1}}],["小游戏的appid",{"2":{"498":1,"748":1}}],["小游戏的中文字体不显示",{"0":{"425":1}}],["小游戏接入指南",{"2":{"488":1}}],["小游戏存在开发者工具",{"2":{"477":1}}],["小游戏项目名",{"2":{"748":1,"754":1}}],["小游戏项目",{"2":{"470":1}}],["小游戏项目模板变更",{"2":{"302":1}}],["小游戏项目模板更新",{"2":{"291":1,"299":1}}],["小游戏profile",{"0":{"467":1}}],["小游戏主要存在三种类型的资源",{"2":{"449":1}}],["小游戏支持视频播放能力",{"2":{"438":1}}],["小游戏是否支持unity",{"0":{"438":1}}],["小游戏中多大的首包资源合适",{"2":{"772":1}}],["小游戏中能插入超链接跳转网页吗",{"0":{"437":1}}],["小游戏中主要的纹理资源格式",{"2":{"359":1}}],["小游戏包先不要删掉",{"2":{"881":1}}],["小游戏包中的webgl",{"0":{"418":1}}],["小游戏包内",{"2":{"388":1,"748":1}}],["小游戏出现异常或错误时",{"2":{"397":1}}],["小游戏分包",{"2":{"388":1,"779":1}}],["小游戏分包加载",{"2":{"53":1}}],["小游戏配置",{"2":{"377":1}}],["小游戏表现",{"2":{"377":1}}],["小游戏模板wechat",{"2":{"375":1}}],["小游戏模板错误",{"2":{"175":1}}],["巨兽战场",{"0":{"704":1}}],["剑心吟",{"0":{"703":1}}],["鱼吃鱼",{"0":{"702":1}}],["神奇的消除战争之旅",{"2":{"700":1}}],["谜题大陆",{"0":{"700":1},"2":{"965":1}}],["让高度占满刘海屏以下的区域",{"2":{"932":1}}],["让自己的翡翠珍宝展馆发展壮大",{"2":{"706":1}}],["让你爱不释手",{"2":{"699":1}}],["让其生效",{"2":{"380":1}}],["众多的城市场景",{"2":{"699":1}}],["丰富的游戏画面",{"2":{"699":1}}],["地铁跑酷",{"0":{"699":1}}],["团结",{"2":{"692":1,"966":1}}],["往往会非常大",{"2":{"687":1}}],["往往由于场景过大或由于业务原因造成瞬间内存峰值",{"2":{"580":1}}],["卸载",{"2":{"687":1}}],["各类型游戏的资源优化建议",{"0":{"686":1},"1":{"687":1,"688":1,"689":1}}],["各有优缺点",{"2":{"663":1}}],["希望减少游戏的转化周期",{"2":{"685":1}}],["骨骼动画",{"2":{"685":1}}],["懒加载资源类型",{"2":{"685":1}}],["技术沙龙",{"2":{"967":1}}],["技术原理",{"0":{"737":1},"2":{"685":1,"967":1}}],["技术常见问题qa",{"0":{"405":1},"1":{"406":1,"407":1,"408":1,"409":1,"410":1,"411":1,"412":1,"413":1,"414":1,"415":1,"416":1,"417":1,"418":1,"419":1,"420":1,"421":1,"422":1,"423":1,"424":1,"425":1,"426":1,"427":1,"428":1,"429":1,"430":1,"431":1,"432":1,"433":1,"434":1,"435":1,"436":1,"437":1,"438":1,"439":1,"440":1,"441":1,"442":1},"2":{"471":1,"967":1}}],["效率变低等现象",{"2":{"928":1}}],["效率更高",{"2":{"340":1}}],["效果提升明显",{"2":{"685":1}}],["较少",{"2":{"685":2}}],["较大",{"2":{"685":1}}],["较为普遍的是assetbundle加载与prefab实例化",{"2":{"599":1}}],["倒是功能强大的",{"2":{"685":1}}],["及以上",{"2":{"868":1,"959":2}}],["及时卸载不再使用的资源包释放内存",{"2":{"687":1}}],["及时释放以节省内存",{"2":{"581":1}}],["及",{"2":{"681":1}}],["~",{"2":{"673":1}}],["绘制主场景和ui",{"2":{"672":1}}],["绘制到",{"2":{"550":1}}],["摄像机",{"0":{"672":1}}],["数学运算符号",{"2":{"857":1}}],["数字形式",{"2":{"857":1}}],["数字",{"2":{"857":1}}],["数",{"2":{"671":1}}],["数据上报",{"2":{"806":1}}],["数据目录",{"2":{"695":1}}],["数据统计报表需要建联小游戏研发助手获取",{"2":{"683":1}}],["数据分析",{"0":{"824":1},"1":{"825":1,"826":1},"2":{"683":1}}],["数据分析接口",{"2":{"48":1}}],["数据报表数据未来会开放到",{"2":{"683":1}}],["数据报表统计分析请参考文档启动场景上报分析",{"2":{"683":1}}],["数据报表包含unity",{"2":{"683":1}}],["数据报告",{"2":{"507":1}}],["数据",{"2":{"611":1}}],["数据路径",{"2":{"611":1}}],["数据的通信一定是单向的",{"2":{"550":1}}],["数据入口",{"2":{"510":1,"511":1,"512":1}}],["成为瓶颈",{"2":{"670":1}}],["成功与否都开始启动unity",{"2":{"849":2}}],["成功",{"2":{"419":1}}],["成功加载立即上传gpu后将从系统内存释放",{"2":{"355":1}}],["很有可能会遇到超出内存限制而崩溃",{"2":{"952":1}}],["很好的前端用于查看unity编译信息",{"2":{"733":1}}],["很容易导致",{"2":{"670":1}}],["很可能导致排行榜关闭之后文理错乱",{"2":{"555":1}}],["顶点",{"2":{"670":1}}],["顶部菜单栏",{"2":{"748":1}}],["顶部",{"2":{"523":1,"528":1}}],["意味着",{"2":{"670":1}}],["差不多",{"2":{"670":1}}],["网页webgl",{"2":{"757":1}}],["网格和蒙皮",{"0":{"670":1}}],["网络通信",{"0":{"833":1,"838":1},"1":{"834":1,"835":1,"836":1,"837":1}}],["网络通信适配",{"0":{"475":1,"830":1},"1":{"831":1,"832":1,"833":1,"834":1,"835":1,"836":1,"837":1,"838":1,"839":1,"840":1,"841":1},"2":{"475":1,"967":1}}],["网络",{"2":{"832":1}}],["网络类",{"2":{"830":1}}],["网络传输大小应控制在3~5mb",{"2":{"725":1}}],["网络条件绝大部分为wifi或4g",{"2":{"725":1}}],["网络时间占监控时长占比不足70",{"2":{"655":1}}],["网络未充分利用",{"2":{"655":1}}],["网络并发数过少",{"2":{"655":1}}],["网络协议",{"2":{"654":1}}],["网络信息检测",{"0":{"653":1},"1":{"654":1,"655":1},"2":{"639":1}}],["网络等",{"2":{"623":1}}],["网络请求造成的浏览器端js临时内存",{"2":{"565":1}}],["网络请求必须配置安全域名",{"2":{"500":1}}],["网络较差",{"2":{"534":1}}],["网络较弱正在缓冲",{"2":{"534":1}}],["网络流畅度对用户体验是存在直接关系",{"2":{"524":1}}],["网络空闲时预下载的资源",{"2":{"748":1}}],["网络空闲",{"2":{"483":1}}],["网络系统",{"2":{"447":1}}],["网络安全域名",{"2":{"391":1}}],["网络url",{"2":{"375":1}}],["图形",{"2":{"930":1}}],["图形库的功能",{"2":{"925":1}}],["图集",{"2":{"669":1}}],["图表",{"2":{"329":1}}],["张以内",{"2":{"669":1}}],["着色器变体和关键字说明",{"2":{"668":1}}],["法线等一般半精度就够了",{"2":{"668":1}}],["法线重建",{"2":{"382":1}}],["语句等待下载完成",{"2":{"832":1}}],["语句很复杂的就不建议使用",{"2":{"668":1}}],["语句",{"2":{"668":2}}],["蒙版的设置",{"2":{"668":1}}],["遮罩",{"2":{"668":1}}],["遮蔽",{"2":{"381":1}}],["像",{"2":{"668":1,"670":1}}],["好处是",{"2":{"668":1}}],["好友关系链",{"2":{"748":1}}],["好友数据加载中",{"2":{"562":1}}],["好友排行榜",{"0":{"560":1}}],["复制一份并尽可能简化",{"2":{"668":1}}],["复制示例中",{"2":{"338":1}}],["烘焙",{"2":{"667":1}}],["投射阴影",{"2":{"667":1}}],["逐渐调大",{"2":{"667":1}}],["阴影贴图的大小越小越好",{"2":{"667":1}}],["阴影生效的距离",{"2":{"667":1}}],["远处物体不用阴影也难观察出来",{"2":{"667":1}}],["离摄像机的",{"2":{"667":1}}],["确认游戏的光照",{"2":{"667":1}}],["至多额外加一个",{"2":{"672":1}}],["至少",{"2":{"665":1}}],["至此",{"2":{"498":1}}],["至此问题解决",{"2":{"430":1}}],["必要的代码修改",{"2":{"685":1}}],["必然是",{"2":{"665":1}}],["必须",{"2":{"498":2,"748":1}}],["颜色空间呢",{"2":{"665":1}}],["颜色空间",{"0":{"665":1},"2":{"665":2}}],["颜色偏移后处理",{"2":{"381":1}}],["线性颜色空间渲染",{"2":{"925":1}}],["线性颜色空间比较方便",{"2":{"665":1}}],["线性颜色空间",{"0":{"665":1},"2":{"665":1}}],["线上版本不会检测",{"2":{"641":1}}],["冗余功能较多",{"2":{"664":1}}],["冗余功能很少",{"2":{"664":1}}],["灵活",{"2":{"664":1}}],["面向全平台",{"2":{"664":1}}],["面板右测会显示",{"2":{"379":1}}],["面板中配置",{"2":{"367":1}}],["面板中",{"2":{"367":1}}],["面板配置后将被存盘记录无需每次执行前进行配置",{"2":{"365":1}}],["固定",{"2":{"664":1}}],["固定为unity小游戏封面启动进度",{"2":{"522":1}}],["拿来即用",{"2":{"664":2}}],["现有的游戏原来是什么管线就什么管线",{"2":{"664":1}}],["现网玩家占比可参看基础库版本分布",{"2":{"742":1}}],["现网真实玩家上报的性能数据",{"2":{"616":1}}],["现网错误日志上报与排查",{"0":{"509":1},"1":{"510":1,"511":1,"512":1},"2":{"967":1}}],["总释放次数",{"2":{"825":1}}],["总分配次数",{"2":{"825":1}}],["总是使用异步接口从远程下载并使用",{"2":{"799":1}}],["总上限为20mb",{"2":{"748":1}}],["总耗时",{"2":{"682":1}}],["总面数比较高",{"2":{"670":1}}],["总卡顿时长xxxms",{"2":{"658":1}}],["总卡帧时长",{"2":{"657":1}}],["总体而言",{"2":{"441":1}}],["帧耗时数据是否正常",{"2":{"936":1}}],["帧数",{"2":{"657":1}}],["帧率低于此值的帧会被记录",{"2":{"641":1}}],["帧率检测",{"0":{"656":1},"1":{"657":1,"658":1},"2":{"639":1}}],["帧率",{"2":{"611":1,"625":1,"628":1,"629":1}}],["辅助定位是cpu耗时还是网络耗时导致启动慢",{"2":{"656":1}}],["充分利用网络",{"2":{"655":1}}],["平均并发数小于5",{"2":{"655":1}}],["平均并发数",{"2":{"654":1}}],["平台可通过水印准确检测出游戏的原作者",{"2":{"958":1}}],["平台暂不保证所有能力完善",{"2":{"927":1}}],["平台提升启动性能的优化事项",{"2":{"729":1}}],["平台目前所反馈到的结论是使用",{"2":{"685":1}}],["平台针对启动和运行输出了大量优化手段",{"2":{"640":1}}],["平台能力适配",{"2":{"479":1,"967":1}}],["平台适配",{"0":{"433":1},"1":{"434":1,"435":1,"436":1,"437":1,"438":1,"439":1,"440":1,"441":1,"442":1}}],["平台是没有开启这一项优化",{"2":{"380":1}}],["平台也会启用这个宏",{"2":{"380":1}}],["平台会启用",{"2":{"380":1}}],["平台特有的",{"2":{"380":1}}],["平台相关的宏",{"2":{"380":1}}],["平台",{"2":{"379":1,"380":3,"384":1,"687":1}}],["平台的游戏开发",{"2":{"378":1}}],["继续下一步",{"2":{"878":1}}],["继续迭代",{"2":{"652":1}}],["继续上面的例子",{"2":{"461":1}}],["缺点",{"2":{"664":3,"766":1,"768":1}}],["缺点是用户删除本地小游戏则记录丢失",{"2":{"441":1}}],["缺失函数过多",{"2":{"652":1}}],["阻塞时间过长",{"2":{"650":1}}],["阻塞游戏线程",{"2":{"441":1}}],["减小预下载资源量",{"2":{"649":1}}],["减小预下载个数",{"2":{"649":1}}],["减少shader中instance",{"2":{"928":1}}],["减少编译时间",{"2":{"867":1}}],["减少玩家进行核心玩法的等待时间",{"2":{"728":1}}],["减少骨骼数量",{"2":{"670":1}}],["减少模型面数",{"2":{"670":1}}],["减少不必要的材质变体",{"2":{"668":1}}],["减少不必要的unity模块引入",{"2":{"578":1}}],["减少代码包体",{"2":{"634":1}}],["减少初始化与首帧逻辑",{"2":{"634":1}}],["减少drawcall",{"0":{"604":1}}],["减少首资源包大小",{"2":{"581":1}}],["减少内存使用",{"2":{"601":1,"867":1}}],["减少内存",{"2":{"485":1}}],["减少内存占用",{"2":{"485":1}}],["条件",{"2":{"646":4,"649":5,"652":3,"655":9,"658":3}}],["弹框提醒优化建议",{"2":{"642":1}}],["弹框时用户可尝试重启小游戏",{"2":{"49":1}}],["监控时长",{"2":{"654":1}}],["监控指标",{"0":{"645":1,"648":1,"651":1,"654":1,"657":1},"2":{"639":5}}],["监听收到消息的事件",{"2":{"838":1}}],["监听当接收到数据的时触发该事件",{"2":{"834":1}}],["监听",{"2":{"561":1}}],["检测指标解释",{"0":{"643":1},"1":{"644":1,"645":1,"646":1,"647":1,"648":1,"649":1,"650":1,"651":1,"652":1,"653":1,"654":1,"655":1,"656":1,"657":1,"658":1},"2":{"639":1}}],["检测示意",{"0":{"642":1},"2":{"639":1}}],["检查更新",{"2":{"799":1}}],["检查",{"2":{"668":1}}],["检查是否有大长帧",{"2":{"656":1}}],["检查是否32位微信导致无法进入游戏",{"2":{"201":1}}],["检查缓存配置",{"2":{"655":2}}],["检查可缓存资源配置",{"2":{"653":1}}],["检查wasm分包代码的加载时机",{"2":{"650":1}}],["检查预下载列表使用情况",{"2":{"647":1}}],["检查框架启动阶段的耗时和资源大小",{"2":{"644":1}}],["检查存储空间是否足够",{"2":{"461":1}}],["作用",{"0":{"640":1,"867":1},"1":{"872":1,"873":1,"874":1,"875":1,"876":1,"877":1,"878":1,"879":1},"2":{"639":1,"864":1}}],["作为主要的纹理资源格式",{"2":{"359":1}}],["释放不使用的资源",{"2":{"637":1}}],["贴图尽量不使用可写属性",{"2":{"636":1}}],["贴图尽量不生成mipmap",{"2":{"636":1}}],["贴图maxsize尽量不超过1024",{"2":{"636":1}}],["贴花",{"2":{"381":1,"382":1}}],["剔除不必要的插件",{"2":{"634":1}}],["精简首场景",{"2":{"783":1}}],["精简首场景物件",{"2":{"634":1}}],["精确获取每帧性能瓶颈",{"2":{"592":1}}],["机型的内存限制为",{"2":{"942":1}}],["机型下的评测",{"2":{"632":1}}],["机型档位",{"2":{"625":1}}],["机型分档等多种维度建立",{"2":{"608":1}}],["流畅度难以达到上线标准",{"2":{"935":1}}],["流畅度",{"2":{"623":1}}],["玩法较复杂",{"2":{"618":1}}],["玩家平均下载速度约2mb",{"2":{"725":1}}],["玩家将体验到富有风险的翡翠原石选石过程",{"2":{"706":1}}],["玩家可以交互",{"2":{"681":1}}],["玩家可通过游戏右上方",{"2":{"510":1}}],["玩家对启动时长与体验非常敏感",{"2":{"678":1}}],["玩家提交反馈",{"2":{"510":1}}],["玩家存档请使用服务器或云开发",{"2":{"447":1}}],["白屏",{"2":{"617":1}}],["白色为预留部分",{"2":{"570":1}}],["黑屏等严重问题",{"2":{"623":1}}],["黑",{"2":{"617":1}}],["逻辑异常",{"2":{"617":1}}],["逻辑代码可以继续",{"2":{"402":1}}],["人工批量测试数据",{"2":{"616":1}}],["人类可读",{"2":{"494":1}}],["历史现网标准请查阅文档",{"2":{"616":1}}],["评测工具",{"0":{"613":1,"626":1},"1":{"614":1,"615":1}}],["评测标准依赖于",{"2":{"616":1}}],["评测标准更新时间",{"2":{"616":1}}],["评测标准",{"0":{"616":1,"628":1,"629":1},"1":{"617":1,"618":1,"619":1,"620":1}}],["评测标准细则",{"0":{"609":1,"624":1},"1":{"610":1,"611":1,"612":1,"613":1,"614":1,"615":1,"616":1,"617":1,"618":1,"619":1,"620":1,"625":1,"626":1,"627":1,"628":1,"629":1}}],["评测标准根据小游戏整体的性能数据表现",{"2":{"608":1}}],["卡在启动封面无法启动",{"0":{"949":1},"2":{"934":1}}],["卡顿时长占比xx",{"2":{"658":1}}],["卡顿率",{"2":{"611":1,"617":1,"657":1}}],["卡帧问题",{"2":{"658":1}}],["卡牌等",{"2":{"618":1}}],["卡牌成长",{"2":{"580":1}}],["卡牌",{"2":{"445":1}}],["位于导出目录",{"2":{"611":2,"625":2}}],["测试过程为不断增加运算复杂度",{"2":{"939":1}}],["测试对应进程的内存占用",{"2":{"584":1}}],["测量5分钟以上游戏核心玩法卡顿率",{"2":{"611":1}}],["测量5分钟以上游戏核心玩法帧率",{"2":{"611":1,"625":1}}],["测量方法请参考优化unity",{"2":{"611":1,"625":1}}],["测量方法",{"2":{"611":1,"625":1}}],["指标与测量方法",{"0":{"611":1},"2":{"625":1}}],["指引",{"2":{"336":1}}],["红米k30",{"2":{"610":1,"625":1}}],["红中在手",{"2":{"377":1}}],["⾼通骁⻰765g",{"2":{"610":1,"625":1}}],["⾼通骁⻰865",{"2":{"610":1,"625":1}}],["⼩⽶10",{"2":{"610":1,"625":1}}],["档位",{"2":{"610":1}}],["限制每次draw",{"2":{"928":1}}],["限制分辨率以一定的画质牺牲来降低对设备消耗",{"2":{"601":1}}],["限制分辨率",{"0":{"601":1}}],["限制帧率有利于降低设备发热量与提升游戏时长",{"2":{"600":1}}],["限制帧率",{"0":{"600":1}}],["限帧时禁用后台执行loop",{"2":{"222":1}}],["字段为",{"2":{"945":1}}],["字母式符号",{"2":{"857":1}}],["字样日志",{"2":{"852":1}}],["字体文件",{"2":{"856":1}}],["字体文件压缩前最大不超过4mb",{"2":{"636":1}}],["字体往往压缩率很低",{"2":{"779":1}}],["字体必须打包到项目中",{"2":{"500":1}}],["字符串类型解析器将耗费大量cpu算力与产生gc",{"2":{"596":1}}],["轻度",{"2":{"618":1}}],["轻度休闲游戏应保证低档机型30fps以上",{"2":{"590":1}}],["轻度io",{"2":{"445":1}}],["动画数据",{"2":{"826":1}}],["动画等",{"2":{"593":1}}],["动画",{"2":{"587":1}}],["动作",{"2":{"445":1}}],["之间",{"2":{"888":1}}],["之间的性能差异",{"2":{"586":1}}],["之后画面先黑一下再展示排行榜",{"2":{"562":1}}],["峰值不要超过500m",{"2":{"584":1}}],["双声道会产生2倍内存消耗",{"2":{"582":1}}],["约5",{"2":{"580":1}}],["观察dynamicmemory的峰值",{"2":{"580":1}}],["升级引擎至2021使用astc压缩纹理",{"2":{"579":1}}],["手动更新",{"2":{"870":1}}],["手动配置",{"0":{"847":1}}],["手动删除多余插件",{"2":{"578":1}}],["手游app则往往需要较长时间的下载",{"2":{"720":1}}],["手游未使用",{"0":{"688":1,"689":1}}],["手游已使用",{"0":{"687":1}}],["手机上用的是带txt后缀的",{"2":{"357":1}}],["托管的对象和本机对象",{"2":{"580":1}}],["托管",{"2":{"577":1}}],["托管堆的内存预留内存",{"2":{"570":1}}],["托管堆",{"2":{"565":1,"570":2}}],["占用并维持正常水平",{"2":{"938":1}}],["占用因此长期运行容易越来越烫",{"2":{"938":1}}],["占用如下图所示",{"2":{"938":1}}],["占用比较高时",{"2":{"572":1}}],["占大头",{"2":{"670":1}}],["占位区域对应的高度",{"2":{"554":1}}],["占位区域对应的宽度",{"2":{"554":1}}],["占位区域对应屏幕左上角纵坐标",{"2":{"554":1}}],["占位区域对应屏幕左上角横坐标",{"2":{"554":1}}],["任何分配都会产生记录",{"2":{"571":1}}],["任何时候当",{"2":{"348":1}}],["绿色为空闲内存或碎片",{"2":{"570":1}}],["底层资源的缓存与更新已由适配层自动完成",{"2":{"799":1}}],["底层分配器会尽量复用",{"2":{"570":1}}],["底层分配器",{"2":{"570":1}}],["底层分配器视角",{"2":{"570":1}}],["底部",{"2":{"523":1,"528":1}}],["底部增加启动剧情配置",{"2":{"519":1}}],["空闲内存值",{"2":{"570":1}}],["空间提升的游戏",{"2":{"465":1}}],["空间提升开通空间提升的游戏",{"2":{"460":1}}],["捕捉",{"2":{"568":1}}],["垃圾回收",{"2":{"565":1}}],["播放音频时将占用的内存",{"2":{"565":1}}],["播放视频",{"2":{"375":1,"377":1,"814":1}}],["举例",{"2":{"565":1}}],["画布与设备物理分辨率相关",{"2":{"565":1}}],["典型的流程如下图所示",{"2":{"715":1}}],["典型由以下几部分组成",{"2":{"570":1}}],["典型游戏的内存占用如下图所示",{"2":{"565":1}}],["典型地",{"2":{"422":1,"565":1,"625":1,"825":1}}],["容易出现这种情形",{"2":{"675":1}}],["容易失败的问题",{"2":{"232":1}}],["容器",{"2":{"565":1}}],["堆栈",{"2":{"825":1}}],["堆栈信息",{"2":{"418":1}}],["堆",{"2":{"565":1}}],["低端机",{"2":{"942":1}}],["低端机上运行高性能模式",{"2":{"867":1}}],["低使用门槛",{"2":{"774":1}}],["低档",{"2":{"610":1,"625":1}}],["低档机",{"2":{"564":2,"628":2,"629":2}}],["低版本使用微信压缩纹理",{"2":{"584":1}}],["低版本兼容",{"0":{"491":1}}],["低版本或者其他组件暂不支持",{"0":{"490":1}}],["低版本c",{"2":{"264":1}}],["事件之后有个同步的渲染行为",{"2":{"562":1}}],["事件之后没有任何渲染行为",{"2":{"562":1}}],["给开放数据域发消息要求展示群排行",{"2":{"561":1}}],["给开放数据域侧抛一个事件",{"2":{"554":1}}],["谁是第一",{"2":{"561":1}}],["群好友排行榜",{"0":{"561":1}}],["整体流程示意",{"2":{"560":1,"561":1}}],["要尽量保持关注",{"2":{"881":1}}],["要尽可能将playerloadfirstscene的耗时控制在整个callmain耗时的20",{"2":{"468":1}}],["要知道各个阶段的含义",{"2":{"723":1}}],["要求展示好友排行榜",{"2":{"560":1}}],["做好资源加载过程中的ui上的进度条反馈",{"2":{"689":1}}],["做了限帧的游戏应该适当调低",{"2":{"641":1}}],["做一些换算",{"2":{"560":1}}],["做得相对通用",{"2":{"377":1}}],["宽度传",{"2":{"560":2}}],["宽度适配",{"2":{"377":1}}],["展示群排行",{"2":{"560":1,"561":1}}],["展示",{"2":{"560":1}}],["滚动列表等处理",{"2":{"558":1}}],["暂时只能通过",{"2":{"558":1}}],["告知开放域去执行数据拉取和渲染操作",{"2":{"554":1}}],["核心玩法资源",{"2":{"612":1,"627":1}}],["核心玩法的平均卡顿率",{"2":{"611":1}}],["核心玩法的平均帧率",{"2":{"611":1,"625":1}}],["核心资源",{"2":{"611":1,"625":1}}],["核心目的是告诉开放数据域",{"2":{"562":1}}],["核心是三个作用",{"2":{"554":1}}],["核心在于",{"2":{"550":1}}],["yunser",{"2":{"857":1}}],["yield",{"2":{"781":1,"782":1,"786":2,"789":1,"798":2,"800":1,"832":3,"850":1}}],["y",{"2":{"554":4,"560":6,"562":2,"932":1}}],["yes",{"2":{"401":1}}],["停止步骤",{"2":{"550":1}}],["停止性能数据录制",{"2":{"329":1}}],["鉴于第4点",{"2":{"550":1}}],["创建udpsocket",{"2":{"838":1}}],["创建实例",{"2":{"836":1}}],["创建tcpsocket",{"2":{"834":1}}],["创建而来的",{"2":{"550":1}}],["创建精灵添加到游戏场景",{"2":{"550":1}}],["创建并部署",{"2":{"338":2}}],["主流品牌",{"2":{"879":1}}],["主包",{"2":{"866":1}}],["主关卡优先",{"2":{"688":1}}],["主域要更新",{"2":{"550":1}}],["主域无法感知到开放数据域发生了什么",{"2":{"550":1}}],["主域",{"2":{"550":1}}],["主要是减少了编译相关的内存",{"2":{"897":1}}],["主要是用来参考如何定制",{"2":{"382":1}}],["主要关注wasm首包",{"2":{"886":1}}],["主要来源是ios高性能",{"2":{"881":1}}],["主要由启动和运行两个阶段产生性能问题",{"2":{"623":1}}],["主要分成",{"2":{"468":1}}],["主要分成两部分调用",{"2":{"468":1}}],["主要用于错误调试与异常排查",{"2":{"418":1}}],["主要修改有以下这些",{"2":{"382":1}}],["主要需要修改",{"2":{"379":1}}],["主要有以下组成",{"2":{"725":1}}],["主要有",{"2":{"379":1}}],["主要的执行过程如下图所示",{"2":{"343":1}}],["绝大部分接口都只能在开放数据域内调用",{"2":{"550":1}}],["背景",{"0":{"866":1},"2":{"864":1}}],["背景和原理介绍",{"0":{"550":1}}],["背景图",{"2":{"754":1}}],["背景图片",{"2":{"375":1}}],["背景图或背景视频",{"2":{"375":1,"377":1,"814":1}}],["|",{"0":{"537":1},"2":{"797":3}}],["||",{"2":{"380":2}}],["退出按钮",{"2":{"534":1}}],["退后台暂停播放音频",{"2":{"244":1}}],["产生本次回调的远程资源url",{"2":{"534":1}}],["产生时已终止",{"2":{"402":1}}],["获取url列表",{"2":{"850":1}}],["获取数据统计",{"0":{"683":1}}],["获取loader启动阶段",{"0":{"682":1}}],["获取微信定制版的",{"2":{"382":1}}],["获得交互句柄",{"0":{"541":1}}],["获得当前剧情插件运行状态",{"2":{"527":1,"543":1}}],["何时结束剧情",{"2":{"525":1}}],["准备充分",{"2":{"525":1}}],["准备条件编译宏",{"0":{"380":1}}],["他的时机将更晚",{"2":{"525":1}}],["他会与游戏资源缓存共用",{"2":{"441":1}}],["区别的是一些屏幕信息的获取",{"2":{"932":1}}],["区别于",{"2":{"525":1}}],["区间浮点数",{"2":{"542":1}}],["区域",{"2":{"441":1}}],["区域6",{"2":{"333":1}}],["区域5",{"2":{"333":1}}],["区域4",{"2":{"333":1}}],["区域3",{"2":{"333":1}}],["区域2",{"2":{"333":1}}],["区域1",{"2":{"333":1}}],["侧就可能出现黑一下的情况",{"2":{"562":1}}],["侧隐藏了",{"2":{"555":1}}],["侧有个占位的纹理",{"2":{"550":1}}],["侧",{"0":{"540":1},"1":{"541":1,"542":1,"543":1,"544":1,"545":1,"546":1,"547":1,"548":1}}],["侧需要等待",{"2":{"525":1}}],["侧需要用到的访问接口",{"2":{"525":1}}],["侧指的是游戏在",{"2":{"525":1}}],["侧指的是导出目录中",{"2":{"525":1}}],["侧完成标记",{"2":{"519":1}}],["长耗时帧信息",{"2":{"657":1}}],["长耗时帧的个数",{"2":{"657":1}}],["长耗时的帧",{"2":{"657":1}}],["长时间等待视频数据缓冲",{"2":{"524":1}}],["长音频请使用unityaudio",{"2":{"447":1}}],["弱网级别",{"2":{"524":1,"534":1}}],["弱网处理",{"0":{"524":1},"2":{"519":1}}],["浮点数",{"2":{"523":1}}],["样式调整外显进度条",{"2":{"523":1}}],["样式调整",{"0":{"523":1}}],["样式配置未提供对应的转换插件配置入口",{"2":{"375":1}}],["仍需要开发者结合游戏实际情况进行优化",{"2":{"640":1}}],["仍然会自动在",{"2":{"695":1}}],["仍然提供了加载进度外显能力",{"2":{"522":1}}],["仍然需要",{"2":{"430":1}}],["仍未得到期望的结果",{"2":{"520":1}}],["防沉迷提醒等",{"2":{"520":1}}],["防沉迷等信息披露",{"2":{"516":1}}],["异步接口修改可能需要涉及到业务逻辑改造",{"2":{"687":1}}],["异步干预剧情需要使用到",{"2":{"520":1}}],["异步的获取时间明显是不可控的",{"2":{"520":1}}],["异步由于存在不确定的结果返回时间",{"2":{"520":1}}],["异常等问题并进行排查原因",{"2":{"509":1}}],["异常产生时如何排查",{"0":{"494":1},"1":{"495":1,"496":1}}],["异常信息",{"2":{"402":4}}],["异常捕捉",{"2":{"402":4}}],["显存",{"2":{"822":1}}],["显示timelog开发者可以看到小游戏目前的启动首屏时长",{"2":{"723":1}}],["显示性能面板",{"2":{"570":1,"580":1}}],["显示跳过",{"2":{"534":1}}],["显示",{"2":{"523":1}}],["显示进度则启动剧情插件将在首资源包与wasm初始化完成后以平滑动画完成100",{"2":{"522":1}}],["显示黑屏",{"0":{"428":1}}],["显然不是可靠的判断新用户的方案",{"2":{"520":1}}],["发送消息",{"2":{"838":1}}],["发送",{"2":{"836":2}}],["发送事件给开放数据域",{"2":{"560":1}}],["发起资源下载任务",{"2":{"655":1}}],["发布新版本时",{"2":{"655":1}}],["发布前使用压缩纹理工具进行优化",{"2":{"637":1}}],["发布上线与现网监控",{"0":{"488":1},"2":{"470":1}}],["发布上线版本请务必关闭该选项",{"2":{"329":1}}],["发现该部分内存明显大于我们预留的unityheap",{"2":{"573":1}}],["发生异常时强制结束",{"2":{"519":1}}],["发生异常",{"2":{"519":1}}],["剧情播放结束",{"2":{"519":1}}],["剧本与启动剧情插件版本不兼容",{"2":{"532":1}}],["剧本文件读取失败",{"2":{"532":1}}],["剧本文件路径",{"2":{"528":1}}],["剧本",{"2":{"521":1}}],["剧本产物",{"2":{"518":1}}],["剧本设计请阅读",{"2":{"518":1}}],["早于wasm初始化",{"2":{"517":1}}],["故事背景的介绍",{"2":{"516":1}}],["故无法正确删除旧版本资源",{"2":{"461":1}}],["赛季cg动画短片",{"2":{"516":1}}],["前期建议继续使用当前版本",{"2":{"762":1}}],["前面我们提到开发者需要将资源从首包分离以较少首屏加载时间",{"2":{"728":1}}],["前置新人",{"2":{"516":1}}],["前往微信开发者工具下载安装stable版开发者工具",{"2":{"966":1}}],["前往",{"2":{"430":1}}],["插图等形式展现",{"2":{"515":1}}],["插件会自动执行逻辑",{"2":{"961":1}}],["插件检测并展示项目中的wasm文件",{"2":{"961":1}}],["插件依赖微信开发者工具1",{"2":{"959":1}}],["插件新旧版本分包兼容",{"2":{"919":1}}],["插件面板当前后台服务版本为3",{"2":{"897":1}}],["插件使用",{"0":{"871":1},"1":{"872":1,"873":1,"874":1,"875":1,"876":1,"877":1,"878":1,"879":1,"880":1,"881":1},"2":{"864":1}}],["插件更新",{"0":{"870":1},"2":{"864":1}}],["插件安装",{"0":{"869":1},"2":{"864":1}}],["插件调试信息",{"0":{"820":1}}],["插件已做兼容",{"2":{"814":1}}],["插件底层会判断是否已有缓存",{"2":{"799":1}}],["插件并不知道什么时候检测截止",{"2":{"641":1}}],["插件导出的",{"2":{"559":1}}],["插件环境异常",{"2":{"532":1}}],["插件为游戏提供了一些基础上报数据",{"2":{"480":1}}],["插件下载",{"2":{"473":1}}],["插件认为已经本地已经有同名文件streamingassets",{"2":{"461":1}}],["插件与非平台相关的c原生插件",{"2":{"447":1}}],["插件申请成功",{"0":{"415":1}}],["插件错误报实时日志",{"2":{"237":1}}],["插件特性动态开关",{"2":{"151":1}}],["比",{"2":{"669":1}}],["比wasm",{"2":{"515":1}}],["比如几百个",{"2":{"890":1}}],["比如新手教学",{"2":{"868":1}}],["比如splash界面以及对应文案",{"2":{"779":1}}],["比如应用市场自动更新",{"2":{"766":1}}],["比如以下这段堆栈",{"2":{"744":1}}],["比如超过",{"2":{"670":1}}],["比如大范围的代码重构",{"2":{"876":1}}],["比如大型游戏在使用addressable时catalog文件往往会超过10mb",{"2":{"596":1}}],["比如大量反序列化操作",{"2":{"469":1}}],["比如黑屏",{"2":{"594":1}}],["比如物理",{"2":{"593":1}}],["比如wasm与宿主接口互调频次",{"2":{"588":1}}],["比如iphone",{"2":{"565":1}}],["比如小游戏公共库",{"2":{"565":1}}],["比如绘制个文案",{"2":{"562":1}}],["比如canavs宽度为960",{"2":{"560":1}}],["比如有些地方的纹理变成了排行榜对应的纹理",{"2":{"555":1}}],["比如游戏自己计算了crc",{"2":{"465":1}}],["比如订阅消息wx",{"2":{"442":1}}],["比如addressable打包后生成streamingassets",{"2":{"465":1}}],["比如assetbundle",{"2":{"423":1}}],["比如aa的setting",{"2":{"392":1}}],["比如version1",{"2":{"392":1}}],["比如",{"2":{"336":1,"402":1,"560":1,"562":1,"782":1}}],["演示工程源码",{"2":{"517":1}}],["演示视频",{"2":{"514":1}}],["演示效果",{"0":{"514":1}}],["迎新",{"2":{"513":1}}],["反馈与投诉",{"2":{"510":1}}],["反射探头",{"2":{"381":1}}],["问题反馈",{"2":{"967":1}}],["问题反馈与联系我们",{"0":{"506":1},"1":{"507":1,"508":1},"2":{"967":1}}],["问题",{"2":{"837":1}}],["问题原因",{"2":{"578":1,"579":1,"580":1,"581":1,"582":1,"947":1}}],["问题复现尽可能详细",{"2":{"507":1}}],["讨论与跟踪",{"2":{"507":1}}],["研发助手号",{"2":{"506":1,"508":1}}],["研发成本",{"2":{"336":1}}],["阅读转换指引",{"2":{"503":1}}],["转化过程中的复杂度以及关注的侧重点自然也是不同的",{"2":{"686":1}}],["转化人力",{"2":{"685":1}}],["转化的游戏一般具备",{"2":{"502":1}}],["转换",{"2":{"963":1}}],["转换完成后",{"2":{"750":1}}],["转换后文件目录",{"2":{"748":1}}],["转换后开发者应在微信开发者工具检查控制台中network面板资源是否加载正常",{"2":{"505":1}}],["转换打包工具",{"2":{"737":1}}],["转换案例目的是分享学习",{"2":{"698":1}}],["转换案例",{"0":{"698":1,"965":1},"1":{"699":1,"700":1,"701":1,"702":1,"703":1,"704":1,"705":1,"706":1,"707":1,"708":1,"709":1,"710":1,"711":1,"712":1,"713":1}}],["转换工具自动替换",{"2":{"817":1}}],["转换工具会在game",{"2":{"807":1}}],["转换工具会将unity",{"2":{"726":1}}],["转换工具最低需要引擎版本为2018",{"2":{"762":1}}],["转换工具可以实现",{"2":{"501":1}}],["转换工具导出微信小游戏进行小游戏导出转换",{"2":{"966":1}}],["转换工具导出微信小游戏",{"0":{"473":1,"745":1},"1":{"746":1,"747":1,"748":1,"749":1,"750":1,"751":1,"752":1,"753":1,"754":1,"755":1,"756":1},"2":{"473":2}}],["转换工具对代码包自动进行br压缩",{"2":{"411":1}}],["转换方案已通过webaudio支持unity音频",{"2":{"440":1}}],["转换面板勾选",{"2":{"725":1}}],["转换面板勾选profiling",{"2":{"399":1}}],["转换面板设置内存值多少合适",{"2":{"584":1}}],["转换面板设置合理的",{"2":{"580":1}}],["转换面板的最大内存提示与指引优化",{"2":{"166":1}}],["转换插件有提供配置来自动使用这项能力",{"2":{"768":1}}],["转换插件理论上支持的unity版本涵盖",{"2":{"759":1}}],["转换插件版本高于202212070000导出的包",{"2":{"923":1}}],["转换插件版本高于202212070000且重新导出",{"2":{"921":1}}],["转换插件版本",{"2":{"641":1,"683":1}}],["转换插件",{"2":{"493":1,"855":1}}],["转换插件相关配置",{"0":{"810":1,"813":1,"816":1},"2":{"461":2}}],["转换插件默认设置",{"2":{"401":1}}],["转换插件配置",{"0":{"374":1}}],["转换插件添加启动并行下载配置",{"2":{"56":1}}],["转换小游戏",{"0":{"748":1},"2":{"348":1,"367":1,"498":1,"748":1}}],["转换导出插件勾选",{"2":{"329":1}}],["转换配置新增ios",{"2":{"12":1}}],["适合使用场景",{"0":{"925":1}}],["适合于对版本一致性要求不高的游戏使用",{"2":{"766":1}}],["适中",{"2":{"685":2}}],["适当增加预下载资源大小",{"2":{"649":1}}],["适当使用static",{"2":{"604":1}}],["适当调整fixed",{"2":{"598":1}}],["适用于主机平台",{"2":{"664":1}}],["适用于小游戏",{"2":{"664":3}}],["适用于",{"2":{"502":1}}],["适配文档",{"2":{"894":1}}],["适配在小游戏后",{"2":{"565":1}}],["适配小游戏",{"0":{"498":1,"747":1},"1":{"748":1,"749":1,"750":1,"751":1}}],["适配插件自身脚本错误",{"2":{"512":1}}],["适配插件将自动埋点游戏启动与特殊异常日志",{"2":{"510":1}}],["适配插件已自动完成",{"2":{"423":1}}],["适配插件版本升级到1",{"2":{"102":1,"113":1,"115":1,"125":1,"131":1,"133":1,"136":1}}],["适配插件版本号更新为1",{"2":{"86":1}}],["适配unity",{"2":{"102":1}}],["适配audioclip",{"2":{"45":1}}],["适配application",{"2":{"37":1}}],["适配video",{"2":{"35":1}}],["服务端",{"0":{"837":1}}],["服务器域名",{"2":{"840":1}}],["服务器开启http2",{"2":{"655":1}}],["服务器状态码",{"2":{"654":1}}],["服务器未开启br或gzip",{"2":{"646":1}}],["服务器中",{"2":{"350":1,"476":1}}],["服务",{"2":{"502":1}}],["服务中",{"2":{"502":1}}],["才让游戏能稳定跑起来",{"2":{"883":1}}],["才可真正卸载",{"2":{"800":1}}],["才能用于定位问题",{"2":{"744":1}}],["才能正常展示",{"2":{"500":1}}],["才支持",{"2":{"665":1}}],["才会看到",{"2":{"379":1}}],["常规资源加载方案",{"2":{"685":1}}],["常用启动优化工具",{"0":{"731":1},"1":{"732":1,"733":1,"734":1,"735":1}}],["常用启动优化技巧",{"0":{"730":1}}],["常用优化工具",{"0":{"591":1},"1":{"592":1,"593":1,"594":1}}],["常用之一",{"2":{"377":3}}],["常见情况是",{"2":{"935":1}}],["常见app",{"2":{"799":1}}],["常见的适配方式都可以在小游中使用",{"2":{"932":1}}],["常见的callback分配堆栈特征",{"2":{"826":1}}],["常见的情况是发生在如空项目或游戏代码中从未使用wxsdk的任何runtime能力时",{"2":{"697":1}}],["常见的头像用圆来做一个mask",{"2":{"668":1}}],["常见纹理资源",{"2":{"685":1}}],["常见优化手段",{"0":{"595":1},"1":{"596":1,"597":1,"598":1,"599":1,"600":1,"601":1,"602":1,"603":1,"604":1,"605":1,"606":1}}],["常见优化步骤如何",{"2":{"584":1}}],["常见问题qa",{"0":{"562":1}}],["常见问题",{"0":{"500":1,"696":1,"756":1,"827":1},"1":{"697":1,"828":1,"829":1}}],["想脚本调用的话",{"2":{"499":1,"752":1}}],["您的cdn最好支持brotli或gzip压缩txt文件",{"2":{"498":1}}],["填写该项则意味开启启动剧情",{"2":{"528":1}}],["填写相应参数",{"2":{"498":1,"748":1}}],["填写encoding时没有返回数据",{"2":{"140":1}}],["直到帧率下降到特定数值",{"2":{"939":1}}],["直到不报错为止",{"2":{"498":1}}],["直接转换成小游戏包",{"2":{"737":1}}],["直接调用malloc产生",{"2":{"570":1}}],["直接与小游戏团队进行技术交流",{"2":{"508":1}}],["直接对webassembly进行调试会非常困难",{"2":{"494":1}}],["直接用的",{"2":{"384":1}}],["直接用官方",{"2":{"378":1}}],["时这两个字段会返回null",{"2":{"834":1,"838":1}}],["时将找不到这些类",{"2":{"830":1}}],["时将会看到更多信息",{"2":{"493":1}}],["时将会步骤更多引擎运行时产生的异常",{"2":{"493":1}}],["时的",{"2":{"744":1}}],["时对后续场景使用",{"2":{"689":1}}],["时",{"2":{"500":1,"760":1,"779":2}}],["时开发者应该如何进行调试",{"2":{"492":1}}],["绑定端口",{"2":{"838":1}}],["绑定回调",{"2":{"491":1}}],["绑定以下脚本",{"2":{"491":1}}],["封面图",{"2":{"487":1,"754":1}}],["封面图配置",{"0":{"487":1}}],["封面自动隐藏时机",{"2":{"372":1,"487":1}}],["均需要使用cpuprofile定位",{"2":{"658":1}}],["均需要重新执行该步骤",{"2":{"348":1}}],["均建议进行该优化",{"2":{"485":1}}],["增量分包没生效",{"0":{"893":1},"2":{"864":1}}],["增强运行时性能",{"2":{"760":1}}],["增快游戏的运行进度",{"2":{"485":1}}],["增快游戏运行进度",{"2":{"485":1}}],["增加跨域头部",{"2":{"947":1}}],["增加以下代码",{"2":{"861":1}}],["增加了bundle大小的内存",{"2":{"802":1}}],["增加webgl移动端压缩纹理的支持",{"2":{"760":1}}],["增加wx",{"2":{"105":1}}],["增加",{"2":{"380":1,"777":1}}],["增加对",{"2":{"338":1}}],["增加对21",{"2":{"196":1}}],["增加预下载猎豹配置",{"2":{"304":1}}],["增加预下载并发数控制接口wx",{"2":{"301":1}}],["增加unity2020",{"2":{"274":1}}],["增加udp接口能力",{"2":{"160":1}}],["增加部分文件操作api",{"2":{"272":1}}],["增加bundle相关导出配置",{"2":{"268":1}}],["增加error日志回调",{"2":{"258":1}}],["增加适配",{"2":{"258":1}}],["增加日志输出",{"2":{"222":1}}],["增加cleastreamingassets选项",{"2":{"212":1}}],["增加清除文件缓存接口cleanfilecache",{"2":{"210":1}}],["增加清理指定文件接口removefile",{"2":{"206":1}}],["增加memoryprofiler",{"2":{"185":1}}],["增加进度条",{"2":{"170":1}}],["增加重启小游戏的api支持",{"2":{"162":1}}],["增加详细日志输出",{"2":{"153":1}}],["增加动态修改预下载列表的c",{"2":{"145":1}}],["增加动态修改data",{"2":{"145":1}}],["增加游戏圈接口openpageoption",{"2":{"139":1}}],["增加profilingmemory功能",{"2":{"108":1}}],["增加getcachepath接口",{"2":{"105":1}}],["增加rmdir及rmdirsync接口",{"2":{"105":1}}],["增加opencustomerservicechat",{"2":{"67":1}}],["增加onmousedown等pc点击事件",{"2":{"48":1}}],["增加选项il2cppcodegeneration",{"2":{"62":1}}],["增加渲染性能检测日志",{"2":{"53":1}}],["增加api",{"2":{"51":1,"72":1,"80":1}}],["增加隐私信息授权api",{"2":{"51":1}}],["增加downloadfile",{"2":{"48":1}}],["增加模糊地理位置获取接口",{"2":{"40":1}}],["增加接口wx",{"2":{"18":1}}],["增加ios高性能+",{"2":{"9":1}}],["它才会告诉你加载完成",{"2":{"774":1}}],["它的目的是减少渲染状态的切换",{"2":{"671":1}}],["它的优点是",{"2":{"485":1}}],["它并不能减少",{"2":{"671":1}}],["它与",{"2":{"671":1}}],["它有多种压缩格式",{"2":{"669":1}}],["它完全不理解自己最终是怎么被绘制到屏幕上的",{"2":{"550":1}}],["它核心处理两件事",{"2":{"550":1}}],["它包含的功能很全面也很强大",{"2":{"378":1}}],["过配置",{"2":{"940":1}}],["过程中会自动记录所有内存分配数据",{"2":{"823":1}}],["过大的资源下载会造成带宽抢占",{"2":{"649":1}}],["过长的启动时间会导致用户的显著流失",{"2":{"482":1}}],["过滤不需缓存的文件类型",{"2":{"268":1}}],["尤其www",{"2":{"802":1}}],["尤其是战斗释放技能时候",{"2":{"675":1}}],["尤其是在游戏启动阶段",{"2":{"596":1}}],["尤其是native",{"2":{"572":1}}],["尤其在浏览器运行时需清理indexeddb中的缓存",{"2":{"500":1}}],["尤其从",{"2":{"480":1,"678":1}}],["尤其关注安全域名",{"2":{"414":1}}],["广告买量启动优化",{"2":{"923":1}}],["广告买量时",{"2":{"680":1}}],["广告接口是否需要上线后才能调试",{"2":{"862":1}}],["广告位类型",{"2":{"680":1}}],["广告类型",{"2":{"679":1,"680":1}}],["广告",{"2":{"480":1,"678":1,"863":1}}],["广告等等",{"2":{"479":1}}],["广告api",{"2":{"80":1}}],["震动",{"2":{"479":1}}],["排行榜所在的纹理绘制在屏幕中的物理坐标系",{"2":{"560":1}}],["排行榜与微信关系数据",{"2":{"479":1,"967":1}}],["排行榜能力优化",{"2":{"113":1}}],["输入当前项目版本描述",{"2":{"871":1}}],["输入版本描述",{"0":{"873":1},"2":{"864":1}}],["输入法",{"2":{"863":1}}],["输入法complete回调",{"2":{"491":1}}],["输入法confirm回调",{"2":{"491":1}}],["输入法适配",{"0":{"489":1},"1":{"490":1,"491":1},"2":{"479":1,"967":1}}],["输入com",{"2":{"384":1}}],["申请",{"2":{"476":1}}],["协议实现",{"2":{"475":1}}],["快速上手创建小游戏类目应用",{"2":{"966":1}}],["快速对接平台开放能力",{"2":{"964":1}}],["快速适配对微信api能力的接入",{"2":{"688":1}}],["快速熟悉工具的使用并完成一次简单的转化工作",{"2":{"473":1}}],["快速开始",{"0":{"473":1},"2":{"473":2}}],["快适配",{"2":{"415":1,"683":1,"751":1,"966":1}}],["阶段耗时",{"2":{"682":1}}],["阶段",{"2":{"617":1}}],["阶段五",{"0":{"488":1},"2":{"470":1}}],["阶段四",{"0":{"481":1},"1":{"482":1,"483":1,"484":1,"485":1,"486":1,"487":1},"2":{"470":1}}],["阶段三",{"0":{"478":1},"1":{"479":1,"480":1},"2":{"470":1}}],["阶段二",{"0":{"472":1},"1":{"473":1,"474":1,"475":1,"476":1,"477":1},"2":{"470":1}}],["阶段一",{"0":{"471":1},"2":{"352":1,"470":1}}],["初步确认技术方案是否符合游戏项目",{"2":{"470":1}}],["初始场景中需要后续主场景或配置加载时可采取分帧策略",{"2":{"466":1,"727":1}}],["初始场景不宜过大",{"2":{"466":1,"727":1}}],["初始化sdk",{"2":{"863":1,"933":1}}],["初始化wxsdk",{"2":{"834":1}}],["初始化",{"2":{"611":1,"625":1}}],["初始化期间可以同步读取本地资源简单判断是否需要播放剧情",{"2":{"520":1}}],["初始化时遇到了缺失函数",{"2":{"412":1}}],["初始化完成",{"2":{"375":1,"377":1,"814":1}}],["初始化阶段文案",{"2":{"375":1,"377":1,"814":1}}],["初始化中",{"2":{"375":1,"814":1}}],["真正执行开始游戏逻辑",{"2":{"469":1}}],["真机访问异常",{"2":{"839":1}}],["真机需通过右上角菜单",{"2":{"820":1}}],["真机预览时",{"2":{"840":1,"841":1}}],["真机预览",{"2":{"751":1}}],["真机环境下",{"2":{"839":1}}],["真机环境",{"0":{"496":1}}],["真机环境中",{"2":{"410":1}}],["真机安卓缓存目录",{"2":{"465":1}}],["真机调试",{"2":{"409":1,"661":1}}],["真机",{"2":{"397":1,"463":1,"477":1}}],["左右",{"2":{"468":1,"866":2}}],["左上角",{"2":{"379":1}}],["优先排查是否stable版本的微信开发者工具",{"2":{"898":1}}],["优先将画面呈现",{"2":{"466":1,"727":1}}],["优点",{"2":{"664":3}}],["优化总览",{"0":{"729":1}}],["优化可参考",{"2":{"728":1}}],["优化的目标与标准",{"0":{"721":1}}],["优化手段",{"2":{"646":4,"649":5,"652":3,"655":8}}],["优化分析工具",{"0":{"659":1},"1":{"660":1},"2":{"639":1}}],["优化目标",{"0":{"590":1,"632":1}}],["优化unity",{"0":{"563":1,"585":1},"1":{"564":1,"565":1,"566":1,"567":1,"568":1,"569":1,"570":1,"571":1,"572":1,"573":1,"574":1,"575":1,"576":1,"577":1,"578":1,"579":1,"580":1,"581":1,"582":1,"583":1,"584":1,"586":1,"587":1,"588":1,"589":1,"590":1,"591":1,"592":1,"593":1,"594":1,"595":1,"596":1,"597":1,"598":1,"599":1,"600":1,"601":1,"602":1,"603":1,"604":1,"605":1,"606":1},"2":{"484":1,"637":1,"967":3}}],["优化udp接口能力",{"2":{"18":1}}],["优化",{"2":{"381":1,"484":1}}],["优化建议通过弹框提示",{"2":{"642":1}}],["优化建议概览",{"0":{"646":1,"649":1,"652":1,"655":1,"658":1},"2":{"639":5}}],["优化建议",{"0":{"334":1},"2":{"655":1,"687":1,"688":1,"689":1}}],["优化maxsize",{"2":{"333":1}}],["优化插件更新提示",{"2":{"310":1}}],["优化文件删除",{"2":{"291":1}}],["优化缓存目录统计",{"2":{"177":1}}],["优化启动插件内存占用",{"2":{"91":1}}],["优化启动剧情能力",{"2":{"18":1}}],["优化开发版",{"2":{"83":1}}],["优化framework胶水层获取canvas与宽高属性的性能损耗",{"2":{"80":1}}],["优化面板",{"2":{"72":1}}],["优化wxtouchinputoverride",{"2":{"67":1}}],["优化wxassetbundle当unitywebrequest异常时downloadhandlerwxassetbundle",{"2":{"43":1}}],["优化构建",{"2":{"48":1}}],["优化微信字体所占用的monoheap临时内存",{"2":{"25":1}}],["优化胶水层代码",{"2":{"25":1}}],["优化tcp接口能力",{"2":{"18":1}}],["优化videoplayer组件",{"2":{"4":1}}],["优化对团结版的导出支持",{"2":{"2":1}}],["关注",{"2":{"945":1}}],["关注ios高性能是否有fetch",{"2":{"881":1}}],["关注android或者ios普通模式的子包是否过早加载",{"2":{"881":1}}],["关注总体流失漏斗以确定需要优化的方向",{"2":{"683":1}}],["关键过程",{"2":{"716":1}}],["关卡分包加载",{"2":{"688":1}}],["关卡",{"2":{"688":1}}],["关于跨域问题",{"2":{"949":1}}],["关于wasm代码对启动速度的影响",{"2":{"726":1}}],["关于他们的选择对于轻度游戏来说两者没有特别要求",{"2":{"685":1}}],["关于该工具在微信小游戏的使用请查阅使用",{"2":{"572":1}}],["关于该能力的使用请查阅使用profilingmemory分析内存",{"2":{"571":1}}],["关于该阶段耗时",{"2":{"466":1,"727":1}}],["关闭分包",{"0":{"880":1},"2":{"864":1}}],["关闭连接",{"2":{"836":1}}],["关闭hdr",{"2":{"579":1}}],["关闭",{"0":{"523":1},"2":{"839":1,"840":1}}],["关闭时下载失败",{"2":{"500":1}}],["关闭mipmap",{"2":{"333":1}}],["关闭readable",{"2":{"333":1}}],["随机id",{"2":{"465":1}}],["随着游戏进度的推进",{"2":{"460":1}}],["命名空间",{"2":{"836":1}}],["命名空间中的一切",{"2":{"830":1}}],["命名更替为",{"2":{"87":1}}],["命中子包的时机就可以相应延后",{"2":{"868":1}}],["命中cdn缓存个数",{"2":{"654":1}}],["命中cdn缓存的数量",{"2":{"648":1}}],["命中本地缓存",{"2":{"464":1}}],["命令如下",{"2":{"496":1}}],["耗时",{"2":{"464":3}}],["都支持",{"2":{"664":1}}],["都可认为需要自动缓存",{"2":{"464":1}}],["都有",{"2":{"382":1}}],["假设有后台接口",{"2":{"848":1}}],["假设有以下配置",{"2":{"461":1}}],["假设",{"2":{"847":1}}],["假设loading场景中a资源完成为1001",{"2":{"681":1}}],["假如游戏需要支持低档机型",{"2":{"577":1}}],["假如本地已经有streamingassets",{"2":{"461":1}}],["永不被自动清理",{"2":{"460":1}}],["累计资源体积可能会超过允许的最大值",{"2":{"460":1}}],["框架不会做额外计算来验证资源版本",{"2":{"458":1}}],["框架自动做缓存控制",{"2":{"449":1}}],["存在大量依赖opengl",{"2":{"925":1}}],["存在长耗时帧cost=xxxms",{"2":{"658":1}}],["存在稍微卡顿但可及时恢复播放",{"2":{"524":1}}],["存在业务的bundle资源和使用微信压缩纹理工具后的纹理资源",{"2":{"454":1}}],["存储",{"2":{"441":1,"479":1}}],["清理时",{"2":{"461":1}}],["清理掉同名旧文件",{"2":{"461":1}}],["清理缓存时是否可被自动清理",{"2":{"460":1}}],["清理缓存时默认额外清理的大小",{"2":{"453":1}}],["清理出所需大小",{"2":{"460":1}}],["清漆效果",{"2":{"382":1}}],["\`分隔",{"2":{"453":2}}],["\`",{"2":{"453":2}}],["业务无感知",{"2":{"853":1}}],["业务自定义",{"2":{"625":1}}],["业务自定下载",{"2":{"611":1,"625":1}}],["业务侧提高请求并发数",{"2":{"655":1}}],["业务侧",{"2":{"577":1}}],["业务逻辑",{"2":{"570":1}}],["业务代码无需做任何调整",{"2":{"946":1}}],["业务代码",{"2":{"492":1,"578":1}}],["业务资源相关",{"2":{"453":1}}],["业务bundle资源",{"2":{"449":1}}],["结合操作系统",{"2":{"608":1}}],["结合profilingmem",{"2":{"584":1}}],["结合启动loader有以下优势",{"2":{"449":1}}],["结构",{"2":{"534":1}}],["结束",{"2":{"402":1}}],["五",{"0":{"465":1,"500":1,"584":1,"683":1,"788":1,"794":1},"2":{"448":1}}],["判断是否走缓存",{"0":{"462":1},"1":{"463":1,"464":1},"2":{"448":1}}],["四",{"0":{"462":1,"499":1,"577":1,"682":1,"731":1,"756":1,"784":1,"801":1,"804":1},"1":{"463":1,"464":1,"732":1,"733":1,"734":1,"735":1,"785":1,"786":1,"787":1,"802":1,"803":1},"2":{"448":1}}],["示例demo",{"0":{"559":1},"1":{"560":1,"561":1}}],["示例拷贝至",{"2":{"557":1}}],["示例",{"0":{"461":1},"2":{"448":1,"681":1}}],["示例api",{"2":{"434":1}}],["识别不同版本的资源",{"2":{"458":1}}],["识别纹理资源版本",{"0":{"459":1},"2":{"448":1}}],["识别业务资源版本",{"0":{"458":1},"2":{"448":1}}],["缓存策略",{"2":{"806":1}}],["缓存文件在usr目录下",{"2":{"465":1}}],["缓存",{"2":{"464":1}}],["缓存淘汰相关",{"2":{"453":1}}],["缓存清理规则",{"0":{"460":1},"2":{"448":1}}],["缓存规则",{"0":{"452":1},"1":{"453":1,"454":1,"455":1,"456":1,"457":1,"458":1,"459":1,"460":1,"461":1},"2":{"448":1,"655":1}}],["缓存大小为0",{"2":{"252":1}}],["三国吧兄弟",{"0":{"701":1}}],["三种方案",{"2":{"684":1}}],["三",{"0":{"452":1,"498":1,"566":1,"591":1,"595":1,"633":1,"681":1,"730":1,"739":1,"752":1,"778":1,"800":1,"808":1},"1":{"453":1,"454":1,"455":1,"456":1,"457":1,"458":1,"459":1,"460":1,"461":1,"567":1,"568":1,"569":1,"570":1,"571":1,"572":1,"573":1,"574":1,"575":1,"576":1,"577":1,"578":1,"579":1,"580":1,"581":1,"582":1,"583":1,"592":1,"593":1,"594":1,"596":1,"597":1,"598":1,"599":1,"600":1,"601":1,"602":1,"603":1,"604":1,"605":1,"606":1,"634":1,"635":1,"636":1,"637":1,"638":1,"753":1,"754":1,"755":1,"779":1,"780":1,"781":1,"782":1,"783":1,"809":1,"810":1,"811":1,"812":1,"813":1,"814":1,"815":1,"816":1,"817":1,"818":1,"819":1,"820":1},"2":{"448":1}}],["哪些资源会自动缓存",{"0":{"451":1},"2":{"448":1,"655":2}}],["什么是高性能+模式",{"0":{"936":1},"2":{"934":1}}],["什么是高性能模式",{"0":{"935":1},"2":{"934":1}}],["什么是unity",{"0":{"806":1}}],["什么是addressable",{"0":{"774":1}}],["什么是异常级别",{"2":{"402":1}}],["什么情况触发资源缓存",{"0":{"450":1},"2":{"448":1}}],["介绍",{"0":{"449":1},"1":{"450":1,"451":1,"452":1,"453":1,"454":1,"455":1,"456":1,"457":1,"458":1,"459":1,"460":1,"461":1,"462":1,"463":1,"464":1,"465":1},"2":{"448":1}}],["大致与",{"2":{"925":2}}],["大致流程如图",{"2":{"449":1}}],["大部分时候有奇效",{"2":{"896":1}}],["大部分游戏收集",{"2":{"888":1}}],["大部分设备将启动失败",{"2":{"580":1}}],["大体是将js版中的wx替换为unity版的wx",{"2":{"858":1}}],["大圣顶住",{"0":{"711":1}}],["大侠不哭",{"0":{"708":1}}],["大型游戏不建议使用addressable",{"2":{"687":1}}],["大型工程可能花费一些时间",{"2":{"352":1}}],["大量dc会造成非常大的cpu压力",{"2":{"604":1}}],["大小都为",{"2":{"866":1}}],["大小为30mb的游戏占用内存为",{"2":{"577":1}}],["大小限制为200mb",{"2":{"447":1}}],["大多是因为在首场景执行了不必要的操作",{"2":{"469":1}}],["删除本地小游戏",{"2":{"945":1}}],["删除掉相关事件监听",{"2":{"491":1}}],["删除多线程用法",{"2":{"447":1}}],["删减多余代码",{"2":{"25":1}}],["策略",{"2":{"445":1}}],["回退成通过cdn下载后备字体的形式",{"2":{"854":1}}],["回退至unitywebrequestassetbundle模式运行",{"2":{"51":1}}],["回包大小",{"2":{"654":1}}],["回调后再执行你的主逻辑",{"2":{"858":1}}],["回调",{"2":{"561":1}}],["回调函数参数中可获得句柄外",{"2":{"526":1}}],["回合战斗",{"2":{"965":1}}],["回合",{"2":{"445":1}}],["角色",{"2":{"445":1}}],["牌类",{"2":{"445":1}}],["牌从门前过",{"2":{"377":3}}],["棋类",{"2":{"445":1}}],["棋牌等",{"2":{"618":1}}],["棋牌",{"2":{"445":1}}],["飞行设计",{"2":{"445":1}}],["跑酷",{"2":{"445":1}}],["益智等",{"2":{"445":1}}],["塔防",{"2":{"445":1}}],["模式",{"2":{"967":1}}],["模式下",{"2":{"695":1}}],["模式下这个占位纹理会对应有一个",{"2":{"550":1}}],["模型闪烁",{"0":{"928":1}}],["模型",{"2":{"685":1}}],["模拟经营游戏",{"2":{"706":1}}],["模拟经营",{"2":{"445":1,"580":1,"618":1}}],["模块",{"2":{"338":2}}],["休闲类小游戏等",{"2":{"688":1}}],["休闲游戏为核心玩法",{"2":{"611":1,"625":1}}],["休闲",{"2":{"445":1,"965":1}}],["考虑到游戏体积与逻辑复杂度",{"2":{"445":1}}],["考虑到玩家平均下载带宽",{"2":{"391":1}}],["尽可能使用unload",{"0":{"803":1}}],["尽可能地设置lod",{"2":{"604":1}}],["尽快渲染让玩家看到游戏首画面",{"2":{"634":1}}],["尽量合并成",{"2":{"669":1}}],["尽量选择压缩比大的",{"2":{"669":1}}],["尽量用半精度",{"2":{"668":1}}],["尽量不要超过",{"2":{"669":1}}],["尽量不要再用环境反射立体贴图",{"2":{"667":1}}],["尽量不用",{"2":{"667":1}}],["尽量设置小一些",{"2":{"667":1}}],["尽量避免在各级resource包含资源",{"2":{"635":1}}],["尽量强制使用单声道音频",{"2":{"582":1}}],["尽量使用",{"2":{"671":1}}],["尽量使用压缩纹理",{"2":{"669":1}}],["尽量使用android",{"2":{"638":1}}],["尽量使用2021",{"2":{"446":1}}],["尽量使用云端存储",{"2":{"441":1}}],["尽管发布前进行了多数unity年限版本与常见机型的测试",{"2":{"354":1}}],["定义",{"2":{"611":1,"618":1,"625":1}}],["定位问题",{"2":{"511":1}}],["定时不精确",{"2":{"439":1}}],["定制启动封面",{"2":{"967":1}}],["定制urp",{"2":{"383":2}}],["定制版本的",{"2":{"383":2,"384":1}}],["定制版本的性能数据对比",{"0":{"383":1}}],["定制版本",{"0":{"382":1},"2":{"381":2}}],["定制本地化",{"0":{"381":1},"1":{"382":1,"383":1}}],["定制",{"2":{"378":1,"379":1,"381":1}}],["定制适合微信小游戏的",{"2":{"378":1}}],["定制微信小游戏的",{"0":{"378":1},"1":{"379":1,"380":1,"381":1,"382":1,"383":1,"384":1,"385":1},"2":{"967":1}}],["定制效果",{"0":{"377":1}}],["没有比较大的代码修改的情况下",{"2":{"876":1}}],["没有看到增量分包的界面",{"0":{"892":1},"2":{"864":1}}],["没有弹出输入法",{"0":{"434":1}}],["没有定义",{"2":{"380":1}}],["官网下载对应版本的",{"2":{"668":1}}],["官网下载对应的",{"2":{"430":1}}],["官方论坛的临时修复方案",{"2":{"949":1}}],["官方demo",{"2":{"794":1}}],["官方提供的自动加载方案",{"2":{"685":1}}],["官方也提供了",{"2":{"501":1}}],["官方文档",{"2":{"385":1}}],["官方urp",{"2":{"383":2}}],["官方",{"2":{"378":1,"379":2,"384":1}}],["项目首次使用插件默认会启用打水印功能",{"2":{"961":1}}],["项目发布为webgl或转换为小游戏时unity会自动拷贝bundle文件到最终的生成目录下",{"2":{"792":1}}],["项目在使用2018",{"2":{"762":1}}],["项目使用2017版本",{"2":{"762":1}}],["项目使用了小游戏unity适配插件",{"2":{"498":1,"751":1}}],["项目转换",{"0":{"472":1},"1":{"473":1,"474":1,"475":1,"476":1,"477":1},"2":{"470":1}}],["项目报failed",{"0":{"430":1}}],["项目工程的",{"2":{"379":1}}],["系统出现",{"2":{"949":1}}],["系统和基础库要求是",{"2":{"945":1}}],["系统字体字符集",{"0":{"857":1}}],["系统字体",{"2":{"855":1}}],["系统依然能够高效地找到准确的依赖进行打包",{"2":{"774":1}}],["系统自动启用引用计数",{"2":{"774":1}}],["系统",{"2":{"668":1}}],["系统平台之间的性能差异",{"0":{"589":1}}],["系统下",{"0":{"430":1}}],["系列的格式",{"2":{"347":1}}],["打水印和下载过程可能会有一定耗时",{"2":{"962":1}}],["打些日志来辅佐排查",{"2":{"562":1}}],["打包ab时文件名带hash",{"2":{"799":1}}],["打包bundle时",{"2":{"797":1}}],["打包参数加上buildassetbundleoptions",{"2":{"458":1}}],["打包在首资源包或bundle",{"2":{"425":1,"725":1}}],["打开拓展设置",{"2":{"960":1}}],["打开插件开关后",{"2":{"872":1}}],["打开浏览器时",{"2":{"757":1}}],["打开游戏工程",{"2":{"692":1}}],["打开unity",{"2":{"661":1,"757":1}}],["打开性能面板查看dynamicmemory",{"2":{"584":1}}],["打开广告",{"2":{"510":1}}],["打开chrome浏览器",{"2":{"467":1}}],["打开导出目录",{"2":{"408":1}}],["打开vconsole",{"2":{"397":1,"463":1}}],["打开调试时正常",{"2":{"839":1}}],["打开调试",{"2":{"397":1,"410":1,"463":2,"820":1}}],["打开调试模式",{"2":{"397":1,"463":1}}],["打开该窗口",{"2":{"380":1}}],["打开",{"2":{"379":2,"500":1,"519":1,"949":1}}],["打开配置面板",{"2":{"352":1}}],["打开bundle配置面板",{"2":{"349":1}}],["互通的特性",{"2":{"424":1}}],["某些依赖平台的第三方插件",{"2":{"422":1}}],["能解决大部分问题",{"2":{"898":1}}],["能不用光照",{"2":{"667":1}}],["能提升细碎文件的下载效率",{"2":{"655":1}}],["能准确反映游戏实际运行情况",{"2":{"592":1}}],["能够减少渲染的开销",{"2":{"672":1}}],["能够减少游戏的转化工时",{"2":{"502":1}}],["能够快速有效的将原生",{"2":{"502":1}}],["能写js脚本和c",{"0":{"424":1}}],["能否使用system",{"0":{"421":1,"423":1}}],["能力适配",{"2":{"967":1}}],["能力特性",{"0":{"515":1}}],["能力",{"2":{"447":1,"513":1,"520":1,"612":1,"625":1,"627":1}}],["能力支持",{"0":{"447":1}}],["能力地图",{"2":{"415":1,"460":1,"465":1,"683":1,"751":1,"966":1}}],["能力隶属于微信压缩纹理工具的扩展范畴",{"2":{"353":1}}],["失败",{"2":{"419":1}}],["方可查看数据",{"2":{"683":1}}],["方法名",{"2":{"863":1}}],["方法等信息",{"2":{"725":1}}],["方法二",{"0":{"693":1},"1":{"694":1}}],["方法一",{"0":{"691":1},"1":{"692":1}}],["方法",{"2":{"554":1}}],["方法实现导出",{"2":{"419":1}}],["方案概述与兼容性",{"2":{"967":1}}],["方案特点",{"0":{"964":1}}],["方案可以快速完成转化工作",{"2":{"685":1}}],["方案选择说明",{"0":{"685":1}}],["方案选择建议",{"0":{"502":1}}],["方案",{"2":{"667":1,"963":1}}],["方案评估",{"0":{"444":1},"1":{"445":1,"446":1,"447":1}}],["方式安装wxsdk",{"2":{"691":1}}],["方式安装",{"0":{"691":1},"1":{"692":1}}],["方式安装的一般无需改动",{"2":{"430":1}}],["方式进行按需加载与及时资源释放",{"2":{"689":1}}],["方式在游戏运行时异步按需下载",{"2":{"684":1}}],["方式完成",{"2":{"519":1}}],["方式2",{"2":{"410":1,"823":1}}],["方式1",{"2":{"410":1,"823":1}}],["基础库",{"2":{"945":1}}],["基础库+canvas",{"2":{"565":1}}],["基础库版本必须",{"2":{"500":1}}],["基于webassembly技术",{"2":{"963":1}}],["基于业务侧统计",{"2":{"654":1}}],["基于异步干预剧情发展",{"0":{"520":1},"2":{"519":1}}],["基于",{"2":{"419":1,"664":1,"685":1,"925":1}}],["基本就会内存",{"2":{"883":1}}],["基本就可以测试和发布了",{"2":{"879":1}}],["基本拉丁语",{"2":{"857":1}}],["基本汉字",{"2":{"857":1}}],["基本设置",{"2":{"754":1,"769":1}}],["基本兼容",{"2":{"663":1}}],["基本上只可能是没调用",{"2":{"562":1}}],["基本上不上",{"2":{"381":1}}],["基本一个主方向光就够了",{"2":{"381":1}}],["添加插件",{"0":{"960":1},"2":{"960":1}}],["添加插件的报错信息添加插件",{"2":{"417":1}}],["添加到预下载列表中的文件",{"2":{"853":1}}],["添加需要导出的scene",{"2":{"497":1,"746":1}}],["添加宏wx",{"2":{"380":1}}],["待审核确认",{"0":{"415":1}}],["代价是占用与文件同等大小的内存",{"2":{"565":1}}],["代表的运行能力越强",{"2":{"939":1}}],["代表正在播放剧情",{"2":{"527":1,"543":1}}],["代表在",{"2":{"412":1}}],["代码将被编译并优化",{"2":{"943":1}}],["代码包体积就发布上线可以吗",{"0":{"952":1},"2":{"934":1}}],["代码包进行拆分",{"2":{"868":1}}],["代码体积限制",{"0":{"943":1},"2":{"934":1}}],["代码体积变大",{"2":{"280":1}}],["代码是在一个",{"2":{"866":1}}],["代码是无法",{"2":{"402":1}}],["代码示例",{"0":{"856":1}}],["代码没有直接访问",{"2":{"830":1}}],["代码更新",{"0":{"764":1}}],["代码使用il2cpp生成cpp代码时",{"2":{"725":1}}],["代码分包+压缩纹理+unityheap预留这几种优化手段",{"2":{"943":1,"952":1}}],["代码分包",{"0":{"864":1},"1":{"865":1,"866":1,"867":1,"868":1,"869":1,"870":1,"871":1,"872":1,"873":1,"874":1,"875":1,"876":1,"877":1,"878":1,"879":1,"880":1,"881":1,"882":1,"883":1,"884":1,"885":1,"886":1,"887":1,"888":1,"889":1,"890":1,"891":1,"892":1,"893":1,"894":1,"895":1,"896":1,"897":1,"898":1,"899":1,"900":1,"901":1,"902":1,"903":1,"904":1,"905":1,"906":1,"907":1,"908":1,"909":1,"910":1,"911":1,"912":1,"913":1,"914":1,"915":1,"916":1,"917":1,"918":1,"919":1,"920":1,"921":1,"922":1,"923":1},"2":{"716":1,"864":1,"949":1}}],["代码编译",{"2":{"678":1}}],["代码编译与运行时指令优化产生的内存",{"2":{"565":1}}],["代码与资源体积",{"0":{"612":1,"627":1}}],["代码启动较晚",{"2":{"545":1}}],["代码改动",{"2":{"382":1}}],["代码用",{"2":{"382":1}}],["代码增加宏定义wx",{"2":{"380":1}}],["代码",{"2":{"380":3,"381":1,"953":1}}],["代码配置微信压缩纹理工具用于执行的",{"2":{"363":1}}],["传输大小与zip压缩后体积相当",{"2":{"411":1}}],["传输录制文件到pc",{"2":{"329":1}}],["保持较高还原度",{"2":{"964":1}}],["保持原引擎工具链与技术栈",{"2":{"964":1}}],["保持端口为54998",{"2":{"661":1}}],["保持为不压缩",{"2":{"411":1}}],["保存后只需再次执行即可",{"2":{"352":1}}],["错误日志",{"2":{"512":1}}],["错误日志中的业务代码堆栈分析可参考文档",{"2":{"410":1}}],["错误解决办法",{"0":{"430":1}}],["错误调试与异常排查",{"0":{"395":1},"1":{"396":1,"397":1,"398":1,"399":1,"400":1,"401":1,"402":1,"403":1,"404":1}}],["功能相匹配",{"2":{"925":2}}],["功能包括",{"2":{"806":1}}],["功能强大并且学习曲线变得平滑",{"2":{"775":1}}],["功能全面",{"2":{"664":1}}],["功能异常打开反馈入口",{"2":{"510":1}}],["功能",{"2":{"409":1}}],["切忌使用www",{"2":{"798":1}}],["切忌产生跳跃峰值",{"2":{"580":1}}],["切忌超出使用",{"2":{"580":1}}],["切忌在发布版本中使用",{"2":{"402":1}}],["切勿使用带cache能力的线管接口",{"0":{"802":1}}],["切勿使用微信开发者工具的",{"2":{"409":1}}],["切勿在start",{"2":{"466":1,"727":1}}],["二",{"0":{"451":1,"497":1,"565":1,"590":1,"632":1,"679":1,"722":1,"738":1,"747":1,"773":1,"799":1,"807":1},"1":{"680":1,"723":1,"724":1,"725":1,"726":1,"727":1,"728":1,"729":1,"748":1,"749":1,"750":1,"751":1,"774":1,"775":1,"776":1,"777":1},"2":{"448":1}}],["二维码",{"2":{"409":1}}],["二次启动最佳实践检测逻辑调整",{"2":{"77":1}}],["找不到game",{"0":{"408":1}}],["找到水印工具",{"2":{"960":1}}],["找到wasmcodesplit",{"2":{"895":1}}],["找到项目的game",{"2":{"469":1}}],["找到",{"2":{"379":2,"836":1}}],["类名",{"2":{"863":1}}],["类",{"2":{"831":1}}],["类也是这样",{"2":{"830":1}}],["类实现",{"2":{"475":1}}],["类似",{"2":{"404":1}}],["类型数据",{"2":{"836":2}}],["类型从",{"2":{"382":1}}],["类型",{"2":{"368":1,"371":1}}],["与转换面板配置有对应关系的配置项",{"0":{"754":1}}],["与此帧网络并发",{"2":{"660":1}}],["与ios普通模式大概率启动失败",{"2":{"580":1}}],["与app游戏不同",{"2":{"449":1}}],["与",{"2":{"404":1,"485":1,"661":1,"757":1,"823":1,"967":1}}],["与步骤1相似",{"2":{"329":1}}],["无直接的api能力调用可使用读取系统信息等api",{"2":{"697":1}}],["无内购",{"2":{"618":1}}],["无养成体系",{"2":{"618":1}}],["无法关闭",{"2":{"841":1}}],["无法使用loadfromfile",{"2":{"800":1}}],["无法立刻影响到所有现网用户",{"2":{"766":1}}],["无法启动问题",{"2":{"594":1}}],["无法正确处理版本信息",{"2":{"461":1}}],["无论是addressable还是assetbundle在微信小游戏底层都使用xhr进行远程资源访问",{"2":{"776":1}}],["无论是启动耗时或运行时流畅分析都非常有用",{"2":{"592":1}}],["无论从启动还是运行上我们都需要做进一步性能优化",{"2":{"631":1}}],["无论哪一种方案都需要开发者专项的适配",{"2":{"502":1}}],["无缓存",{"2":{"464":1}}],["无堆栈信息",{"2":{"402":2}}],["无需重写游戏核心逻辑",{"2":{"964":1}}],["无需更换unity引擎与重写核心代码的情况下将原有游戏项目适配到微信小游戏",{"2":{"963":1}}],["无需担心开启profiling",{"2":{"876":1}}],["无需网络下载",{"2":{"855":1}}],["无需做其他处理",{"2":{"853":1}}],["无需登记安全域名",{"2":{"839":1}}],["无需手动上报",{"2":{"678":1}}],["无需开发手动释放",{"2":{"530":1}}],["无需node支持",{"2":{"80":1}}],["无需再调用小游戏的帧率设置api",{"2":{"37":1}}],["取而代之的做法是使用协程和",{"2":{"832":1}}],["取值范围",{"2":{"680":1}}],["取值和效果参考",{"2":{"375":1}}],["取消此文件的自动缓存",{"2":{"655":1}}],["取消勾选",{"2":{"579":1}}],["取平均值",{"2":{"611":2,"615":1,"625":1,"626":1}}],["取决于虚拟机",{"2":{"402":1}}],["个别游戏",{"0":{"950":1},"2":{"934":1}}],["个别游戏可能会接近",{"2":{"884":1}}],["个别微信接口",{"2":{"442":1}}],["个",{"2":{"402":1,"486":1}}],["虚拟机",{"2":{"402":1}}],["未命中cdn缓存",{"2":{"655":1}}],["未开启http2",{"2":{"655":1}}],["未开通mp后台",{"2":{"465":1}}],["未使用预下载能力",{"2":{"649":1}}],["未使用wasm代码分包",{"2":{"646":2}}],["未压缩原始大小",{"2":{"645":1}}],["未上报游戏可交互上报的游戏",{"2":{"641":1}}],["未前往mp后台",{"2":{"460":1}}],["未被捕捉的异常将抛给",{"2":{"402":1}}],["未弹框提示更新客户端",{"2":{"317":1}}],["简介与原理",{"2":{"800":1}}],["简单的上手操作",{"2":{"699":1}}],["简单配置即可",{"2":{"664":1}}],["简单来说",{"2":{"402":1}}],["简化过的材质对性能更好",{"2":{"668":1}}],["简化",{"2":{"382":1}}],["简化了",{"2":{"382":4}}],["简化级联阴影",{"2":{"382":1}}],["简化阴影",{"2":{"381":1}}],["简化计算等",{"2":{"381":1}}],["应当明显小于",{"2":{"671":1}}],["应设置showresultafterlaunch=false",{"2":{"641":1}}],["应减少assetbundle大小",{"2":{"581":1}}],["应避免使用",{"2":{"581":1}}],["应检查是否有使用unity",{"2":{"573":1}}],["应该使用哪个引擎版本转换",{"2":{"762":1}}],["应该使用jxxx的数字作为函数id",{"2":{"397":1}}],["应该设置showresultafterlaunch=true",{"2":{"641":1}}],["应该如何设置",{"0":{"431":1}}],["应使用devicepixelratio来控制",{"2":{"601":1}}],["应使用",{"2":{"341":1}}],["步骤",{"0":{"823":1}}],["步骤二",{"0":{"519":1}}],["步骤一",{"0":{"518":1},"2":{"519":1}}],["步骤2",{"2":{"397":1,"463":1}}],["步骤1",{"2":{"397":1,"463":1}}],["除非后处理对画质很关键或游戏性能能支撑起后处理的开销",{"2":{"674":1}}],["除非是",{"2":{"665":1}}],["除非了解小程序更新机制",{"2":{"392":1}}],["除首资源包外进入游戏核心玩法所需的资源量",{"2":{"611":1,"625":1}}],["除此外",{"2":{"510":2}}],["除在微信小游戏转换工具面板配置导出外",{"2":{"419":1}}],["除了在unity转换导出插件填写文件列表外",{"2":{"847":1}}],["除了常见的堆栈特征外",{"2":{"826":1}}],["除了静态场景外",{"2":{"782":1}}],["除了开发者需要确保使用可靠的cdn服务托管视频资源确保足够的输出带宽",{"2":{"524":1}}],["除了上面列举的功能",{"2":{"381":1}}],["除了",{"2":{"379":2,"380":1}}],["源代码中的函数名",{"2":{"403":1}}],["源站或者cdn加上不允许缓存的http头",{"2":{"392":1}}],["源码",{"2":{"382":1,"668":1}}],["跨域与ssl证书等问题",{"2":{"414":1}}],["跨域",{"2":{"391":1}}],["理论最大值",{"2":{"391":1}}],["理论上unityheap",{"2":{"829":1}}],["理论上",{"2":{"337":1}}],["超过整包",{"2":{"888":1}}],["超过",{"2":{"884":1,"889":1}}],["超过将会排队",{"2":{"853":1}}],["超过时底层自动排队",{"2":{"391":1}}],["超能世界",{"0":{"707":1}}],["超好玩的3d跑酷手游",{"2":{"699":1}}],["超休闲游戏256",{"2":{"580":1}}],["超时默认为60s",{"2":{"391":1}}],["针对txt文件进行开启brotli或gzip压缩",{"2":{"391":1}}],["实时检测更新",{"0":{"768":1}}],["实时日志为帮助小程序开发者快捷地排查小程序漏洞",{"2":{"511":1}}],["实时日志",{"2":{"511":1}}],["实例化来合并",{"2":{"671":1}}],["实例化",{"0":{"599":1}}],["实践指南",{"0":{"503":1},"2":{"474":1,"685":2}}],["实际上有些函数可能只是调用比较冷门",{"2":{"884":1}}],["实际上大部分unity版本都可正常使用",{"2":{"774":1}}],["实际发起请求的url为data",{"2":{"851":1}}],["实际发起预载请求的url采用填写的地址",{"2":{"851":1}}],["实际不会发起网络请求",{"2":{"799":1}}],["实际运行可限帧30以保持长时间挂机运行的发热量",{"2":{"590":1}}],["实际游戏永远不要让单个文件这么大",{"2":{"391":1}}],["实际首包资源加载方式会根据包体决定",{"2":{"388":1}}],["实现原理",{"0":{"868":1},"2":{"864":1}}],["实现资源的管理",{"2":{"502":1}}],["实现网络通信",{"2":{"475":1}}],["实现默认效果很简单",{"2":{"376":1}}],["实现硬件解码",{"2":{"340":1}}],["实现一个云函数",{"2":{"338":1}}],["│",{"2":{"386":10}}],["└──",{"2":{"386":5,"749":1}}],["├──",{"2":{"386":13,"387":3,"749":1}}],["参见建议第五点",{"2":{"655":1}}],["参照小游戏资源部署章节进行资源部署",{"2":{"750":1}}],["参照示例修修改改很快能够上手",{"2":{"558":1}}],["参照unity的benchmark项目",{"2":{"468":1}}],["参照指引放开域名限制微信开发者工具域名列表",{"2":{"416":1}}],["参考地址",{"2":{"863":4}}],["参考lauxlib",{"2":{"828":1}}],["参考示例如下",{"2":{"800":1}}],["参考小游戏快速开始",{"2":{"751":1}}],["参考资料",{"0":{"739":1,"794":1,"804":1}}],["参考文档",{"0":{"676":1,"930":1}}],["参考文档小游戏启动流程中提到的",{"2":{"468":1}}],["参考已转化的案例游戏并结合自身游戏情况评估转化的可行性",{"2":{"471":1}}],["参考代码如下",{"2":{"419":1}}],["参考指引转换工具导出微信小游戏",{"2":{"415":1}}],["参考",{"0":{"385":1},"2":{"443":1}}],["参数",{"0":{"368":1,"371":1},"2":{"368":1,"371":1}}],["参数非法",{"2":{"338":1}}],["~",{"2":{"384":1,"542":2}}],["先android收集",{"2":{"871":1}}],["先把本地的",{"2":{"384":1}}],["先展示背景图",{"2":{"375":1,"377":1,"814":1}}],["因纹理打包规则不一致",{"2":{"459":1}}],["因本地存储的话",{"2":{"441":1}}],["因需要统计总包体大小",{"2":{"388":1}}],["因为上线后不可能也让玩家打开调试模式",{"2":{"839":1}}],["因为每次分配内存都会获取堆栈信息导致运行慢",{"2":{"828":1}}],["因为大多数unity",{"2":{"779":1}}],["因为存在较多bug",{"2":{"760":1}}],["因为当key达到几千个之后构建的资源索引文件",{"2":{"687":1}}],["因为小游戏对性能要求还是比较高",{"2":{"664":1}}],["因为开放数据域并不是使用",{"2":{"560":1}}],["因为unity纹理与",{"2":{"552":1}}],["因为这里可以更好进行问题沉淀",{"2":{"507":1}}],["因为mac上的隐私安全问题",{"2":{"498":1}}],["因为安卓采集profile文件需要手动控制",{"2":{"469":1}}],["因为微信用户更容易删除小程序",{"2":{"423":1}}],["因为",{"2":{"384":1,"525":1,"832":1,"933":1}}],["因此这里需要针对该特性在小游戏环境的支持进一步说明",{"2":{"926":1}}],["因此之前的项目不能被用来增量更新",{"2":{"892":1}}],["因此耗时上不需要看总的大小",{"2":{"886":1}}],["因此耗时长的cpu运算会影响帧率",{"2":{"599":1}}],["因此对游戏运行影响最多只有加载子包的一次性影响",{"2":{"883":1}}],["因此对性能更苛刻",{"2":{"589":1}}],["因此要求前后两个包都必须提供symbol文件",{"2":{"876":1}}],["因此收集工作非常重要",{"2":{"868":1}}],["因此js侧内存压力会更大",{"2":{"829":1}}],["因此javascript",{"2":{"573":1}}],["因此不需要存储完整的assetbundle",{"2":{"800":1}}],["因此占用下载带宽",{"2":{"726":1}}],["因此文件大小极为影响游戏的启动速度",{"2":{"725":1}}],["因此过长的启动时间将导致用户显著流失",{"2":{"720":1}}],["因此无论哪种方案最终都采用上传",{"2":{"684":1}}],["因此相对于js能更快达到jit指令优化后的峰值",{"2":{"588":1}}],["因此cpu算力会受限于虚拟机的执行效率",{"2":{"587":1}}],["因此转换面板的",{"2":{"580":1}}],["因此开发者务必保证内存峰值不超过该数值",{"2":{"942":1}}],["因此开发者需要关注这几部分内存",{"2":{"570":1}}],["因此开发者更清楚一个剧情的不同阶段的时间点",{"2":{"521":1}}],["因此游戏内存的分配也是完全托管在这个环境中",{"2":{"565":1}}],["因此插件内置的示例采用的是微信自研的轻量级渲染引擎",{"2":{"558":1}}],["因此配置性的操作是不能此完成",{"2":{"525":1}}],["因此上报剧情期间用户不同阶段的行为对于分析剧情内容与留存率是非常重要的",{"2":{"521":1}}],["因此推荐的设计是默认情况下仅播放5秒的启动动画",{"2":{"520":1}}],["因此是有可能在5秒的启动动画结束后",{"2":{"520":1}}],["因此主要配置由",{"2":{"517":1}}],["因此我们提供了代码分包工具",{"2":{"866":1}}],["因此我们提供了专门的内存分配器忽略lua内存",{"2":{"828":1}}],["因此我们在底层对bundle文件做了缓存",{"2":{"799":1}}],["因此我们可以通过该能力分析更详细具体的分配行为",{"2":{"571":1}}],["因此我们建议开发者使用日志与异常堆栈进行问题排查",{"2":{"494":1}}],["因此我们需要将录制后的文件传输到pc使用chrome进行分析",{"2":{"329":1}}],["因此可以充分利用该时机进行一些必要的资源下载可有助于提升游戏场景等资源的载入速度",{"2":{"483":1}}],["因此如何快速呈现游戏场景是",{"2":{"482":1}}],["因此缓存规则也支持忽略某些文件",{"2":{"455":1}}],["因此需要注意业务中不要使用已淘汰的www类",{"2":{"802":1}}],["因此需要手动跑工具生成",{"2":{"744":1}}],["因此需要避免用于重度逻辑",{"2":{"597":1}}],["因此需要在必要的位置进行相关的数据上报",{"2":{"480":1}}],["因此需要根据场景中的主次内容进行资源上的优化分包处理",{"2":{"474":1}}],["因此需要开发者手动调用ontouch监听",{"2":{"442":1}}],["因此需要添加插件",{"2":{"417":1}}],["因此需要使用视频或图片等内容作为过渡以留住玩家",{"2":{"372":1,"812":1}}],["因此在异步结果返回前",{"2":{"520":1}}],["因此在",{"2":{"380":1}}],["因此在移动端中无法充分利用",{"2":{"340":1}}],["因此看似多条的请求背后系统仅会创建1条tcp",{"2":{"361":1}}],["因此非",{"2":{"359":1}}],["因此也是微信小游戏环境下主要使用到的压缩的纹理资源",{"2":{"347":1}}],["因此",{"2":{"340":1,"378":1,"384":1,"588":1,"631":1,"665":1,"695":1,"803":1,"830":1,"886":1}}],["变体这部分开发者可以在定制的过程中剔除掉不需要的功能",{"2":{"384":1}}],["变体做剔除的",{"2":{"384":1}}],["变量",{"2":{"381":1,"382":1}}],["变量中",{"2":{"360":1}}],["利用profilingmemory",{"2":{"822":1}}],["利用pc",{"2":{"329":1}}],["利用网络空闲期",{"2":{"783":1}}],["利用addressable进行更灵活和细粒度的拆解",{"2":{"783":1}}],["利用率",{"2":{"383":4}}],["且ip",{"2":{"757":1}}],["且有助于后续压缩纹理等优化工作的进行有效提升游戏运行性能",{"2":{"685":1}}],["且设置为以宽度作为缩放",{"2":{"560":1}}],["且开启纹理缓存后",{"2":{"451":1}}],["且url包含自动缓存路径标识符的文件",{"2":{"451":1}}],["且对性能有较大影响",{"2":{"404":1}}],["且程序未捕捉异常也有详细堆栈",{"2":{"404":1}}],["且引擎还会增加额外的底层异常检查",{"2":{"402":1}}],["且",{"2":{"383":2,"649":1,"655":4}}],["且请求了不同版本的资源时报错",{"2":{"49":1}}],["降级为使用离屏canvas渲染进度的方式",{"2":{"814":1}}],["降幅达到",{"2":{"383":2}}],["降低了游戏前期的发烫情况",{"2":{"867":1}}],["降低总面数",{"2":{"670":1}}],["降低cpu消耗",{"0":{"638":1}}],["降低小游戏内存使用",{"0":{"637":1}}],["降低分辨率后可降低50",{"2":{"601":1}}],["降低版本更新时的流量消耗",{"2":{"449":1}}],["降低",{"2":{"340":1}}],["降低webcontent进程内存",{"2":{"9":1}}],["统计得出",{"2":{"616":1}}],["统计的数据",{"2":{"383":2}}],["统一资源cdn路径配置",{"2":{"263":1}}],["静默更新",{"0":{"766":1}}],["静置如下图",{"2":{"383":2}}],["静音状态对长音频在切换场景后无效的问题",{"2":{"116":1}}],["改用",{"2":{"685":1}}],["改造原有tcp服务兼容wss服务",{"2":{"837":1}}],["改造最后几行即可",{"2":{"469":1}}],["改造小游戏代码",{"2":{"469":1}}],["改动详情可参考源代码",{"2":{"382":1}}],["改为false可盖住黑屏",{"2":{"814":1}}],["改为",{"2":{"382":1,"836":1}}],["来区分不同的小游戏包",{"2":{"871":1}}],["来收集信息",{"2":{"868":1}}],["来管理unityperdraw",{"2":{"663":1}}],["来开发",{"2":{"558":1}}],["来决定是否直接使用微信定制的版本",{"2":{"384":1}}],["来做条件编译",{"2":{"382":1}}],["来自定义剔除",{"2":{"353":1}}],["影响该步骤包括",{"2":{"843":1}}],["影响游戏的呈现速度因素中如首资源包的下载往往占比较大",{"2":{"474":1}}],["影响异常错误的导出选项",{"0":{"401":1},"1":{"402":1,"403":1,"404":1}}],["影响",{"2":{"382":1}}],["影响安卓帧率",{"2":{"193":1}}],["函数堆栈是不可读的函数id",{"2":{"397":1}}],["函数",{"2":{"382":4,"744":1}}],["替代",{"2":{"382":1}}],["替换成通过",{"2":{"550":1}}],["替换加载图片",{"2":{"372":1}}],["替换unity",{"2":{"86":1}}],["运行发烫的小游戏",{"2":{"940":1}}],["运行一段时间后设备温度持续上升",{"2":{"935":1}}],["运行模式是无",{"2":{"935":1}}],["运行时配置",{"0":{"848":1},"1":{"849":1,"850":1}}],["运行时unityloader将根据列表内容在网络空闲期下载",{"2":{"846":1}}],["运行时loadfromfile",{"2":{"799":1}}],["运行时application",{"2":{"748":1}}],["运行时需进行编译执行",{"2":{"578":1}}],["运行阶段",{"2":{"623":1,"737":1}}],["运行",{"2":{"617":1}}],["运行日志或小游戏云测试获取性能数据",{"2":{"614":1}}],["运行中的这种行为会造成明显的帧率卡顿问题",{"2":{"602":1}}],["运行环境以cr识别+随机点击",{"2":{"594":1}}],["运行性能",{"0":{"615":1},"2":{"611":1,"619":1,"620":1,"626":1,"628":1,"629":1,"967":1}}],["运行性能会极大影响可承载的游戏内容玩法",{"2":{"586":1}}],["运行性能概述",{"0":{"586":1},"1":{"587":1,"588":1,"589":1}}],["运行性能及调优",{"0":{"484":1}}],["运行在浏览器环境",{"2":{"565":1}}],["运行的入口文件",{"2":{"519":1}}],["运行提示大量shader编译错误",{"0":{"428":1}}],["运行报错",{"2":{"252":1,"259":1}}],["运动向量或运动模糊",{"2":{"382":1}}],["屏幕适配",{"0":{"931":1},"1":{"932":1,"933":1},"2":{"479":1,"967":1}}],["屏幕空间阴影",{"2":{"381":1}}],["屏蔽了",{"2":{"382":1}}],["细节纹理",{"2":{"382":1}}],["镂空功能",{"2":{"382":1}}],["镂空",{"2":{"382":1}}],["级联数也是建议",{"2":{"667":1}}],["级的",{"2":{"382":1}}],["级",{"2":{"382":1,"667":1}}],["会出现如下界面",{"2":{"962":1}}],["会出现闪烁问题",{"0":{"950":1},"2":{"934":1}}],["会出现画面模糊的情况",{"2":{"933":1}}],["会出现绘制不正确",{"2":{"928":1}}],["会出现插件无法正常更新或安装",{"2":{"894":1}}],["会先跳到前面的等待分包界面",{"2":{"879":1}}],["会转为按函数粒度按需加载",{"2":{"866":1}}],["会不会最终跑到所有函数都收集的情况",{"0":{"888":1},"2":{"864":1}}],["会按照列表顺序发起预下载",{"2":{"853":1}}],["会在引擎初始完成后继续进行",{"2":{"843":1}}],["会在导出路径下生成如下目录",{"2":{"386":1,"749":1}}],["会强制检查",{"2":{"840":1}}],["会降低性能",{"2":{"834":1,"838":1}}],["会加重这个问题",{"2":{"828":1}}],["会将首包资源存放在minigame",{"2":{"815":1}}],["会经历多次内存分配",{"2":{"803":1}}],["会浪费不少内存",{"2":{"802":1}}],["会静默更新到最新版本",{"2":{"766":1}}],["会导致app与小游戏不同的加载流程",{"2":{"799":1}}],["会导致无法更新到最新版本",{"2":{"655":1}}],["会导致无法更新",{"2":{"655":1}}],["会导致不平滑",{"2":{"439":1}}],["会大于10个",{"2":{"654":1}}],["会比较臃肿",{"2":{"588":1}}],["会声明使用开放数据域",{"2":{"557":1}}],["会调用",{"2":{"550":1}}],["会弹出浮窗告知profile文件的存储路径",{"2":{"467":1}}],["会默认多清理30mb的空间",{"2":{"460":1}}],["会携带32位长度的hash拼接到文件名末尾",{"2":{"458":1}}],["会严重影响性能",{"2":{"402":1}}],["会直接导致程序终止",{"2":{"402":1}}],["会被当作不透明物体",{"2":{"382":1}}],["会删除library",{"2":{"333":1}}],["半宽韩文字母",{"2":{"857":1}}],["半宽平假名",{"2":{"857":1}}],["半宽片假名",{"2":{"857":1}}],["半透明物体投射阴影",{"2":{"382":1}}],["半精度利用率",{"2":{"383":2}}],["半精度",{"2":{"381":1}}],["额外开销",{"2":{"382":1}}],["额外的光照信息可以烘焙到",{"2":{"667":1}}],["额外的光照",{"2":{"382":1}}],["额外的光源",{"2":{"381":1}}],["去掉了",{"2":{"382":1}}],["去掉",{"2":{"382":2}}],["去调",{"2":{"381":1}}],["裁剪掉的功能",{"2":{"384":1}}],["裁剪了",{"2":{"382":1}}],["裁剪软阴影",{"2":{"382":1}}],["裁剪支持",{"2":{"382":1}}],["裁剪",{"2":{"382":38}}],["只要用了https",{"2":{"841":1}}],["只要不要放到工程目录下即可",{"2":{"379":1}}],["只有使用到已被清理的bundle时才会一次性从磁盘完整读进内存",{"2":{"800":1}}],["只有在",{"2":{"665":1}}],["只需存储包头",{"2":{"800":1}}],["只影响开发版",{"2":{"641":1}}],["只能定期刷新纹理来实现同步开放数据域的变化",{"2":{"550":1}}],["只能从主域流向开放数据域",{"2":{"550":1}}],["只读属性",{"2":{"527":1}}],["只可通过fs接口主动删除",{"2":{"460":1}}],["只保留game",{"2":{"861":1}}],["只保留",{"2":{"382":1}}],["只支持网络url",{"2":{"814":1}}],["只支持",{"2":{"382":1}}],["只支持最基础的",{"2":{"382":1}}],["只支持一盏实时方向光",{"2":{"382":1}}],["供参考的",{"0":{"382":1},"2":{"381":2}}],["雾效",{"2":{"381":1,"382":1}}],["看首包的减少量即可",{"2":{"886":1}}],["看发烫是否有改善",{"2":{"673":1}}],["看下默认材质shader",{"2":{"668":1}}],["看到游戏界面后stop",{"2":{"469":1}}],["看是否去掉",{"2":{"381":7}}],["看工具的提示",{"2":{"338":1}}],["多半由于跨域问题导致",{"2":{"948":1}}],["多次使用onmessage时needinfo以第一个onmessage为准",{"2":{"834":1,"838":1}}],["多大的内存是合理的呢",{"2":{"564":1}}],["多线程",{"2":{"447":1,"670":2}}],["多余的",{"2":{"381":1}}],["多光源分簇渲染",{"2":{"381":1}}],["多光源管理等",{"2":{"378":1}}],["属性自己选择透明的图片即可",{"2":{"552":1}}],["属性",{"2":{"381":1,"663":1}}],["材质shader",{"2":{"668":1}}],["材质和shader",{"0":{"668":1}}],["材质可参考",{"2":{"667":1}}],["材质比较简单",{"2":{"663":1}}],["材质",{"2":{"381":1,"382":1,"668":1}}],["光照材质尽量简单",{"2":{"667":1}}],["光照和阴影",{"0":{"667":1}}],["光照计算尤其是",{"2":{"665":1}}],["光照贴图",{"2":{"381":1}}],["光照探头",{"2":{"381":1}}],["光照分簇渲染",{"2":{"381":1}}],["圆柱状投影",{"2":{"381":1}}],["胶片颗粒",{"2":{"381":1}}],["宏关闭",{"2":{"381":1}}],["宏是",{"2":{"380":1}}],["宏",{"2":{"380":1,"381":1}}],["宏来开启的",{"2":{"380":1}}],["宏观来说你开启了cdn压缩情况下",{"2":{"361":1}}],["表示有请求会排队",{"2":{"654":1}}],["表示预下载已发起但未完成",{"2":{"649":1}}],["表示游戏的稳定运行时长",{"2":{"611":1}}],["表示",{"2":{"380":2}}],["全角中英文标点",{"2":{"857":1}}],["全角ascii",{"2":{"857":1}}],["全支持dxt",{"2":{"760":4}}],["全局设置及引用到的资源",{"2":{"725":1}}],["全局变量",{"2":{"520":1,"526":1}}],["全局宏的接口",{"2":{"380":1}}],["全双工通信改用",{"2":{"475":1}}],["全精度利用率",{"2":{"383":2}}],["全游戏工程请勿使用",{"2":{"346":1}}],["标识asset",{"2":{"775":1}}],["标记大长帧出现的位置",{"2":{"656":1}}],["标准的微信小游戏",{"2":{"935":1}}],["标准的cdn服务会支持http2协议",{"2":{"361":1}}],["标准渲染管线",{"2":{"604":1}}],["标准渲染管线在",{"2":{"579":1}}],["标签页",{"2":{"380":1}}],["脚本开发渲染管线",{"2":{"664":1}}],["脚本定制渲染管线",{"2":{"664":1}}],["脚本尝试用一些途径来确定后续的剧情发展",{"2":{"520":1}}],["脚本实现",{"2":{"517":1}}],["脚本文件",{"2":{"430":1}}],["脚本提供的",{"2":{"419":1}}],["脚本环境就会有宏wx",{"2":{"380":1}}],["脚本增加宏定义wx",{"2":{"380":1}}],["脚本",{"2":{"380":1}}],["也有开发者问道",{"2":{"839":1}}],["也在发布之后",{"2":{"766":1}}],["也可使用高性能+模式处理",{"2":{"949":1}}],["也可通过小游戏开发助手添加",{"2":{"698":1}}],["也可以引入sdk",{"2":{"933":1}}],["也可以使用http",{"2":{"839":1}}],["也可以使用",{"2":{"833":1}}],["也可以选择完整的",{"2":{"558":1}}],["也可以在生成的game",{"2":{"847":1}}],["也可以在",{"2":{"519":1}}],["也可以再用",{"2":{"381":1}}],["也不支持",{"2":{"670":1}}],["也足够",{"2":{"663":1}}],["也支持时间段内的汇总信息",{"2":{"592":1}}],["也支持从本地加载",{"2":{"379":1}}],["也就是屏幕的大小",{"2":{"932":1}}],["也就是选择之前的某个包作为参考",{"2":{"876":1}}],["也就是",{"2":{"554":1}}],["也对网络情况做了三个级别的分级",{"2":{"524":1}}],["也无效",{"2":{"402":1}}],["也无法捕捉任何异常",{"2":{"402":1}}],["也方便知道自己修改了哪些内容",{"2":{"380":1}}],["而ios上子包是按需加载的",{"2":{"886":1}}],["而高频读取资源时通过缓存完成请求",{"2":{"800":1}}],["而由于webgl的文件系统是在js内存中维护的",{"2":{"800":1}}],["而新address提供了非常好的资源管理流程",{"2":{"783":1}}],["而更为简单的做法是",{"2":{"781":1}}],["而如果不经优化的unity",{"2":{"721":1}}],["而且手机屏幕左上角为",{"2":{"932":1}}],["而且满足画质要求",{"2":{"669":1}}],["而且",{"2":{"668":1}}],["而且方便修改",{"2":{"668":1}}],["而言",{"2":{"663":1}}],["而没有调用",{"2":{"555":1}}],["而游戏启动时需要完整的",{"2":{"486":1}}],["而资源目录",{"2":{"476":1}}],["而小游戏需要做到",{"2":{"474":1}}],["而callmain会在码包下载编译完成和首包资源下载完成后就执行",{"2":{"469":1}}],["而unity大部分的ui解决方案都是延迟到下一帧才执行ui事件回调",{"2":{"442":1}}],["而mac",{"2":{"430":1}}],["而",{"2":{"380":1,"925":1}}],["而不是",{"2":{"380":1}}],["而是通过",{"2":{"380":1}}],["而加了",{"2":{"380":1}}],["而对于unity版的调用如下",{"2":{"858":1}}],["而对于其余的资源开发者最好使用按需加载的方式进行加载",{"2":{"728":1}}],["而对于重度游戏",{"2":{"685":1}}],["而对于",{"2":{"359":1}}],["接受阴影的物体要区分开",{"2":{"667":1}}],["接受",{"2":{"542":1}}],["接入",{"2":{"837":1}}],["接入流程请参考文档unity",{"2":{"738":1}}],["接入流程",{"0":{"738":1}}],["接入方式",{"0":{"517":1},"1":{"518":1,"519":1,"520":1,"521":1,"522":1,"523":1,"524":1}}],["接入微信api",{"0":{"479":1}}],["接入更多平台能力",{"2":{"470":1}}],["接下来的问题是",{"2":{"772":1}}],["接下来",{"2":{"380":1}}],["接下来需要准备条件编译宏",{"2":{"379":1}}],["接口用于加载后备",{"2":{"855":1}}],["接口",{"2":{"811":1,"850":1}}],["接口setpreloadlist",{"2":{"145":1}}],["接口setdatacdn",{"2":{"145":1}}],["接口名变更",{"2":{"87":1}}],["就可以继续点生成profile分包或者生成release分包",{"2":{"879":1}}],["就可以在",{"2":{"380":1}}],["就需要明确告诉开放数据域",{"2":{"560":1}}],["就会显得很麻烦",{"2":{"558":1}}],["就会被替换成",{"2":{"554":1}}],["就好了",{"2":{"379":1}}],["就是确定哪些异常由引擎捕捉",{"2":{"402":1}}],["就是",{"2":{"379":1}}],["甚至",{"2":{"379":1}}],["甚至无法处理的情况",{"2":{"352":1}}],["否则会导致下载浪费",{"2":{"853":1}}],["否则会自动引入官方的core",{"2":{"379":1}}],["否则下载永远不会完成",{"2":{"832":1}}],["否则您的应用程序将冻结",{"2":{"832":1}}],["否则请参考前文手动",{"2":{"757":1}}],["否则可能会有额外的api",{"2":{"668":1}}],["否则可能导致旧版本游戏的用户运行报错",{"2":{"392":1}}],["否则无法显示",{"2":{"814":1}}],["否则无法按照前文的缓存规则获得资源的唯一标识",{"2":{"461":1}}],["否则无效",{"2":{"461":1,"754":1}}],["否则遵循兜底策略",{"2":{"359":1}}],["顺序不能反",{"2":{"379":1}}],["再使用水印插件对分包后的wasm代码打水印",{"2":{"957":1}}],["再使用同版本的压缩纹理工具完成后续操作",{"2":{"348":1}}],["再打开分包",{"2":{"896":1}}],["再进行收集",{"2":{"889":1}}],["再多跑几次收集",{"2":{"879":1}}],["再异步加载剩下的分包",{"2":{"866":1}}],["再编译",{"2":{"866":1}}],["再不支持使用微信系统字体时",{"2":{"854":1}}],["再调整到游戏中合适的位置",{"2":{"552":1}}],["再执行写入",{"2":{"457":1}}],["再次点击",{"2":{"379":1}}],["号按钮",{"2":{"379":2}}],["+=",{"2":{"781":1,"782":1,"785":1,"836":4}}],["+webgl为核心的技术方案",{"2":{"586":1}}],["+",{"0":{"878":1},"2":{"379":2,"388":2,"570":2,"577":14,"605":1,"681":3,"692":1,"797":1,"798":4,"800":2,"834":3,"838":2,"864":1}}],["稍等一会",{"2":{"379":1}}],["带有吸引力的游戏玩法视频",{"0":{"956":1}}],["带圈或括号的字母数字",{"2":{"857":1}}],["带你探索不一样的魔幻体验",{"2":{"700":1}}],["带上广告相关自定义参数",{"2":{"680":1}}],["带上相关query",{"2":{"561":1}}],["带的版本号不一样",{"2":{"379":1}}],["带datafilesubprefix时ios首包资源下载bug",{"2":{"200":1}}],["配套unity",{"2":{"379":1}}],["配置方式",{"0":{"844":1},"1":{"845":1,"846":1,"847":1,"848":1,"849":1,"850":1}}],["配置unity",{"0":{"808":1},"1":{"809":1,"810":1,"811":1,"812":1,"813":1,"814":1,"815":1,"816":1,"817":1,"818":1,"819":1,"820":1}}],["配置首包资源加载路径",{"2":{"755":1}}],["配置加载与协议解析",{"0":{"596":1}}],["配置外显进度条",{"2":{"523":1}}],["配置本地剧本路径",{"2":{"519":1}}],["配置工作需要在该回调中使用",{"2":{"519":1}}],["配置启动剧情",{"0":{"519":1}}],["配置解析操作",{"2":{"469":1}}],["配置到不自动缓存文件类型中的文件",{"2":{"465":1}}],["配置到预下载列表的文件",{"2":{"451":1}}],["配置错误",{"2":{"362":1}}],["配置项中",{"2":{"347":1}}],["配置项支持列表",{"2":{"346":1}}],["配置顺序调整",{"2":{"263":1}}],["两种系统环境下",{"2":{"953":1}}],["两个场景都使用同样资源是否产生冗余",{"2":{"781":1}}],["两个子文件夹",{"2":{"379":1}}],["两者并行",{"2":{"716":1}}],["两者在实际使用时并不能简单以语言算力对比",{"2":{"588":1}}],["两者都填时",{"2":{"375":1,"377":1,"814":1}}],["右上方",{"2":{"692":1}}],["右上角打开调试",{"2":{"949":1}}],["右上角菜单",{"2":{"397":1,"463":1}}],["右上角",{"2":{"329":1,"410":1}}],["右键审查元素或者按f12即可打开控制台界面",{"2":{"467":1}}],["右小角有",{"2":{"379":1}}],["列表会有",{"2":{"379":1}}],["列表总览",{"2":{"333":1}}],["一款开源的资源查看工具",{"2":{"732":1}}],["一款独具创新的魔幻三消策略小游戏",{"2":{"700":1}}],["一款代码",{"2":{"577":1}}],["一个用于启动加载",{"2":{"866":1}}],["一个用于启动加载另一个将被延迟加载",{"2":{"486":1}}],["一个广告类型可以投放不同素材",{"2":{"680":1}}],["一个广告位可以投放不同类型的广告",{"2":{"680":1}}],["一种推荐的配置",{"2":{"534":1}}],["一种解决办法",{"2":{"430":1}}],["一些应用场景反而不如js轻量",{"2":{"588":1}}],["一些游戏前期的资源已经不需要再被使用",{"2":{"460":1}}],["一些功能",{"2":{"381":1}}],["一",{"0":{"450":1,"564":1,"586":1,"631":1,"678":1,"719":1,"737":1,"746":1,"772":1,"796":1,"806":1},"1":{"587":1,"588":1,"589":1,"720":1,"721":1,"797":1,"798":1},"2":{"448":1}}],["一旦命中异常即使",{"2":{"402":1}}],["一般先尝试关闭分包",{"2":{"896":1}}],["一般就是没问题的",{"2":{"889":1}}],["一般就主",{"2":{"672":1}}],["一般ios高性能模式才有内存使用瓶颈",{"2":{"886":1}}],["一般分包后wasm首包可以控制在原包的1",{"2":{"886":1}}],["一般首包函数有整包个数的",{"2":{"884":1}}],["一般跑完这两个步骤首包函数占整包函数个数的30",{"2":{"878":1}}],["一般需要android和ios单独收集",{"2":{"878":1}}],["一般小游戏的",{"2":{"866":1}}],["一般都是",{"2":{"670":1,"744":1}}],["一般考虑效果",{"2":{"669":1}}],["一般涉及到坐标值",{"2":{"668":1}}],["一般是为了实现遮罩等效果用的",{"2":{"668":1}}],["一般是通过",{"2":{"550":1}}],["一般建议只用一盏方向光",{"2":{"667":1}}],["一般来说",{"2":{"661":1}}],["一般大小较大",{"2":{"655":1}}],["一般重启一下",{"2":{"379":1}}],["一般不需要手动更新",{"2":{"894":1}}],["一般不需要访问纹理像素",{"2":{"334":1}}],["一般不更换",{"2":{"375":1}}],["一般不修改",{"2":{"375":1}}],["一栏会看到core",{"2":{"379":1}}],["一栏显示的是",{"2":{"379":1}}],["窗口使用sql进行数据统计和分析",{"2":{"826":1}}],["窗口的",{"2":{"384":1}}],["窗口选择",{"2":{"380":1}}],["窗口找到",{"2":{"379":1}}],["窗口",{"2":{"379":4}}],["菜单选择",{"2":{"380":1}}],["菜单",{"2":{"379":1}}],["菜单栏",{"2":{"331":1,"692":1,"895":1,"898":1}}],["点三次下方的",{"2":{"949":1}}],["点启用代码分包",{"2":{"871":1}}],["点开",{"2":{"379":1}}],["点击关闭水印",{"2":{"961":1}}],["点击关闭代码分包即可",{"2":{"880":1}}],["点击上传按钮后",{"2":{"961":1}}],["点击显示水印插件面板",{"2":{"961":1}}],["点击开通高性能模式",{"2":{"940":1}}],["点击开发者工具的预览",{"2":{"878":1}}],["点击进入",{"2":{"940":1}}],["点击进入详情页",{"2":{"895":1}}],["点击获取",{"2":{"895":1}}],["点击安装",{"2":{"895":1}}],["点击后即可进入插件页",{"2":{"872":1}}],["点击性能面板左上角的",{"2":{"823":1}}],["点击预览",{"2":{"751":1}}],["点击录制按钮",{"2":{"660":1}}],["点击调试器",{"2":{"660":1}}],["点击导出webgl并转换为小游戏按钮",{"2":{"498":1,"748":1}}],["点击屏幕触发真正的开始游戏逻辑",{"2":{"469":1}}],["点击load导入步骤2的profile文件",{"2":{"467":1}}],["点击右上角菜单",{"2":{"467":1}}],["点击vconsole打开日志面板",{"2":{"397":1,"463":1}}],["点击+号",{"2":{"380":1}}],["点击左上角",{"2":{"379":1}}],["点击",{"2":{"338":1,"349":1,"498":2,"748":1,"781":1}}],["还是",{"0":{"663":1,"665":1}}],["还可以根据项目类型或项目需要简化或去掉",{"2":{"381":1}}],["还会存入内存中的unitycache",{"2":{"802":1}}],["还会启用shader",{"2":{"380":1}}],["还会安装其他依赖包",{"2":{"379":1}}],["还有",{"2":{"380":1}}],["还要对渲染管线有一定了解",{"2":{"378":1}}],["还原时",{"2":{"333":1}}],["相同md5的小游戏包会复用同一份分包结果",{"2":{"871":1}}],["相同参数情况下",{"2":{"370":1}}],["相对于app常用的loadfromfile",{"2":{"803":1}}],["相对于assetsbundles的优势",{"0":{"775":1}}],["相对于原生app",{"2":{"631":1}}],["相对于用户反馈日志",{"2":{"511":1}}],["相对而言",{"2":{"564":1}}],["相当于opengles2",{"2":{"447":1}}],["相机缩放会引入额外的",{"2":{"382":1}}],["相关代码",{"2":{"668":1}}],["相关下载",{"2":{"473":1}}],["相关手册",{"2":{"471":1,"473":1,"474":1,"475":1,"476":1,"477":1,"479":1,"480":1,"482":1,"483":1,"484":1,"485":1,"486":1,"487":1,"685":1}}],["相关配置",{"0":{"453":1},"1":{"454":1,"455":1,"456":1,"457":1,"458":1,"459":1,"460":1},"2":{"448":1}}],["相关",{"0":{"671":1,"743":1},"1":{"744":1},"2":{"381":1}}],["相关功能",{"2":{"381":1}}],["相关pass",{"2":{"381":1,"382":1}}],["相关的",{"2":{"379":1}}],["相关的编程知识",{"2":{"378":1}}],["和开发者工具却可以下载则参考",{"2":{"949":1}}],["和函数个数相关",{"2":{"897":1}}],["和lauxlib",{"2":{"828":1}}],["和志同道合的伙伴携手闯仗剑走天涯",{"2":{"708":1}}],["和阴影都是关闭的",{"2":{"667":1}}],["和检测完成时两个结果",{"2":{"647":1}}],["和",{"2":{"378":1,"379":9,"380":3,"381":1,"382":10,"384":1,"606":1,"616":1,"663":2,"667":1,"668":1,"670":1,"744":1,"777":1,"838":1,"883":1}}],["和微信小游戏大部分后端服务可以直接复用",{"2":{"337":1}}],["那就还要继续收集+生成分包",{"2":{"881":1}}],["那是最好",{"2":{"672":1}}],["那也可以用",{"2":{"668":1}}],["那会方便很多",{"2":{"380":1}}],["那么主场景",{"2":{"781":1}}],["那么可以尝试设置",{"2":{"673":1}}],["那么可以通过",{"2":{"670":1}}],["那么可通过以下两种方法之一来获得可读函数名",{"2":{"397":1}}],["那么就选择",{"2":{"669":1}}],["那么用投射平面阴影的方式来表现阴影",{"2":{"667":1}}],["那么尽量用烘焙",{"2":{"667":1}}],["那么选择了",{"2":{"665":1}}],["那么必须要用",{"2":{"663":1}}],["那么这里的",{"2":{"560":1}}],["那么",{"2":{"461":1,"562":1,"564":1,"663":1,"671":1,"772":1,"781":2,"782":1}}],["那么需要一个手段来区分资源版本",{"2":{"457":1}}],["那么应该是使用了定制",{"2":{"384":1}}],["那么渲染结果基本一致的",{"2":{"384":1}}],["那么在",{"2":{"380":1}}],["那么只会影响到",{"2":{"380":1}}],["那么不要使用此选项",{"2":{"329":1}}],["那些用不到的功能在运行时可能也会有性能开销",{"2":{"378":1}}],["诸如延迟渲染",{"2":{"378":1}}],["管线一般而言",{"2":{"381":1}}],["管线除了具备",{"2":{"378":1}}],["管线基础上",{"2":{"378":1}}],["管线",{"0":{"378":1,"381":1},"1":{"379":1,"380":1,"381":1,"382":2,"383":2,"384":1,"385":1},"2":{"378":2,"380":1,"382":1,"664":1,"967":1}}],["高峰用于",{"2":{"938":1}}],["高分辨屏下模糊问题",{"0":{"933":1}}],["高清渲染管线",{"2":{"664":1}}],["高档机",{"2":{"628":2,"629":2}}],["高档",{"2":{"610":1,"625":1}}],["高度适配",{"2":{"377":1}}],["高性能+",{"2":{"967":1}}],["高性能+模式开创新地在保留游戏独立进程的基础上将渲染重新挪回了微信进程",{"2":{"936":1}}],["高性能+模式有更好的兼容性",{"2":{"927":1}}],["高性能+模式下",{"2":{"4":1}}],["高性能与高性能+模式",{"0":{"934":1},"1":{"935":1,"936":1,"937":1,"938":1,"939":1,"940":1,"941":1,"942":1,"943":1,"944":1,"945":1,"946":1,"947":1,"948":1,"949":1,"950":1,"951":1,"952":1,"953":1}}],["高性能模式虽然能提运行算力",{"2":{"952":1}}],["高性能模式提示资源下载失败等网络问题",{"2":{"946":1}}],["高性能模式下",{"2":{"942":1,"943":1,"946":1}}],["高性能模式下ios无法加载",{"0":{"435":1}}],["高性能模式能较快回落",{"2":{"938":1}}],["高性能模式存在",{"2":{"938":1}}],["高性能模式在长期执行过程中",{"2":{"938":1}}],["高性能模式与安卓性能对比如何",{"0":{"953":1},"2":{"934":1}}],["高性能模式限制",{"0":{"941":1},"1":{"942":1,"943":1},"2":{"934":1}}],["高性能模式的子包代码也会占用大量内存",{"2":{"890":1}}],["高性能模式由于加载子包的实现不同",{"2":{"889":1}}],["高性能模式则是必须的",{"2":{"883":1}}],["高性能模式出现",{"0":{"891":1},"2":{"864":1}}],["高性能模式代码分包后内存反而变得很高",{"0":{"890":1},"2":{"864":1}}],["高性能模式收集很卡",{"0":{"889":1},"2":{"864":1}}],["高性能模式",{"2":{"476":1,"567":1,"883":1}}],["高性能模式http网络切换为小游戏接口",{"2":{"131":1}}],["天下我有",{"2":{"377":1}}],["下由于子包可以全量加载",{"2":{"883":1}}],["下图给出一种推荐的做法",{"2":{"520":1}}],["下文将引导开发者如何去根据webassembly找到对应的游戏工程源码所在位置",{"2":{"494":1}}],["下文将介绍每一个阶段的工作",{"2":{"470":1}}],["下的游戏运行效率可前往",{"2":{"476":1}}],["下表数据均为development模式下数据",{"2":{"468":1}}],["下表为针对unity",{"2":{"468":1}}],["下降到",{"2":{"383":2}}],["下面简单分析流程",{"2":{"468":1}}],["下面实验均采用unity",{"2":{"468":1}}],["下面介绍如何通过在小游戏下通过profile的方式对小游戏首场景耗时进行针对性优化",{"2":{"466":1}}],["下面是一个",{"2":{"381":1}}],["下面根据配置介绍两种加载效果的实现",{"2":{"375":1}}],["下",{"2":{"380":1,"583":1}}],["下一步可以在本地的包定制",{"2":{"379":1}}],["下载中",{"2":{"961":1}}],["下载资源无问题",{"2":{"946":1}}],["下载stable版本微信开发者工具",{"2":{"894":1}}],["下载完成",{"2":{"832":1}}],["下载更新全量资源",{"2":{"799":1}}],["下载wxassetbundleprovider",{"2":{"777":1}}],["下载地址请查阅",{"2":{"757":1}}],["下载地址请查阅推荐引擎版本",{"2":{"572":1}}],["下载小游戏开发者工具",{"2":{"751":1}}],["下载代码分包",{"2":{"716":1}}],["下载unitysdk",{"2":{"694":1}}],["下载量",{"2":{"612":1,"627":1}}],["下载",{"2":{"497":1,"716":1}}],["下载可被识别的压缩纹理",{"2":{"340":1}}],["下载路径命中标识符时会自动缓存本次下载文件",{"2":{"268":1}}],["控制音效数量",{"2":{"582":1}}],["控制icon样式",{"2":{"375":1}}],["控制是否清理webgl",{"2":{"212":1}}],["文档总览",{"0":{"967":1}}],["文档为使用unity",{"2":{"698":1}}],["文档可查看启动场景上报分析",{"2":{"681":1}}],["文档",{"2":{"488":1}}],["文本输入框点击无法输入",{"0":{"434":1}}],["文字样式",{"2":{"375":1}}],["文件里",{"2":{"866":1}}],["文件数量应控制在10个以内",{"2":{"853":1}}],["文件一般会自动生成在",{"2":{"744":1}}],["文件一起传给工具处理",{"2":{"744":1}}],["文件不存在或读取失败则自动放弃启动剧情",{"2":{"519":1}}],["文件根据游戏逻辑的主次内容分为",{"2":{"486":1}}],["文件才可以运行",{"2":{"486":1}}],["文件中",{"2":{"486":1}}],["文件名需要带上hash",{"2":{"465":1}}],["文件粒度缓存",{"2":{"449":1}}],["文件api",{"2":{"447":1}}],["文件系统",{"2":{"441":2}}],["文件存储将随之被删除",{"2":{"423":1}}],["文件非",{"2":{"384":1}}],["文件后",{"2":{"364":1}}],["文件路径",{"2":{"362":1}}],["文件路径通常为",{"2":{"329":1}}],["文件的",{"2":{"360":1}}],["文件",{"0":{"345":1},"1":{"346":1,"347":1},"2":{"345":1,"364":1,"400":1,"486":1,"519":1,"863":1,"893":1}}],["文件夹下的代码在开放数据域初始化之后才能够执行",{"2":{"554":1}}],["文件夹中的脚本",{"2":{"525":1}}],["文件夹",{"2":{"338":1,"379":1}}],["文件缓存等",{"2":{"820":1}}],["文件缓存与规则判定效率优化",{"2":{"151":1}}],["文件缓存清理逻辑优化",{"2":{"134":1}}],["每种机型测试3组数据再取平均",{"2":{"615":1,"626":1}}],["每项指标有三个数值",{"2":{"570":1}}],["每次生成会当前的分包version会加1",{"2":{"879":1}}],["每次点生成时",{"2":{"879":1}}],["每次收集发现新增函数趋于稳定之后",{"2":{"879":1}}],["每次发新版本更换cdn路径",{"2":{"392":1}}],["每次修复时将当前所要修复资源的importer覆盖写入到library",{"2":{"333":1}}],["每个文案展示时间",{"2":{"375":1,"377":1,"814":1}}],["正式上线必须使用https",{"2":{"839":1}}],["正式上线版本请务必关闭profiling",{"2":{"399":1}}],["正在打水印",{"2":{"961":1}}],["正在预下载数量",{"2":{"648":1}}],["正在加载资源",{"2":{"375":1,"814":1}}],["正常",{"2":{"500":1}}],["正常调用api即可",{"2":{"450":1}}],["正常情况下对内容进行安全校验的逻辑应该是内容校验通过+内容存储到后端在同一个云函数中实现",{"2":{"338":1}}],["正交投影相机需要注意",{"2":{"382":1}}],["首页能力地图模块",{"2":{"940":1}}],["首包函数个数至少要有原始包函数总数的30",{"2":{"881":1}}],["首包资源相对cdn地址的存放目录",{"2":{"810":1}}],["首包资源中确保只包含轻量的首屏以及依赖资源",{"2":{"783":1}}],["首包资源应该只包含首屏所需资源",{"2":{"779":1}}],["首包资源量不超过5m",{"2":{"772":1}}],["首包资源或资源分包",{"2":{"717":1}}],["首包资源是否通过小游戏分包加载",{"2":{"682":1}}],["首包资源读取",{"2":{"682":1}}],["首包资源下载",{"2":{"682":1,"723":1}}],["首包资源",{"2":{"627":1,"678":1,"725":1}}],["首包资源data文件含有metadata",{"2":{"500":1}}],["首包资源加载方式",{"0":{"815":1},"1":{"816":1,"817":1},"2":{"388":1,"748":1,"754":1}}],["首屏资源需要注意",{"2":{"779":1}}],["首资源放在小游戏代码包内",{"2":{"748":1}}],["首资源所在http或cdn地址",{"2":{"748":1}}],["首资源包处理",{"2":{"685":1}}],["首资源包未开启服务器压缩",{"2":{"646":1}}],["首资源包较大",{"2":{"646":1}}],["首资源包是否开启服务器压缩",{"2":{"645":1}}],["首资源包大小",{"2":{"645":1}}],["首资源包下载与体积",{"0":{"725":1},"2":{"646":2}}],["首资源包下载耗时",{"2":{"645":1}}],["首资源包下载",{"2":{"628":1,"629":1}}],["首资源包和assetbundle都不应使用文件cache",{"2":{"581":1}}],["首资源包和assetbundle自带的cache机制都会使用emscripten使用文件系统",{"2":{"581":1}}],["首资源包永远占用内存且无法释放",{"2":{"581":1}}],["首资源包与assetbundle内存",{"0":{"581":1}}],["首资源包有非常高的压缩率",{"2":{"391":1}}],["首资源包即01367b188873c923",{"2":{"388":1}}],["首资源包",{"0":{"388":1},"2":{"449":1,"611":1,"612":1,"625":1,"717":1}}],["首资源包优化",{"2":{"353":1}}],["首资源包优化说明",{"0":{"353":1}}],["首资源包校验兼容微信纹理压缩工具",{"2":{"60":1}}],["首资源包压缩后在pc上运行的基础库版本限制调整",{"2":{"53":1}}],["首个请求开始时间",{"2":{"654":1}}],["首帧逻辑优化",{"0":{"482":1}}],["首场景awake",{"2":{"634":1}}],["首场景加载完成",{"2":{"525":1}}],["首场景初始化",{"2":{"468":1}}],["首场景启动优化的并不是一个简单的步骤就可以完全优化",{"2":{"482":1}}],["首场景启动优化",{"0":{"466":1,"482":1},"1":{"467":1,"468":1,"469":1},"2":{"482":1,"634":1,"730":1,"967":1}}],["首先排查项目是否已经是内存优化版本的分包",{"2":{"897":1}}],["首先排查传进来的参数是否符合预期",{"2":{"562":1}}],["首先确认是否为stable版本开发者工具",{"2":{"895":1}}],["首先",{"2":{"828":1}}],["首先打开",{"2":{"380":1}}],["首先将官方的",{"2":{"379":1}}],["首先需要",{"2":{"378":1}}],["首次从网络下载",{"2":{"855":1}}],["首次下载或更新首资源包时",{"2":{"725":1}}],["首次update不要包含过重逻辑",{"2":{"634":1}}],["首次拉取代码分包",{"0":{"412":1}}],["首次启动时提示文案",{"2":{"375":1,"377":1,"814":1}}],["首次加载请耐心等待",{"2":{"375":1,"814":1}}],["尺寸相对设计宽高",{"2":{"375":1}}],["缩放模式",{"2":{"375":1}}],["单帧耗时",{"2":{"657":1}}],["单帧内瞬间的内存使用非常容易造成crash",{"2":{"580":1}}],["单个包体最好不超过2mb",{"2":{"635":1}}],["单个请求文件最大不超过100mb",{"2":{"391":1}}],["单位ms",{"2":{"645":1}}],["单位mb",{"2":{"453":1}}],["单位bytes",{"2":{"453":1,"461":1,"645":2}}],["单位px",{"2":{"375":2}}],["单独提供wx",{"2":{"248":1}}],["即minigame",{"2":{"886":1}}],["即无需重复收集",{"2":{"876":1}}],["即不运行游戏逻辑",{"2":{"861":1}}],["即为预下载",{"2":{"852":1}}],["即性能面板中的dynamicmemory",{"2":{"822":1}}],["即总预下载大小超过20mb",{"2":{"649":1}}],["即预下载列表数大于15",{"2":{"649":1}}],["即导出时未配置预下载列表",{"2":{"649":1}}],["即未压缩的首资源包超过15mb",{"2":{"646":1}}],["即callmain",{"2":{"641":1}}],["即开即用",{"2":{"631":1,"720":1}}],["即js运行效率的150",{"2":{"588":1}}],["即让",{"2":{"552":1}}],["即点即玩",{"2":{"474":1,"684":1}}],["即webgl",{"2":{"449":1}}],["即wasm",{"2":{"449":1}}],["即使开发者用的",{"2":{"384":1}}],["即加载动画默认播放时间",{"2":{"375":1,"377":1,"814":1}}],["即可测试小游戏是否正常运行",{"2":{"961":1}}],["即可完成sdk导入",{"2":{"692":1}}],["即可看到相关性能数据",{"2":{"569":1}}],["即可看到所有进程的cpu与内存情况",{"2":{"568":1}}],["即可正常使用",{"2":{"417":1}}],["即可",{"2":{"364":1,"384":1}}],["加上",{"2":{"674":1}}],["加载方式在转换工具导出时就确定好了",{"2":{"815":1}}],["加载方式取决于导出选项中的首包资源加载方式",{"2":{"388":1}}],["加载文案过长时可设置",{"2":{"814":1}}],["加载文案及样式",{"2":{"372":1,"487":1}}],["加载bundle后内存增加了5403162字节",{"2":{"802":1}}],["加载的bundle文件大小为5403162字节",{"2":{"802":1}}],["加载速度和包体大小更均衡",{"2":{"797":1}}],["加载和内存优化",{"2":{"795":1}}],["加载代码改写成",{"2":{"789":1}}],["加载完成回调",{"2":{"782":2,"789":1}}],["加载你指定的内容",{"2":{"774":1}}],["加载阶段视频url",{"2":{"748":1,"754":1}}],["加载阶段循环展示的文案",{"2":{"375":1,"377":1,"814":1}}],["加载效率低",{"2":{"685":1}}],["加载子包耗时",{"2":{"651":1}}],["加载分包造成的卡顿时长",{"2":{"650":1}}],["加载时间",{"2":{"513":1}}],["加载过程中是存在cpu处理密集而",{"2":{"483":1}}],["加载",{"2":{"388":1}}],["加载进度条宽度",{"2":{"376":1,"755":1,"813":1,"814":1}}],["加载视频",{"2":{"375":1}}],["加载页的素材配置",{"2":{"375":1}}],["加载页配置项",{"2":{"375":1}}],["加快二次启动速度",{"2":{"819":1}}],["加快游戏启动速度",{"0":{"634":1}}],["加快游戏运行进度",{"2":{"340":1}}],["加快转换速度",{"2":{"153":1}}],["铺满全屏呈现",{"2":{"372":1}}],["例子",{"2":{"368":1}}],["例如预下载发起和命中",{"2":{"820":1}}],["例如",{"2":{"87":1,"381":1,"382":1,"384":1,"460":1,"461":1,"669":1}}],["已完成",{"2":{"961":1}}],["已完成请求数",{"2":{"654":1}}],["已添加水印的wasm游戏",{"2":{"958":1}}],["已知iphone7p及以下机型需要进一步限制instance",{"2":{"928":1}}],["已知兼容问题",{"0":{"927":1},"1":{"928":1,"929":1}}],["已支持webgl2",{"2":{"926":1}}],["已支持",{"2":{"868":1}}],["已验证小版本",{"2":{"760":1}}],["已验证unity版本",{"2":{"496":1}}],["已经有",{"2":{"667":1}}],["已经是一个比较功能完备的工程",{"2":{"559":1}}],["已下载完成请求详细信息",{"2":{"654":1}}],["已发起但未完成的下载任务",{"2":{"843":1}}],["已发起请求数",{"2":{"654":1}}],["已发起预下载",{"2":{"649":1}}],["已预下载完成大小",{"2":{"648":1}}],["已预下载完成大小字符串表示",{"2":{"648":1}}],["已预下载完成数量",{"2":{"648":1}}],["已被业务使用",{"2":{"570":1}}],["已测试easytouch",{"2":{"427":1}}],["已生成资源仍然生成并覆盖",{"2":{"368":1}}],["已开启mipmap",{"2":{"333":1}}],["独立线程",{"2":{"515":1}}],["独立ab包处理后的输出目录",{"2":{"368":1}}],["独立域插件版本升级为1",{"2":{"308":1,"312":1,"315":1}}],["独立域插件版本更新为1",{"2":{"295":1}}],["独立域插件版本更新到1",{"2":{"237":1}}],["独立域插件更新",{"2":{"328":1}}],["独立域插件更新为",{"2":{"326":1}}],["独立域插件更新为1",{"2":{"291":1}}],["独立域插件更新1",{"2":{"297":1}}],["形参",{"2":{"371":1}}],["形参2",{"2":{"368":1}}],["形参1",{"2":{"368":1}}],["返回如下数据",{"2":{"848":1}}],["返回false不可自动清理",{"2":{"460":1}}],["返回true可自动清理",{"2":{"460":1}}],["返回扫描到的ab包资源绝对路径",{"2":{"371":1}}],["返回执行错误时的错误提示信息",{"2":{"368":1}}],["返回执行是否成功",{"2":{"368":1}}],["返回码",{"2":{"338":1}}],["说明这里的状态更新已经中断",{"2":{"875":1}}],["说明",{"0":{"367":1,"370":1,"958":1},"2":{"368":1,"371":1}}],["工作量极大时也可结合使用",{"2":{"687":1}}],["工程联系",{"2":{"950":1}}],["工程时开发者应主要对游戏代码如首帧逻辑进行修改",{"2":{"482":1}}],["工程目录任意位置创建",{"2":{"430":1}}],["工程路径等数据均来自面板配置此处不提供相应参数传入",{"2":{"365":1}}],["工具上会显示收集到的函数个数",{"2":{"868":1}}],["工具本身会增加不少内存",{"2":{"822":1}}],["工具本身不会造成大幅度的性能降低",{"2":{"592":1}}],["工具会自动将冗余项逐个设置为addressable",{"2":{"781":1}}],["工具预览",{"2":{"751":1}}],["工具",{"2":{"685":1}}],["工具需要开启development模式",{"2":{"593":1}}],["工具使用",{"0":{"406":1},"1":{"407":1,"408":1,"409":1,"410":1,"411":1,"412":1,"413":1,"414":1,"415":1,"416":1,"417":1,"418":1,"419":1}}],["工具已经能够识别多数unity",{"2":{"353":1}}],["工具支持识别",{"2":{"347":1}}],["工具介绍",{"0":{"332":1},"1":{"333":1}}],["工具入口",{"0":{"331":1}}],["后者长期处于高",{"2":{"938":1}}],["后台",{"2":{"840":1}}],["后台配置安全域名白名单",{"2":{"476":1}}],["后缀",{"2":{"725":1}}],["后导入游戏工程中",{"2":{"694":1}}],["后多少ms截止",{"2":{"641":1}}],["后多长时间停止检测",{"2":{"641":1}}],["后才能够进行一系列的函数调用",{"2":{"525":1}}],["后续还是可能会被调到",{"2":{"884":1}}],["后续从本地文件缓存加载",{"2":{"855":1}}],["后续关卡按需加载等",{"2":{"688":1}}],["后续的",{"2":{"670":1}}],["后续展示时会被动态替换",{"2":{"552":1}}],["后续剧情不播放",{"2":{"520":1}}],["后续场景使用assetsbundle",{"2":{"497":1,"746":1}}],["后续操作",{"2":{"419":1}}],["后端",{"0":{"475":1}}],["后端服务模式",{"0":{"336":1}}],["后端服务指引",{"0":{"335":1},"1":{"336":1,"337":1,"338":1},"2":{"475":1,"967":1}}],["后处理的销不小",{"2":{"674":1}}],["后处理慎用",{"2":{"382":1}}],["后处理",{"0":{"674":1},"2":{"381":1}}],["后",{"2":{"363":1,"379":1,"565":1,"883":1}}],["却享受了不同设备按需使用纹理格式的能力",{"2":{"361":1}}],["链接次数没变",{"2":{"361":1}}],["所提供的",{"2":{"939":1}}],["所以最好选择unity",{"2":{"933":1}}],["所以最开始的收集会比较卡",{"2":{"889":1}}],["所以如果是使用了",{"2":{"883":1}}],["所以除非您将控制权交回给浏览器",{"2":{"832":1}}],["所以我们只推荐对内存要求高的重度游戏使用",{"2":{"800":1}}],["所以即使资源移动了或是重新命名了",{"2":{"774":1}}],["所以建议尽量使用表格中有实际游戏验证的版本",{"2":{"762":1}}],["所以开放数据域名要正确处理好事件处理",{"2":{"560":1}}],["所以正确的修改目录应该位于",{"2":{"525":1}}],["所以需要开发者自行对不同阶段剧情进行上报打点",{"2":{"521":1}}],["所以并不会增加额外的请求开销",{"2":{"361":1}}],["所有内存",{"2":{"826":1}}],["所有加载完成",{"2":{"681":1}}],["所有配置项均可缺省",{"2":{"523":1,"528":1}}],["所有",{"2":{"382":1}}],["所有文件",{"2":{"338":1}}],["所需配置项",{"2":{"376":1}}],["所扫描到的资源列表则为实际可被执行处理的资源",{"2":{"370":1}}],["路径规范",{"0":{"851":1}}],["路径请自行检查",{"2":{"430":1}}],["路径随意",{"2":{"379":1}}],["路径内容均变更为下载文件的存放完整路径",{"2":{"364":1}}],["路径下",{"2":{"364":1}}],["路径",{"2":{"360":1}}],["路径命中标识符时",{"2":{"268":1}}],["解压到内存",{"2":{"716":1}}],["解压并保持在内存",{"2":{"716":1}}],["解决方法",{"2":{"928":1,"929":1}}],["解决方案也很多",{"2":{"837":1}}],["解决方案",{"2":{"447":1}}],["解决方案二",{"0":{"364":1}}],["解决方案一",{"0":{"363":1}}],["解决办法是在游戏合理位置增加对wxsdk的使用即可",{"2":{"697":1}}],["解决办法是保证监听到",{"2":{"562":1}}],["解决办法",{"2":{"578":1,"579":1,"580":1,"581":1,"582":1,"947":1}}],["解释器完整路径",{"2":{"363":2}}],["解释器",{"2":{"360":1}}],["解包纹理",{"2":{"352":1}}],["渲染兼容性",{"2":{"936":1}}],["渲染分辨率",{"0":{"673":1}}],["渲染性能优化的一些建议",{"0":{"666":1},"1":{"667":1,"668":1,"669":1,"670":1,"671":1,"672":1,"673":1,"674":1,"675":1}}],["渲染特性如gpu",{"2":{"587":1}}],["渲染无法得到多线程的加速",{"2":{"587":1}}],["渲染速度更快",{"2":{"485":1}}],["渲染接口",{"2":{"447":1}}],["渲染管线",{"2":{"447":1}}],["渲染",{"2":{"359":1,"863":1}}],["倍数底层逻辑处理并不会对移动设备上的表现有差异",{"2":{"359":1}}],["非minigame版",{"2":{"870":1}}],["非压缩纹理软解",{"2":{"826":2}}],["非小游戏版",{"2":{"751":1}}],["非常建议开发者熟练使用",{"2":{"592":1}}],["非微信",{"2":{"380":1}}],["非4倍数的资源处理底层逻辑",{"0":{"359":1}}],["非pot图也支持延迟加载",{"2":{"293":1}}],["非playing状态调用wx接口的告警提示",{"2":{"166":1}}],["速度快很多",{"2":{"357":1}}],["生命周期",{"2":{"863":1}}],["生成release版分包",{"2":{"881":1}}],["生成时工具会自动从webgl",{"2":{"846":1}}],["生成微信小游戏项目时",{"2":{"807":1}}],["生成的类",{"2":{"725":1}}],["生成的",{"2":{"663":1}}],["生成的纹理太大",{"0":{"357":1}}],["生成目录下",{"2":{"498":1}}],["生产提效包",{"2":{"415":1,"460":1,"465":1,"683":1,"751":1,"940":1,"966":1}}],["生产环境",{"2":{"338":1}}],["又相比于bundle全部加载至内存时占用过多的系统内存",{"2":{"355":1}}],["分钟内",{"2":{"943":1}}],["分数越高",{"2":{"939":1}}],["分享转发",{"2":{"863":1}}],["分隔",{"2":{"754":1,"755":2}}],["分阶段耗时",{"0":{"724":1}}],["分包主要目的是优化启动加载",{"2":{"883":1}}],["分包能降低内存占用",{"2":{"883":1}}],["分包的目的主要是将启动时需要的包减小",{"2":{"886":1}}],["分包的收集",{"2":{"878":1}}],["分包的作用在于优化启动时间",{"2":{"867":1}}],["分包工具会优化函数名",{"2":{"876":1}}],["分包流程如下",{"2":{"871":1}}],["分包还有两个作用",{"2":{"867":1}}],["分包插件交互优化",{"2":{"921":1}}],["分包插件上也会更新",{"2":{"881":1}}],["分包插件按小游戏的md5",{"2":{"871":1}}],["分包插件卡住",{"0":{"896":1},"2":{"864":1}}],["分包插件安装失败",{"0":{"895":1},"2":{"864":1}}],["分包总大小比原始包大",{"0":{"886":1},"2":{"864":1}}],["分包是否是必要的",{"0":{"883":1},"2":{"864":1}}],["分包收集不足",{"2":{"652":1}}],["分包方案外",{"2":{"501":1}}],["分为引擎初始化完成",{"2":{"647":1}}],["分类",{"2":{"618":1,"863":1}}],["分配内存并未呈现",{"2":{"570":1}}],["分割",{"2":{"461":1}}],["分析小游戏启动速度",{"0":{"722":1},"1":{"723":1,"724":1,"725":1,"726":1,"727":1,"728":1,"729":1}}],["分析每个环节可能存在的流失",{"2":{"678":1}}],["分析每一帧游戏函数耗时情况",{"2":{"329":1}}],["分析场景帧",{"2":{"670":1}}],["分析网络并发和网络耗时",{"2":{"660":1}}],["分析手段",{"2":{"570":1}}],["分析调用堆栈",{"2":{"400":1}}],["分离的资源被压缩成多种格式的纹理资源在",{"2":{"485":1}}],["分离纹理后各自单独下载是否会增加下载开销",{"0":{"361":1}}],["分离出的资源将被处理成多种不同gpu所支持的纹理格式托管至cdn中",{"2":{"355":1}}],["旧系统资源改造",{"0":{"788":1}}],["旧版本使用指引请参阅",{"2":{"354":1}}],["旧",{"2":{"354":2}}],["旧api批量重命名",{"2":{"239":1}}],["勾选转换面板",{"2":{"570":1}}],["勾选的导出场景",{"2":{"388":1}}],["勾选项选中后保存即可",{"2":{"352":1}}],["勾选后可修改纹理压缩格式",{"2":{"333":1}}],["勾选后",{"2":{"333":1}}],["进无止境",{"2":{"583":2}}],["进程内存峰值",{"2":{"611":1,"625":1}}],["进程内存离1",{"2":{"584":1}}],["进程名",{"2":{"569":1}}],["进程总内存",{"0":{"567":1},"1":{"568":1,"569":1}}],["进程级别",{"2":{"566":1}}],["进度",{"2":{"542":1}}],["进度条高度",{"2":{"523":1,"528":1}}],["进度条背景颜色",{"2":{"523":1,"528":1}}],["进度条颜色",{"2":{"523":1,"528":1}}],["进度条样式",{"2":{"372":1,"375":1,"487":1}}],["进度显示",{"2":{"522":1}}],["进度的显示",{"2":{"522":1}}],["进而提升玩家的代入感与游戏的顺畅体验",{"2":{"513":1}}],["进入正式分包阶段",{"2":{"871":1}}],["进入aa的组设置修改provider如下",{"2":{"777":1}}],["进入核心玩法时",{"2":{"681":1}}],["进入原本的loading阶段",{"2":{"524":1}}],["进入关卡等关键信息",{"2":{"510":1}}],["进入配置页",{"2":{"352":1}}],["进行游游戏加载",{"2":{"967":1}}],["进行设置",{"2":{"840":1}}],["进行自查",{"2":{"839":1}}],["进行替代",{"2":{"833":1}}],["进行网络通信",{"2":{"833":1}}],["进行unity",{"2":{"737":1}}],["进行加载",{"2":{"684":1}}],["进行查看",{"2":{"683":1}}],["进行渲染而是可以选择任意第三方渲染引擎",{"2":{"560":1}}],["进行简单的魔改就能够满足需求",{"2":{"559":1}}],["进行功能反馈将会提交",{"2":{"510":1}}],["进行授权",{"2":{"498":1}}],["进行资源按需加载缩短转换周期",{"2":{"688":1}}],["进行资源按需加载将部分资源自动剥离",{"2":{"687":1}}],["进行资源按需加载",{"0":{"501":1,"795":1},"1":{"502":1,"503":1,"504":1,"505":1,"796":1,"797":1,"798":1,"799":1,"800":1,"801":1,"802":1,"803":1,"804":1},"2":{"474":2,"635":1,"685":2,"687":1,"967":3}}],["进行交互吗",{"0":{"424":1}}],["进行定制",{"2":{"384":1}}],["进行剔除",{"2":{"353":1}}],["进行校验",{"2":{"345":1}}],["进行处理",{"2":{"341":1}}],["目前还没出现这种情况",{"2":{"888":1}}],["目前还不支持",{"2":{"670":1}}],["目前我们采用了一种",{"2":{"868":1}}],["目前已发现ios",{"2":{"950":1}}],["目前已完成api列表",{"0":{"863":1}}],["目前已知一些版本无法使用",{"2":{"342":1}}],["目前由unity",{"2":{"741":1}}],["目前普通小游戏普遍启动时间为7~10s",{"2":{"721":1}}],["目前团结引擎",{"2":{"691":1}}],["目前需指定版本",{"2":{"685":1}}],["目前只支持js调用",{"2":{"682":1}}],["目前",{"2":{"665":1}}],["目前unityaudio将自动适配微信小游戏",{"2":{"565":1}}],["目前可通过git",{"2":{"506":1}}],["目前为止",{"2":{"468":1}}],["目前建议中轻度2d",{"2":{"445":1}}],["目前微信小游戏已支持fmod转换的小游戏",{"2":{"429":1}}],["目前仍处于初期测试使用",{"2":{"354":1}}],["目录下",{"2":{"777":1,"866":1}}],["目录下创建",{"2":{"695":1}}],["目录结构说明",{"0":{"695":1}}],["目录是导出产物",{"2":{"525":1}}],["目录中",{"2":{"519":1,"525":1}}],["目录中的资源上传至",{"2":{"350":1}}],["目录",{"2":{"350":1,"519":1,"557":1,"744":1,"789":1}}],["上图分别是",{"2":{"939":1}}],["上线发布时",{"2":{"943":1,"952":1}}],["上线后",{"2":{"881":1}}],["上线后的问题排查与分析",{"2":{"470":1}}],["上线前",{"2":{"881":1}}],["上线版本的网络请求必须配置安全域名",{"2":{"840":1}}],["上报当前自定义阶段错误信息",{"2":{"681":1}}],["上报自定义阶段",{"0":{"681":1}}],["上报广告信息",{"0":{"679":1},"1":{"680":1}}],["上报unity版本和转换插件版本",{"2":{"237":1}}],["上",{"2":{"583":1}}],["上述代码改写成",{"2":{"782":1}}],["上述方法之后",{"2":{"410":1}}],["上述定制的",{"2":{"384":1}}],["上述的代码除了启用了",{"2":{"380":1}}],["上传cdn",{"0":{"350":1}}],["执行都是",{"2":{"953":1}}],["执行sql",{"2":{"826":1}}],["执行渲染",{"2":{"558":1}}],["执行好友排行榜渲染",{"2":{"556":1}}],["执行缓存逻辑",{"2":{"464":1}}],["执行结束的回调函数",{"2":{"368":1}}],["执行完成后请留意控制台提示信息",{"2":{"349":1}}],["执行压缩纹理",{"0":{"349":1}}],["处理",{"2":{"716":2}}],["处理时间也会有差异",{"2":{"349":1}}],["处理资源",{"2":{"349":1,"367":1}}],["调用微信api",{"0":{"858":1},"1":{"859":1,"860":1,"861":1,"862":1,"863":1}}],["调用openprofilestats",{"2":{"823":1}}],["调用开销",{"2":{"668":1}}],["调用的malloc分配",{"2":{"565":1}}],["调用",{"2":{"554":1,"681":1}}],["调用sdk的api",{"0":{"553":1},"1":{"554":1,"555":1,"556":1}}],["调用关系链接口拉好友数据和将数据绘制到",{"2":{"550":1}}],["调用接口",{"2":{"365":1}}],["调试与异常",{"2":{"967":1}}],["调试微信开发者工具",{"2":{"898":1}}],["调试",{"2":{"820":1,"898":1}}],["调试编译选项",{"2":{"748":1,"754":1}}],["调试错误与异常处理",{"0":{"492":1},"1":{"493":1,"494":1,"495":1,"496":1,"497":1,"498":1,"499":1,"500":1}}],["调试器",{"2":{"397":1,"463":1}}],["调试结束后可再次选用全量模式",{"2":{"349":1}}],["调整屏幕移到刘海屏下面",{"2":{"932":1}}],["调整unityprofiler",{"2":{"757":1}}],["调整为unitywebrequest异步接口创建ab",{"2":{"687":1}}],["调整为从unitywebrequest下载创建ab即可",{"2":{"687":1}}],["调整为默认不打开性能面板",{"2":{"248":1}}],["调整部分api",{"2":{"228":1}}],["调整wxtouchoverride更新逻辑为lateupdate",{"2":{"149":1}}],["调整默认打开窗口宽度",{"2":{"70":1}}],["查阅快速开始",{"2":{"966":1}}],["查阅小游戏开发者文档",{"2":{"966":1}}],["查找表",{"2":{"800":1}}],["查找资源被引用关系",{"2":{"333":1}}],["查看",{"2":{"945":1}}],["查看插件调试信息",{"2":{"852":1}}],["查看小游戏日志",{"2":{"820":1}}],["查看启动耗时",{"0":{"723":1}}],["查看每帧耗时",{"2":{"660":1}}],["查看总内存时",{"2":{"567":1}}],["查看缓存日志",{"0":{"464":1},"2":{"448":1}}],["查看详细日志",{"0":{"463":1},"2":{"448":1}}],["查看分包工具是否有新收集函数",{"2":{"412":1}}],["查看识别情况",{"2":{"349":1}}],["包体积有更苛刻的要求",{"2":{"952":1}}],["包体优化",{"2":{"923":1}}],["包体瘦身",{"2":{"349":1,"367":1}}],["包方式进行分包管理",{"2":{"689":1}}],["包方式存放于磁盘本地",{"2":{"687":1}}],["包等资源按需加载的游戏",{"0":{"687":1}}],["包的异步资源管理",{"2":{"685":1}}],["包的按需加载",{"2":{"684":1}}],["包是常规的分包解决方案",{"2":{"685":1}}],["包吗",{"2":{"384":1}}],["包括开发版",{"2":{"945":1}}],["包括上线后",{"2":{"881":1}}],["包括环境光",{"2":{"667":1}}],["包括逻辑异常",{"2":{"623":1}}],["包括以下内容",{"2":{"507":1}}],["包括第三方插件",{"2":{"402":1}}],["包括",{"2":{"382":1,"558":1}}],["包有关系",{"2":{"379":1}}],["包已经完成了",{"2":{"379":1}}],["包就会被移除",{"2":{"379":1}}],["包本地化",{"2":{"379":1}}],["包",{"0":{"379":1},"2":{"378":1,"379":1,"380":1}}],["包含一定养成玩法",{"2":{"618":1}}],["包含unity",{"2":{"388":1}}],["包含以下修改",{"2":{"237":1}}],["包含重要bugfix",{"2":{"0":1,"11":1,"14":1,"17":1,"19":1,"24":1,"36":1}}],["格式渲染",{"2":{"359":1}}],["格式是",{"2":{"359":1}}],["格式",{"2":{"347":1,"349":1,"359":1}}],["格式支持",{"2":{"342":1}}],["值得注意的是",{"2":{"347":1,"520":1,"684":1}}],["是一种用于在",{"2":{"925":1}}],["是一个离屏的",{"2":{"550":1}}],["是的",{"2":{"862":1}}],["是异步的",{"2":{"832":1}}],["是因为www",{"2":{"802":1}}],["是由",{"2":{"685":1}}],["是可以尝试用压缩纹理",{"2":{"669":1}}],["是什么",{"2":{"668":1}}],["是用了",{"2":{"663":1}}],["是用于初始化剧情的回调事件",{"2":{"519":1}}],["是距离屏幕左上角的距离",{"2":{"560":2}}],["是整个游戏客户端启动的入口",{"2":{"525":1}}],["是做什么用的",{"0":{"418":1}}],["是几种选择中鲁棒性和信息提示较为均衡的",{"2":{"402":1}}],["是具体项目具体分析的",{"2":{"381":1}}],["是不同的概念",{"2":{"671":1}}],["是不一样",{"2":{"663":1}}],["是不支持使用原生套接字",{"2":{"475":1}}],["是不生效的",{"2":{"380":1}}],["是不受纹理资源高宽影响的",{"2":{"359":1}}],["是",{"2":{"378":1,"379":3,"380":1}}],["是否有跨域头",{"2":{"948":1}}],["是否有wait",{"2":{"881":1}}],["是否为",{"2":{"947":1}}],["是否callmain完成立即隐藏封面",{"2":{"814":1}}],["是否callmain完成后立即隐藏封面",{"2":{"374":1,"376":1,"813":1}}],["是否可以直接使用",{"2":{"762":1}}],["是否初始化完成立即隐藏封面",{"2":{"755":1}}],["是否ios高性能模式",{"2":{"682":1}}],["是否资源文件大部分未缓存",{"2":{"655":1}}],["是否自动缓存的资源",{"2":{"654":1}}],["是否使用代码分包",{"2":{"682":1}}],["是否使用本地缓存",{"2":{"654":1}}],["是否使用了wasm代码分包",{"2":{"645":1}}],["是否命中cdn缓存",{"2":{"654":1}}],["是否请求了settings",{"2":{"654":1}}],["是否请求了catalog",{"2":{"654":2}}],["是否在引擎初始化期间加载子包",{"2":{"651":1}}],["是否开启纹理缓存",{"2":{"755":1}}],["是否开启服务器压缩",{"2":{"654":1}}],["是否开启http2",{"2":{"654":1}}],["是否开启了服务器压缩",{"2":{"648":1,"654":1}}],["是否开启检测",{"2":{"641":1}}],["是否启用http2",{"2":{"648":1}}],["是否一直检测到游戏可交互完成",{"2":{"641":1}}],["是否代表游戏内存无问题",{"2":{"584":1}}],["是否足够",{"2":{"584":1}}],["是否接入自定义外显进度条",{"2":{"528":1}}],["是否隐藏",{"2":{"523":1,"528":1}}],["是否需要返回localinfo和remoteinfo",{"2":{"834":1,"838":1}}],["是否需要清理",{"2":{"461":1}}],["是否需要callmain结束后立即隐藏封面视频",{"2":{"375":1}}],["是否缓存纹理",{"0":{"456":1},"2":{"448":1,"453":1}}],["是否缓存纹理开关",{"2":{"206":1}}],["是否缓存业务资源",{"0":{"455":1},"2":{"448":1}}],["是否缓存规则",{"0":{"454":1},"1":{"455":1,"456":1},"2":{"448":1}}],["是否支持",{"2":{"447":1}}],["是否适用于",{"2":{"384":1}}],["是否不透明",{"2":{"382":1}}],["是否显示icon",{"2":{"375":1}}],["是多数移动设备中游戏运行的主要支持的纹理格式",{"2":{"347":1}}],["构建场景及依赖",{"2":{"716":1}}],["构建时默认打包到streamingassets目录下",{"2":{"390":1}}],["构建前的纹理格式配置说明",{"0":{"346":1}}],["构建",{"0":{"345":1,"430":1},"1":{"346":1,"347":1}}],["安全内存建议1",{"2":{"942":1}}],["安全内存峰值是1",{"2":{"584":1}}],["安全区域适配",{"0":{"932":1}}],["安全域名",{"0":{"840":1}}],["安装与使用",{"0":{"966":1},"2":{"894":1}}],["安装指南",{"0":{"692":1,"694":1},"1":{"697":1}}],["安装时选择webgl组件",{"2":{"496":1,"966":1}}],["安装包直接进行安装",{"2":{"430":1}}],["安装",{"0":{"344":1},"2":{"379":1,"869":1,"966":1}}],["安卓微信客户端8",{"2":{"915":1}}],["安卓微信客户端版本",{"2":{"855":1}}],["安卓小米10",{"2":{"468":1}}],["安卓魅族6s",{"2":{"468":1}}],["安卓左上角帧率不对",{"0":{"439":1}}],["安卓",{"2":{"380":1}}],["安卓8",{"2":{"158":1}}],["安卓3",{"2":{"35":1}}],["按函数粒度对小游戏的",{"2":{"868":1}}],["按结果配置",{"2":{"520":1}}],["按需剔除后再次profile即可验证效果",{"2":{"469":1}}],["按照我们经验",{"2":{"884":1}}],["按照lru清理出所需大小",{"2":{"461":1}}],["按照本地没有缓存来使用",{"2":{"450":1}}],["按钮的执行",{"2":{"367":1}}],["按钮",{"2":{"352":1,"379":2}}],["按设备加载",{"2":{"342":1}}],["按资源名搜索",{"2":{"333":1}}],["但由于底层虚拟机差异过大以及自身不断迭代",{"2":{"953":1}}],["但对内存",{"2":{"952":1}}],["但对于有网络存档的游戏而言",{"2":{"520":1}}],["但对于大部分微信小游戏",{"2":{"378":1}}],["但",{"2":{"949":1}}],["但网络空闲的期间",{"2":{"843":1}}],["但关闭时异常",{"2":{"839":1}}],["但小游戏包体的更新机制和app不同",{"2":{"766":1}}],["但小游戏平台不支持",{"2":{"655":1}}],["但2018缺少部分功能",{"2":{"760":1}}],["但我们并不推荐使用早期版本",{"2":{"760":1}}],["但并发数为1个",{"2":{"843":1}}],["但并非每个小版本我们都有足够的验证",{"2":{"759":1}}],["但并不是完全向后兼容",{"2":{"663":1}}],["但未使用",{"2":{"689":1}}],["但未完成",{"2":{"649":1}}],["但自定义阶段与启动加载完成需开发者主动调用接口进行上报",{"2":{"681":1}}],["但尽量不要超过250个",{"2":{"671":1}}],["但仍然是需要注意",{"2":{"670":1}}],["但有些新版本实现变更可能会导致适配问题",{"2":{"762":1}}],["但有些",{"2":{"669":1}}],["但线性颜色空间",{"2":{"665":1}}],["但建议综合cpu",{"2":{"610":1}}],["但该模式也存在更严格的内存与代码包体限制",{"2":{"935":1}}],["但该模式需要更多精力进行调优",{"2":{"589":1}}],["但该能力仍然允许开发者进行手动的进行资源选择",{"2":{"353":1}}],["但要注意移动平台散热更差",{"2":{"589":1}}],["但基本的渲染能力与原生app接近",{"2":{"587":1}}],["但依然会存在一些基本消耗",{"2":{"565":1}}],["但依赖webgl2",{"2":{"447":1}}],["但内存组成结构与上图基本一致",{"2":{"565":1}}],["但这个是受gc策略和系统进程内存优化的影响",{"2":{"897":1}}],["但这会使得代码包明显增大进而影响启动速度",{"2":{"558":1}}],["但这样定制会影响到所有平台",{"2":{"380":1}}],["但如果if",{"2":{"668":1}}],["但如果需要事件点击",{"2":{"558":1}}],["但如果是用的ab",{"2":{"390":1}}],["但只需要核心理解几个点即可",{"2":{"550":1}}],["但需要调用扩展方法wxunload",{"2":{"800":1}}],["但需要注意的是javascript",{"2":{"573":1}}],["但需要注意该部分数据使用小游戏storage",{"2":{"441":1}}],["但需要开发者上报游戏关键节点信息与异常日志",{"2":{"511":1}}],["但程序运行性能将受极大影响",{"2":{"493":1}}],["但为了能够达到更佳的游戏体验开发者应继续进行对游戏工程的调优工作",{"2":{"481":1}}],["但hash与本次写入的文件不一致",{"2":{"461":1}}],["但可使用微信小游戏wx",{"2":{"447":1}}],["但不支持wwise",{"2":{"447":1}}],["但不支持astc",{"2":{"342":1}}],["但暂无法直接使用videoplayer",{"2":{"438":1}}],["但android和微信开发者工具没问题",{"0":{"435":1}}],["但android卡在首屏",{"0":{"414":1}}],["但具体性能需自己实际评测",{"2":{"426":1}}],["但editor没问题",{"0":{"425":1}}],["但此模式必须保证游戏代码",{"2":{"402":1}}],["但必须保证游戏不使用任何异常",{"2":{"402":1}}],["但定制的做法或思路可以借鉴",{"2":{"384":1}}],["但是patch有大小限制",{"2":{"885":1}}],["但是",{"2":{"384":1}}],["但游戏内部关键帧位置仍需要开发者自行上报",{"2":{"480":1}}],["但游戏可能会存在定制启动loading的需求",{"2":{"377":1}}],["但游戏从未使用过",{"2":{"353":1}}],["但执行时提示未找到则需手动填入本机",{"2":{"360":1}}],["但仅支持2019",{"2":{"351":1}}],["但pc端不支持astc依然需要解压",{"2":{"341":1}}],["年份大版本",{"2":{"342":1}}],["等游戏第一帧渲染时隐藏",{"2":{"814":1}}],["等待第一次分包",{"2":{"871":1}}],["等待上传代码包",{"2":{"871":1}}],["等待上传文件",{"0":{"874":1},"2":{"864":1}}],["等待分包",{"0":{"877":1},"2":{"864":1}}],["等待预处理提前到选择是否增量更新的界面",{"2":{"921":1}}],["等待预处理",{"0":{"875":1},"2":{"864":1,"871":1}}],["等待更多优秀游戏作品入驻",{"2":{"514":1}}],["等待转换完成",{"2":{"498":1,"748":1}}],["等待完全解包后可进行纹理的配置操作",{"2":{"352":1}}],["等买量场景进入的玩家",{"2":{"480":1,"678":1}}],["等同于修改导出插件面板的bundle名中hash长度",{"2":{"458":1}}],["等同于修改导出插件面板的不自动缓存文件类型配置",{"2":{"455":1}}],["等函数得到完整的堆栈",{"2":{"402":1}}],["等函数与程序未捕捉异常都只有输出简要的异常信息",{"2":{"402":1}}],["等函数等与程序未捕捉异常可输出简要的异常信息",{"2":{"402":1}}],["等少数后处理",{"2":{"382":1}}],["等",{"2":{"381":1,"382":1,"663":1,"942":2}}],["等包的情况",{"2":{"379":1}}],["等文件",{"2":{"350":1}}],["等不可用",{"2":{"342":1}}],["等云函数部署完成",{"2":{"338":1}}],["内置函数替代",{"2":{"668":1}}],["内置管线",{"2":{"664":2}}],["内置内购商城等",{"2":{"618":1}}],["内的",{"2":{"554":1}}],["内分离后按渲染需要进行后续加载",{"2":{"485":1}}],["内存压力大的游戏开启此选项",{"2":{"936":1}}],["内存压力大时",{"2":{"341":1}}],["内存限制",{"0":{"942":1},"2":{"934":1}}],["内存管理",{"2":{"774":1}}],["内存crash率",{"2":{"617":1,"619":1}}],["内存crash运行时长",{"2":{"611":1,"617":1,"619":1}}],["内存异常退出分析",{"2":{"611":1}}],["内存峰值取最大值",{"2":{"615":1,"626":1}}],["内存峰值",{"2":{"611":2,"617":1,"619":1,"623":1,"625":1}}],["内存工具请查阅优化unity",{"2":{"593":1}}],["内存数据不准确",{"2":{"593":1}}],["内存与模块上报数据",{"2":{"593":1}}],["内存与oom",{"0":{"564":1}}],["内存篇",{"2":{"583":2}}],["内存优化版本未观察到内存优化",{"0":{"897":1},"2":{"864":1}}],["内存优化方案",{"0":{"577":1}}],["内存优化极为重要",{"2":{"564":1}}],["内存分配峰值",{"2":{"570":1}}],["内存查看工具",{"0":{"566":1},"1":{"567":1,"568":1,"569":1,"570":1,"571":1,"572":1,"573":1,"574":1,"575":1,"576":1,"577":1,"578":1,"579":1,"580":1,"581":1,"582":1,"583":1}}],["内存等要求并不是特别吃紧的游戏",{"2":{"502":1}}],["内存",{"2":{"484":1,"565":1,"610":1,"625":1,"628":1,"629":1}}],["内网使用微信开发者工具时需要放开这些域名的限制方可正常使用",{"2":{"443":1}}],["内网开发时",{"0":{"416":1}}],["内容打包",{"2":{"774":1}}],["内容如下",{"2":{"430":1}}],["内容含有违法违规内容",{"2":{"338":1}}],["内容正常",{"2":{"338":1}}],["内容安全检查",{"2":{"338":1}}],["移动端android",{"2":{"760":1}}],["移动端",{"2":{"384":1}}],["移动端覆盖率较广",{"2":{"341":1}}],["移动设备使用",{"2":{"349":1}}],["移除无用代码",{"2":{"913":1}}],["移除所有回调后再次onmessage可重新设置needinfo",{"2":{"834":1,"838":1}}],["移除掉官方的",{"2":{"379":1}}],["移除转换小游戏面板中游戏内存大小字段",{"2":{"324":1}}],["移除markdown插件",{"2":{"113":1}}],["移除对node",{"2":{"72":1}}],["移除不用的纹理下载api",{"2":{"60":1}}],["使其与父节点一样大",{"2":{"932":1}}],["使其可以读写到小游戏缓存目录",{"2":{"800":1}}],["使得首包可以满足大部分新玩家前几分钟的游戏进程",{"2":{"868":1}}],["使得小游戏可以先加载较小的首包进入主场景",{"2":{"866":1}}],["使得ab占用内存更小",{"2":{"341":1}}],["使用水印保护代码包安全",{"2":{"967":1}}],["使用插件",{"0":{"961":1}}],["使用高性能模式下",{"0":{"946":1,"952":1},"2":{"934":2}}],["使用高性能+模式",{"2":{"584":1}}],["使用高性能+模式将显著降低gpu内存",{"2":{"579":1}}],["使用urp",{"2":{"925":1}}],["使用unity适配提供timelog窗口或运行日志获取性能数据",{"2":{"626":1}}],["使用unity适配提供timelog窗口",{"2":{"614":1}}],["使用unity",{"0":{"661":1,"757":1},"2":{"512":1,"638":1,"658":1}}],["使用gpu",{"2":{"925":1,"928":1}}],["使用条件",{"2":{"921":1,"923":1}}],["使用示例我们会逐渐补充到demo",{"2":{"860":1}}],["使用时可以参考之",{"2":{"858":1}}],["使用如通过在线工具检测",{"2":{"841":1}}],["使用调试模式的真机环境",{"2":{"839":1}}],["使用举例",{"2":{"834":1,"838":1}}],["使用coverview需要基础库版本",{"2":{"814":1}}],["使用cdn下载首包资源",{"2":{"748":1}}],["使用loader进行游游戏加载",{"0":{"805":1},"1":{"806":1,"807":1,"808":1,"809":1,"810":1,"811":1,"812":1,"813":1,"814":1,"815":1,"816":1,"817":1,"818":1,"819":1,"820":1}}],["使用这种方式加载资源",{"2":{"789":1}}],["使用协程",{"0":{"786":1}}],["使用任何你喜欢的资源管理技术",{"2":{"774":1}}],["使用好友关系链",{"2":{"754":1}}],["使用预下载",{"2":{"748":1}}],["使用预下载功能",{"0":{"842":1},"1":{"843":1,"844":1,"845":1,"846":1,"847":1,"848":1,"849":1,"850":1,"851":1,"852":1,"853":1},"2":{"483":1,"635":1,"649":2,"967":1}}],["使用门槛更低一些",{"2":{"685":1}}],["使用转换脚本导出微信小游戏包并启动小游戏",{"2":{"661":1,"757":1}}],["使用本地缓存的个数",{"2":{"654":1}}],["使用分包工具继续迭代",{"2":{"652":1}}],["使用最佳实践检测",{"2":{"640":1}}],["使用网络模拟工具1mb",{"2":{"614":1,"626":1}}],["使用js编写需要调试的api",{"2":{"861":1}}],["使用js代码获取gpu信息",{"2":{"606":1}}],["使用javascriptprofile进行数据分析",{"2":{"329":1}}],["使用srp",{"0":{"605":1},"2":{"925":1}}],["使用symbols文件可读函数名",{"0":{"400":1}}],["使用压缩纹理",{"0":{"602":1}}],["使用工具在真机上获取profile数据以分析热点函数和性能瓶颈",{"2":{"592":1}}],["使用rgba",{"2":{"579":1}}],["使用perfdog测试",{"2":{"615":1,"626":1}}],["使用perfdog",{"2":{"584":1}}],["使用perfdog查看android版本的gl",{"2":{"584":1}}],["使用perfdog选择对应的设置",{"2":{"569":1}}],["使用profilingmemory分析内存",{"2":{"967":1}}],["使用profilingmemory内存分析",{"0":{"821":1},"1":{"822":1,"823":1,"824":1,"825":1,"826":1,"827":1,"828":1,"829":1}}],["使用profiling",{"0":{"399":1}}],["使用群排行功能需要特殊设置分享功能",{"2":{"561":1}}],["使用代码编辑工具打开unity工程中",{"2":{"519":1}}],["使用代码分包工具缩减webassembly首次下载包体",{"2":{"634":1}}],["使用代码分包工具能降低原编译代码内存50",{"2":{"578":1}}],["使用代码分包工具",{"2":{"486":1,"634":1,"646":1,"967":1}}],["使用代码分包的情况下",{"0":{"412":1}}],["使用脚本集成到自己的构建系统",{"0":{"499":1,"752":1},"1":{"753":1,"754":1,"755":1}}],["使用await",{"0":{"787":1}}],["使用addressables",{"2":{"781":1}}],["使用addressable是最佳做法",{"2":{"776":1}}],["使用addressable在开发前期就进入快速开发的阶段",{"2":{"774":1}}],["使用addressable",{"0":{"771":1},"1":{"772":1,"773":1,"774":1,"775":1,"776":1,"777":1,"778":1,"779":1,"780":1,"781":1,"782":1,"783":1,"784":1,"785":1,"786":1,"787":1,"788":1,"789":1,"790":1,"791":1,"792":1,"793":1,"794":1},"2":{"728":1,"730":1}}],["使用addressable进行资源按需加载",{"2":{"635":1}}],["使用assetsbundle",{"2":{"635":1}}],["使用assetsbundle时",{"2":{"498":1}}],["使用assetbundle",{"2":{"581":1}}],["使用android",{"0":{"329":1},"2":{"638":1,"658":1}}],["使用mac的用户需要先授权",{"2":{"498":1}}],["使用姿势为",{"2":{"467":1}}],["使用微信小游戏插件技术开发",{"2":{"806":1}}],["使用微信音频api",{"2":{"754":1}}],["使用微信开发者工具的network标签确认传输量",{"2":{"725":1}}],["使用微信开发者工具无法启动游戏",{"0":{"411":1}}],["使用微信压缩纹理工具",{"2":{"451":1}}],["使用异步等其他替代方式",{"2":{"447":1}}],["使用小程序云开发或自建服务器进行云端存储",{"2":{"441":1}}],["使用xlua等方案在webgl平台报",{"0":{"432":1}}],["使用文本方式打开即可",{"2":{"403":1}}],["使用了定制的",{"2":{"384":1}}],["使用",{"0":{"501":1,"795":1},"1":{"502":1,"503":1,"504":1,"505":1,"796":1,"797":1,"798":1,"799":1,"800":1,"801":1,"802":1,"803":1,"804":1},"2":{"382":1,"383":2,"484":2,"493":1,"502":1,"534":1,"568":1,"635":1,"668":1,"685":1,"779":2,"837":1,"939":1,"967":6}}],["使用官方",{"2":{"379":1}}],["使用说明参考loader配置",{"2":{"755":1}}],["使用说明",{"0":{"343":1},"1":{"344":1,"345":1,"346":1,"347":1,"348":1,"349":1,"350":1},"2":{"800":1}}],["使用新的",{"2":{"342":1}}],["使用建议",{"0":{"341":1}}],["使用该工具将对项目获得如下增益",{"2":{"340":1}}],["使用方式",{"0":{"832":1,"959":1},"1":{"960":1,"961":1},"2":{"329":1}}],["使用wasm代码分包后",{"2":{"650":1}}],["使用window的用户跳过这步",{"2":{"498":1}}],["使用worker做文件写入临时绕过安卓文件写入多时造成卡顿",{"2":{"187":1}}],["使用wxassetbundleprovider节省内存",{"0":{"777":1}}],["使用wx",{"2":{"86":1,"441":2,"606":1}}],["使用date",{"2":{"158":1}}],["使用node命令时同时查找默认安装路径",{"2":{"129":1}}],["使用请阅读相关文档",{"2":{"108":1}}],["使用请查阅",{"2":{"105":1}}],["使用请查阅网络通信适配",{"2":{"18":1}}],["由转换工具与微信小游戏运行环境保证适配兼容",{"2":{"964":1}}],["由unity中国区特殊优化",{"2":{"760":1}}],["由乐动卓越研发的精美3d手游",{"2":{"709":1}}],["由开发者定义",{"2":{"521":1}}],["由此推出",{"2":{"513":1}}],["由于跨域获取不到",{"2":{"947":1}}],["由于增量分包是新增的功能",{"2":{"892":1}}],["由于内存限制",{"2":{"883":1}}],["由于内存不足而使小游戏发生crash时",{"2":{"611":1}}],["由于安全性的影响",{"2":{"830":1}}],["由于ios内存更苛刻",{"2":{"829":1}}],["由于重启后",{"2":{"768":1}}],["由于",{"2":{"545":1}}],["由于启动剧情为unity启动加载耗时过久而推出的能力",{"2":{"517":1}}],["由于接口是同步调用",{"2":{"441":1}}],["由于微信环境下玩家非常容易删除本地小游戏而导致存档丢失",{"2":{"441":1}}],["由于通过http请求的资源会自动缓存",{"2":{"392":1}}],["由于unity2021之前不支持压缩纹理",{"2":{"565":1}}],["由于unity",{"2":{"372":1,"494":1,"573":1,"580":1,"590":1,"599":1,"812":1}}],["由于unity自身产生的symbols存在缺失问题",{"2":{"212":1}}],["由",{"2":{"340":1}}],["根据机型分级",{"2":{"928":1}}],["根据机型性能不同",{"2":{"843":1}}],["根据游戏项目统计",{"2":{"925":1}}],["根据游戏实际情况修改",{"2":{"641":1}}],["根据优先级设置需要预加载的分包",{"2":{"783":1}}],["根据平台在不同游戏类型",{"2":{"632":1}}],["根据最近使用时间判断是哪个目录",{"2":{"465":1}}],["根据url生成缓存路径",{"2":{"461":1}}],["根据项目需要",{"2":{"381":7}}],["根据实际运行设备",{"2":{"340":1}}],["根据是否调试模式控制日志输出",{"2":{"326":1}}],["这使得渲染效果和渲染内存消耗都得到了改善",{"2":{"936":1}}],["这时候不代表没收集的函数都没用了",{"2":{"884":1}}],["这时候就可以重新分包",{"2":{"868":1}}],["这时候要留意下顶点着色会不会成为瓶颈",{"2":{"670":1}}],["这部分配置表示使用unity",{"2":{"807":1}}],["这部分资源就必须准备好",{"2":{"782":1}}],["这三种加载方式加载前后内存无变化",{"2":{"802":1}}],["这三种压缩格式",{"2":{"347":1}}],["这会极大影响场景初始化速度",{"2":{"782":1}}],["这会触发开放数据域的初始化",{"2":{"554":1}}],["这意味着即使还没调用instantiate",{"2":{"782":1}}],["这些版本需要用微信压缩纹理以优化内存",{"2":{"762":1}}],["这些文件压缩率很高",{"2":{"357":1}}],["这种情况一般是太多新增函数",{"2":{"890":1}}],["这种形式和app版本类似",{"2":{"766":1}}],["这种语句",{"2":{"668":1}}],["这种结构化语句",{"2":{"668":1}}],["这种可以用网格化一个圆作为替代方案",{"2":{"668":1}}],["这将使得jit优化能更准确预判运行期类型",{"2":{"588":1}}],["这将涉及到异步方式来干预启动剧情插件的工作",{"2":{"520":1}}],["这需要你掌握一些简单的",{"2":{"558":1}}],["这一步一般是分钟级的耗时",{"2":{"875":1}}],["这一步可以重复进行",{"2":{"871":1}}],["这一步会做两个事情",{"2":{"557":1}}],["这一步非常重要",{"2":{"555":1}}],["这有助于在剧情播放期间通过截图方式反馈一些加载进度信息",{"2":{"522":1}}],["这有助于加快游戏运行进度",{"2":{"340":1}}],["这段时间中任何时刻均会有用户离开",{"2":{"521":1}}],["这段等待期间游戏与玩家之间没有更多的交互",{"2":{"513":1}}],["这段代码有两处异常",{"2":{"402":1}}],["这得益于",{"2":{"502":1}}],["这个时候可以观察分包插件面板",{"2":{"889":1}}],["这个时候要继续生成分包",{"2":{"881":1}}],["这个插件",{"2":{"869":1}}],["这个目录拷贝至unity工程",{"2":{"858":1}}],["这个过程是cpu处理密集",{"2":{"843":1}}],["这个方法可能会牺牲一点画质效果",{"2":{"673":1}}],["这个问题已经反馈给",{"2":{"665":1}}],["这个文件不会自动缓存",{"2":{"465":1}}],["这个",{"2":{"382":1}}],["这是正常情况",{"2":{"828":1}}],["这是正常现象",{"2":{"379":1}}],["这是会产生一个问题",{"2":{"781":1}}],["这是由于手游app往往很少针对首包资源进行特殊优化",{"2":{"772":1}}],["这是导致了unity",{"2":{"587":1}}],["这是微信开发者工具打开的脚本目录",{"2":{"525":1}}],["这是新用户的留存率影响的重要因素",{"2":{"513":1}}],["这是基于",{"2":{"382":1}}],["这两个选项都已设置完成",{"2":{"493":1}}],["这两个文件的开头新增以下代码",{"2":{"380":1}}],["这两个包从项目工程的缓存目录里拷贝出来",{"2":{"379":1}}],["这两个包",{"2":{"379":1}}],["这里的内存优化主要针对ios高性能模式",{"2":{"897":1}}],["这里的目的就是为了算出",{"2":{"560":1}}],["这里不需要关注分包后所有wasm包的总和",{"2":{"886":1}}],["这里会占用较高的内存和时间",{"2":{"866":1}}],["这里提供了一个小工具用来替换函数",{"2":{"744":1}}],["这里主要关注首包函数个数",{"2":{"878":1}}],["这里主要针对新开发的小游戏",{"2":{"664":1}}],["这里主要讲unityloader的资源缓存策略",{"2":{"393":1}}],["这里有个小工具可以帮助替换日志",{"2":{"400":1}}],["这里是导出",{"2":{"525":1}}],["这里是指",{"2":{"382":1}}],["这里是放",{"2":{"379":1}}],["这里列举一些微信小游戏可考虑优化的功能",{"2":{"381":1}}],["这里顺带把它开启了",{"2":{"380":1}}],["这里采用了一种取巧的方式来定义",{"2":{"380":1}}],["这里以竖屏游戏按高度适配为例",{"2":{"932":1}}],["这里以unitywebsocket为例",{"2":{"836":1}}],["这里以",{"2":{"379":1}}],["这里需要将",{"2":{"379":1}}],["这里假设",{"2":{"379":1}}],["这样打包时就会导出symbol文件",{"2":{"876":1}}],["这样做有个非常严重的问题",{"2":{"782":1}}],["这样表示材质复用的概率高",{"2":{"671":1}}],["这样对内存",{"2":{"669":1}}],["这样性能更好",{"2":{"667":1}}],["这样阴影贴图可以小一点",{"2":{"667":1}}],["这样能减少网络传输数据和时间",{"2":{"498":1}}],["这样就允许先加载较小的首包快速进入主场景",{"2":{"486":1}}],["这样",{"2":{"380":1}}],["这样加载的时候纹理就会很小",{"2":{"357":1}}],["这样的工作原理即做到了不同硬件所支持的纹理格式按需加载",{"2":{"355":1}}],["这对于内存吃紧的游戏至关重要",{"2":{"340":1}}],["对的",{"2":{"887":1}}],["对表格执行格式化换行",{"2":{"823":1}}],["对多",{"2":{"689":1}}],["对下载和解析造成较大压力",{"2":{"687":1}}],["对比帧率",{"2":{"671":1}}],["对比一下性能",{"2":{"663":1}}],["对性能会有比较明显的影响",{"2":{"665":1}}],["对性能有较大影响",{"2":{"593":1}}],["对开发者要求高",{"2":{"664":1}}],["对系统有要求",{"2":{"663":1}}],["对帧率不敏感游戏建议使用",{"2":{"600":1}}],["对象托管对象",{"2":{"570":1}}],["对象等托管内存",{"2":{"565":1}}],["对技术选型并无要求",{"2":{"558":1}}],["对设备性能如计算",{"2":{"502":1}}],["对应unity",{"2":{"683":1}}],["对应外显进度条的",{"2":{"542":1}}],["对应控制剩余",{"2":{"523":1}}],["对应bundle名中hash长度配置",{"2":{"453":1}}],["对应不自动缓存文件类型配置",{"2":{"453":1}}],["对应的prefab在editor中需设置为addressable",{"2":{"782":1}}],["对应的",{"2":{"382":1}}],["对重度游戏如mmo",{"2":{"445":1}}],["对移动平台的一个优化项",{"2":{"380":1}}],["对运行时性能会有提升",{"2":{"378":1}}],["对",{"2":{"345":1,"663":1,"935":1}}],["对于未更新系统的玩家",{"2":{"949":1}}],["对于未知问题",{"2":{"494":1}}],["对于不满足此要求时回退为普通执行方式",{"2":{"945":1}}],["对于计算性能要求较高的游戏会受到比较大的限制",{"2":{"935":1}}],["对于计算耗时",{"2":{"727":1}}],["对于webgl2",{"2":{"927":1}}],["对于webgl版本会启动websockify",{"2":{"661":1,"757":1}}],["对于新构建的小游戏包",{"2":{"871":1}}],["对于小游戏来说是不推荐使用的方式",{"2":{"789":1}}],["对于使用addressable的项目",{"2":{"777":1}}],["对于已有的游戏资源",{"2":{"776":1}}],["对于unity",{"2":{"772":1}}],["对于分析打包的资源正确性和冗余具有很好的帮助",{"2":{"732":1}}],["对于分析cpu",{"2":{"584":1}}],["对于低端机来说时间依然可观",{"2":{"726":1}}],["对于大型游戏可以适当放宽一点",{"2":{"671":1}}],["对于大多数开发者",{"2":{"664":1}}],["对于相同尺寸的纹理",{"2":{"669":1}}],["对于图标等小图片",{"2":{"669":1}}],["对于图集来说尽量不要超过1024",{"2":{"669":1}}],["对于单图",{"2":{"669":1}}],["对于对性能要求高且熟悉渲染的开发者",{"2":{"664":1}}],["对于用不到的特性",{"2":{"664":1}}],["对于gpu显存压力大的游戏",{"2":{"584":1}}],["对于",{"2":{"554":1,"693":1,"883":2}}],["对于希望进一步提升游戏启动留存的开发者可以基于该能力精心设计用于",{"2":{"513":1}}],["对于极小的休闲类游戏将具备更快更小修改代价将游戏迁移至微信小游戏环境内运行",{"2":{"502":1}}],["对于开发者而言",{"2":{"502":1}}],["对于进一步提升",{"2":{"476":1}}],["对于游戏中使用到网络请求的操作",{"2":{"475":1}}],["对于少量数据可以采用后两种方式",{"2":{"441":1}}],["对于微信平台的小游戏",{"2":{"381":1}}],["对于ab包的忽略直接在右侧",{"2":{"352":1}}],["对于重度游戏而言",{"2":{"485":1}}],["对于重度游戏",{"2":{"341":1}}],["对于资源体积而言将更小",{"2":{"340":1}}],["对于被分离的纹理资源将在游戏实际的使用过程中按渲染需要动态加载",{"2":{"340":1}}],["对齐最新小游戏基础库2",{"2":{"87":1}}],["\\t\\t不同的游戏所需要的性能不尽相同",{"2":{"686":1}}],["\\t\\t不会",{"2":{"361":1}}],["\\t\\taa",{"2":{"685":1}}],["\\t\\tastc",{"2":{"347":1}}],["\\t\\t目前分包将基于",{"2":{"684":1}}],["\\t\\t经过",{"2":{"505":1}}],["\\t\\t请前往",{"2":{"503":1}}],["\\t\\tinstant",{"2":{"502":2,"685":1}}],["\\t\\t除常规使用",{"2":{"501":1}}],["\\t\\t现网错误日志上报与排查",{"2":{"488":1}}],["\\t\\t审核发布可参考",{"2":{"488":1}}],["\\t\\t由于",{"2":{"487":1}}],["\\t\\t纹理压缩对于",{"2":{"485":1}}],["\\t\\t纹理资源的",{"2":{"346":1}}],["\\t\\t游戏转化完成后仍需要对各项的性能指标进行量化测试",{"2":{"484":1}}],["\\t\\t游戏导出小游戏包",{"2":{"476":1}}],["\\t\\t根据统计数据反应",{"2":{"482":1}}],["\\t\\t截止本阶段",{"2":{"481":1}}],["\\t\\tunity",{"2":{"479":1,"486":1}}],["\\t\\t区别于原生环境",{"2":{"475":1}}],["\\t\\t区别于原生",{"2":{"474":1,"684":1}}],["\\t\\t阅读",{"2":{"473":1}}],["\\t\\t本节内容将指引开发者如何让自己的游戏工程在微信小游戏平台成功运行",{"2":{"472":1}}],["\\t\\t本地安装官方",{"2":{"363":1}}],["\\t\\t新计划接入游戏的开发者应阅读本节相关手册内容",{"2":{"471":1}}],["\\t\\t新版本已不再依赖",{"2":{"344":1}}],["\\t\\t下图中介绍了新游戏接入微信小游戏平台的主要转换流程",{"2":{"470":1}}],["\\t\\t下载并安装",{"2":{"344":1}}],["\\t\\t获取微信压缩纹理工具所能扫描到的符合条件的ab包路径数组",{"2":{"370":1}}],["\\t\\t执行微信压缩纹理流程",{"2":{"367":1}}],["\\t\\t执行完上述步骤后",{"2":{"350":1}}],["\\t\\tvoid",{"2":{"366":1,"369":1}}],["\\t\\t为方便开发者构建个性化的工程导出能力",{"2":{"365":1}}],["\\t\\t先下载",{"2":{"364":1}}],["\\t\\t因为",{"2":{"362":1}}],["\\t\\t移动设备中大多数使用",{"2":{"359":1}}],["\\t\\t上传至cdn时",{"2":{"358":1}}],["\\t\\tpc端上预览的时候展示的是png图片会比较大",{"2":{"357":1}}],["\\t\\t微信纹理压缩工具底层原理是将bundle内纹理资源分离",{"2":{"355":1}}],["\\t\\t微信纹理压缩升级了全新的内核程序",{"2":{"354":1}}],["\\t\\t微信纹理压缩目前已支持webgl2",{"2":{"351":1}}],["\\t\\t默认情况下无需开发者进行手动的配置",{"2":{"353":1}}],["\\t\\t位于",{"2":{"353":1}}],["\\t\\t有时忽略整个ab包并不是一种好的策略",{"2":{"352":1}}],["\\t\\t对于微信压缩纹理工具处理后部分资源渲染效果较差",{"2":{"352":1}}],["\\t\\t该步骤根据项目实际情况不同",{"2":{"349":1}}],["\\t\\t调试模式",{"2":{"349":1}}],["\\t\\t点击",{"2":{"349":1}}],["\\t\\t点击微信小游戏",{"2":{"348":1}}],["\\t\\t若以上述4种格式配置后",{"2":{"347":1}}],["\\t\\t在小游戏中玩家对启动时长与体验十分敏感",{"2":{"480":1}}],["\\t\\t在",{"2":{"347":1,"483":1}}],["\\t\\t项目中若使用",{"2":{"345":1}}],["\\t\\t压缩纹理工具是微信sdk提供的一种能够根据不同的游戏运行平台而按需加载压缩后纹理资源的能力",{"2":{"485":1}}],["\\t\\t压缩纹理工具执行需要依赖",{"2":{"360":1}}],["\\t\\t压缩纹理工具对于",{"2":{"342":1}}],["\\t\\t压缩纹理工具将纹理资源从",{"2":{"340":1}}],["\\t\\t低版本引擎",{"2":{"341":1}}],["\\t\\t如引擎版本高于2021",{"2":{"341":1}}],["\\t\\t支持不同平台的自适应",{"2":{"341":1}}],["\\t\\t更统一的工作流",{"2":{"341":1}}],["\\t\\t使用压缩后的纹理本身将节约更多的内存空间",{"2":{"340":1}}],["\\t\\t早期",{"2":{"340":1}}],["体验调优",{"0":{"481":1},"1":{"482":1,"483":1,"484":1,"485":1,"486":1,"487":1},"2":{"470":1}}],["体验版和正式版",{"2":{"945":1}}],["体验版",{"2":{"641":1}}],["体验版本增加性能面板",{"2":{"254":1}}],["体验版小游戏支持最佳实践检测",{"2":{"86":1}}],["体验版小游戏支持最佳实践检测工具",{"2":{"83":1}}],["体积更小",{"2":{"485":1}}],["体积将变小",{"2":{"340":1}}],["体积",{"2":{"340":1,"485":1}}],["为保证稳定性",{"2":{"966":1}}],["为进一步保障wasm小游戏的代码安全",{"2":{"958":1}}],["为如下所示c",{"2":{"828":1}}],["为此",{"2":{"800":1}}],["为high",{"2":{"726":1}}],["为加快二次启动",{"2":{"717":1}}],["为兼容需要",{"2":{"695":1}}],["为兼容历史团结",{"2":{"690":1}}],["为何需要进行性能优化",{"0":{"631":1}}],["为避免发生异常时用户无法退出启动剧情插件",{"2":{"532":1}}],["为未运行或已播放结束资源析构",{"2":{"527":1,"543":1}}],["为主",{"2":{"525":1}}],["为游戏的主逻辑争取更多的下载",{"2":{"513":1}}],["为",{"2":{"498":1,"940":1}}],["为你期望的值",{"2":{"455":1}}],["为什么开启了高性能模式",{"0":{"951":1},"2":{"934":1}}],["为什么开发者工具正常",{"2":{"839":1}}],["为什么开放数据域滚动事件不生效",{"2":{"562":1}}],["为什么要做启动优化",{"0":{"719":1},"1":{"720":1,"721":1}}],["为什么要用条件编译宏来定制代码",{"2":{"380":1}}],["为什么需要性能评测标准",{"0":{"608":1,"622":1}}],["为什么我关闭排行榜之后界面上有些问题错乱了",{"2":{"562":1}}],["为什么第一次调用",{"2":{"562":1}}],["为什么资源或网络请求在打开",{"2":{"500":1}}],["为什么运行时出现奇怪的",{"2":{"500":1}}],["为什么使用application",{"0":{"439":1}}],["为了充分利用网络带宽",{"2":{"793":1,"818":1}}],["为了能让导出包运行在微信小游戏环境",{"2":{"737":1}}],["为了详细统计玩家的流失情况以便开发者进行优化",{"2":{"681":1}}],["为了帮助开发者分析广告渠道的留存数据",{"2":{"679":1}}],["为了使游戏达到比较好的性能表现",{"2":{"640":1}}],["为了使用群排行榜",{"2":{"561":1}}],["为了提高游戏在中低端机型的稳定性",{"2":{"564":1}}],["为了安全",{"2":{"550":1}}],["为了录制启动阶段完整的profile",{"2":{"469":1}}],["为了避免新版本发布时由于cdn缓存导致加载到旧版本资源",{"2":{"392":1}}],["为了确保压缩纹理工具的顺利进行",{"2":{"342":1}}],["为简化调用",{"2":{"365":1}}],["为弥补这一缺陷",{"2":{"340":1}}],["为例",{"2":{"338":1}}],["完全通过",{"2":{"664":1}}],["完整的原理为",{"2":{"550":1}}],["完整配置",{"0":{"373":1},"1":{"374":1,"375":1}}],["完成后",{"2":{"961":1}}],["完成后再回来",{"2":{"879":1}}],["完成之后再使用c",{"2":{"861":1}}],["完成导出",{"2":{"823":1}}],["完成准备阶段后进入unity引擎初始化与首场景加载",{"2":{"716":1}}],["完成",{"2":{"525":1}}],["完成设计与调试",{"2":{"518":1}}],["完成发布上传前的自动化操作",{"2":{"365":1}}],["完成硬件的解码渲染",{"2":{"340":1}}],["完善限帧率接口setpreferredframespersecond",{"2":{"170":1}}],["完善filesystemmanager",{"2":{"53":1}}],["纹理存储路径",{"2":{"755":1}}],["纹理存放路径",{"2":{"453":1}}],["纹理等",{"2":{"725":1}}],["纹理",{"2":{"685":1}}],["纹理的大小当然越小越好",{"2":{"669":1}}],["纹理设置",{"0":{"669":1}}],["纹理会由于需要在cpu中软解为rgb",{"2":{"602":1}}],["纹理内存会造成明显膨胀",{"2":{"565":1}}],["纹理或模型upload",{"2":{"565":1}}],["纹理就还没有准备好",{"2":{"562":1}}],["纹理中hash长度",{"2":{"453":1,"755":1}}],["纹理相关",{"2":{"453":1}}],["纹理资源从",{"2":{"485":1}}],["纹理资源",{"2":{"451":1}}],["纹理资源的",{"2":{"347":1}}],["纹理差异降低值是不相同的",{"2":{"355":1}}],["纹理格式进行导出",{"2":{"340":1}}],["纹理压缩并行下载完成未正常显示",{"2":{"163":1}}],["概述",{"0":{"340":1,"678":1,"772":1,"822":1,"843":1,"865":1},"1":{"866":1,"867":1},"2":{"864":1}}],["\\t",{"2":{"834":5,"838":1}}],["\\tconst",{"2":{"338":1}}],["\\tconsole",{"2":{"338":3}}],["\\t\\t\\t\\t",{"2":{"834":1,"838":1}}],["\\t\\t",{"2":{"338":1}}],["h",{"2":{"956":1}}],["h5",{"2":{"945":1}}],["host",{"2":{"898":1}}],["hook",{"2":{"550":2,"554":1,"562":1}}],["hunter",{"0":{"734":1},"2":{"734":1}}],["hub",{"2":{"364":2,"661":2,"757":2}}],["h2或http1",{"2":{"654":1}}],["hitcache",{"2":{"654":1}}],["hitcachecount=0",{"2":{"655":1}}],["hitcachecount",{"2":{"648":1,"654":1}}],["hidden",{"2":{"523":1,"528":1}}],["hidesharemenu",{"2":{"863":1}}],["hideopendata",{"0":{"555":1},"2":{"555":1,"562":2,"863":1}}],["hidekeyboardoption",{"2":{"491":1}}],["hidekeyboard",{"2":{"491":5,"863":1}}],["hideaftercallmain",{"2":{"374":1,"376":1,"755":1,"813":1,"814":2}}],["hanle",{"2":{"782":2,"789":1}}],["handler",{"2":{"798":3}}],["handle",{"2":{"781":3,"782":1,"785":3,"786":7,"787":2,"789":4}}],["half",{"2":{"668":1}}],["half3",{"2":{"382":1}}],["has",{"2":{"460":1}}],["hash是重要依据",{"2":{"797":1}}],["hash记录了catalog",{"2":{"655":1}}],["hash来做资源热更新",{"2":{"655":1}}],["hash文件用于资源热更新",{"2":{"654":1}}],["hash长度也不一样",{"2":{"459":1}}],["hash",{"2":{"453":1}}],["hlsl部分",{"2":{"384":1}}],["hlsl",{"2":{"380":8,"382":4}}],["header",{"2":{"948":1}}],["headers",{"2":{"947":1}}],["heapu8",{"2":{"836":1}}],["heap是只增不减且存在内存碎片的",{"2":{"580":1}}],["heap通常无法看出具体内存使用",{"2":{"573":1}}],["heap包含了大部分",{"2":{"573":1}}],["heap",{"0":{"573":1},"1":{"574":1,"575":1,"576":1},"2":{"565":2,"566":1}}],["height应当是",{"2":{"560":1}}],["height是为了点击区域能正确点击",{"2":{"560":2}}],["height",{"2":{"375":3,"377":3,"523":1,"528":1,"554":4,"560":2,"562":1,"858":2}}],["hello",{"2":{"338":1}}],["hdrp",{"2":{"664":2}}],["hdr",{"2":{"347":1,"382":3,"579":1}}],["http使用unitywebrequest",{"2":{"447":1}}],["http",{"0":{"831":1},"1":{"832":1},"2":{"336":1,"337":1,"475":1,"739":1,"840":1,"857":7}}],["http下载时",{"2":{"151":1}}],["https证书",{"2":{"839":1,"840":1}}],["https",{"2":{"105":2,"338":1,"375":1,"377":1,"443":17,"461":1,"467":1,"468":1,"500":1,"503":1,"561":2,"661":1,"692":1,"732":1,"733":1,"734":1,"735":1,"739":4,"744":2,"757":1,"772":1,"775":1,"794":5,"804":4,"832":2,"834":1,"838":1,"848":4,"849":2,"850":1,"856":1,"857":12}}],["html",{"2":{"105":1,"338":1,"386":1,"441":2,"500":1,"561":1,"661":1,"735":1,"739":1,"757":1,"794":1,"804":1,"834":1,"838":1}}],["则可进入高性能模式",{"2":{"940":1}}],["则可在游戏侧完成控制",{"2":{"523":1}}],["则返回缓存文件",{"2":{"799":1}}],["则作为视频封面",{"2":{"748":1}}],["则要这要做一下换算",{"2":{"560":1}}],["则左上角就是离屏幕的距离",{"2":{"560":1}}],["则在注册该方法时会立即产生回调",{"2":{"545":1}}],["则为高性能模式",{"2":{"945":1}}],["则为",{"2":{"534":1}}],["则需另外安装",{"2":{"496":1}}],["则需要使用",{"2":{"837":1}}],["则需要继续迭代",{"2":{"652":1}}],["则需要优化",{"2":{"650":1}}],["则需要根据",{"2":{"560":1}}],["则需要删除streamingassets",{"2":{"461":1}}],["则需要选",{"2":{"338":1}}],["则缓存路径=$",{"2":{"461":1}}],["则先清理旧缓存",{"2":{"457":1}}],["则此处填写目录的绝对路径",{"2":{"368":1,"371":1}}],["则将采用",{"2":{"359":1}}],["则无需修改",{"2":{"338":1}}],["本方案设计目的是降低",{"2":{"963":1}}],["本unity的sdk的api大体与官网的js版本api类似",{"2":{"858":1}}],["本节总结的列举开发者对不同类型的游戏应重点关注的优化内容",{"2":{"686":1}}],["本节说明三种方案的差异",{"2":{"685":1}}],["本节将介绍目前微信小游戏平台为开发者提供的调优能力完成上线前的最后优化工作",{"2":{"481":1}}],["本机堆",{"2":{"570":4}}],["本机堆与原生插件底层内存",{"2":{"565":1}}],["本机安装的",{"2":{"363":1}}],["本地存储",{"2":{"863":1}}],["本地设置",{"2":{"839":1,"840":1}}],["本地读取等",{"2":{"520":1}}],["本地有特定缓存标识意味已经不是首次访问可以不播放",{"2":{"519":1}}],["本地化后我们可以自由地定制化",{"2":{"379":1}}],["本地化",{"0":{"379":1},"2":{"378":1}}],["本篇重点介绍业务资源的缓存规则",{"2":{"449":1}}],["本文介绍如何使用unity新的资源管理流程addressable",{"2":{"772":1}}],["本文档主要关于",{"2":{"662":1}}],["本文档主要说明如何在",{"2":{"378":1}}],["本文主要介绍unity",{"2":{"586":1}}],["本文阐述在微信小游戏环境的最佳实践",{"2":{"509":1}}],["本文阐述开发者在遇到转换后的游戏在开发者工具或真机遇到异常时",{"2":{"395":1}}],["本文描述unity",{"2":{"492":1}}],["本身的代码包",{"2":{"379":1}}],["本云函数仅依赖了",{"2":{"338":1}}],["本示例为",{"2":{"338":2}}],["部署",{"0":{"791":1},"1":{"792":1,"793":1,"794":1}}],["部署首资源包需要注意",{"2":{"779":1}}],["部署云函数",{"2":{"338":1}}],["部分示意图可能有出入",{"2":{"960":1}}],["部分平台依然在迭代优化",{"2":{"741":1}}],["部分版本会出现无法连接的情况",{"2":{"593":1}}],["部分支持",{"2":{"447":1}}],["部分变量全精度改为半精度",{"2":{"382":1}}],["部分类",{"2":{"87":1}}],["的内存",{"2":{"942":1}}],["的部分案例进行评测",{"2":{"939":1}}],["的部分版本有支持",{"2":{"342":1}}],["的示例",{"2":{"932":1}}],["的都很少",{"2":{"888":1}}],["的大小即可",{"2":{"886":1}}],["的插件一般是自动更新的",{"2":{"870":1}}],["的方式",{"2":{"868":1}}],["的代理层",{"2":{"837":1}}],["的代码",{"2":{"380":1}}],["的第三方插件比较多",{"2":{"836":1}}],["的详细分配堆栈与统计数值",{"2":{"822":1}}],["的引用",{"2":{"777":1}}],["的引擎暂时还不支持导出",{"2":{"744":1}}],["的预览版本",{"2":{"774":1}}],["的资源内容",{"2":{"732":1}}],["的经典特色",{"2":{"709":1}}],["的中重度游戏",{"0":{"689":1}}],["的轻度游戏",{"0":{"688":1}}],["的性能要比",{"2":{"685":1}}],["的性能就一定比",{"2":{"663":1}}],["的统计里有",{"2":{"671":1}}],["的数量建议控制在",{"2":{"671":1}}],["的开销",{"2":{"670":1}}],["的时间和",{"2":{"670":1}}],["的时候可能会生成环境反射立体贴图",{"2":{"667":1}}],["的时候调用",{"2":{"560":1}}],["的耗时",{"2":{"670":1}}],["的阴影默认使用",{"2":{"667":1}}],["的版本还是存在这个问题",{"2":{"665":1}}],["的通用渲染管线",{"2":{"664":1}}],["的好",{"2":{"663":1}}],["的特性",{"2":{"663":2,"720":1}}],["的游戏",{"2":{"641":1}}],["的后面四个参数",{"2":{"562":1}}],["的事件之后立马就会开始",{"2":{"562":1}}],["的物理尺寸是",{"2":{"560":1}}],["的纹理",{"2":{"554":1}}],["的处理没有任何要求",{"2":{"554":1}}],["的渲染",{"2":{"550":1,"554":1,"562":1}}],["的渲染结果是否一致",{"2":{"384":1}}],["的绘制存在倒立的差异",{"2":{"552":1}}],["的绘制",{"2":{"550":1}}],["的模板文件",{"2":{"525":1}}],["的剧情内容",{"2":{"513":1}}],["的启动加载需要一定的时间",{"2":{"487":1}}],["的优化方面均有不错的表现效果",{"2":{"485":1}}],["的情况",{"2":{"483":1}}],["的测试场景",{"2":{"383":2}}],["的是生效的",{"2":{"380":1}}],["的宏",{"2":{"380":1}}],["的定义或计算可能需要全精度的",{"2":{"668":1}}],["的定义",{"2":{"380":1}}],["的日志",{"2":{"379":1}}],["的绝对路径填写至",{"2":{"360":1}}],["的表现上",{"2":{"359":1}}],["的倍数",{"2":{"359":1}}],["的",{"2":{"343":1,"346":1,"347":1,"380":2,"382":2,"384":1,"499":1,"550":1,"667":2,"752":1,"940":1,"949":1}}],["的基础上选用我们已经验证可行的",{"2":{"342":1}}],["的声明",{"2":{"338":1}}],["的edge",{"2":{"329":1}}],["中高端机",{"2":{"942":1}}],["中高档机为iphone",{"2":{"564":1}}],["中高档机",{"2":{"564":2}}],["中低端机帧率较低",{"2":{"935":1}}],["中获取的安全区域的数值",{"2":{"932":1}}],["中开发者可以使用微信基础库中的tcpsocket",{"2":{"833":1}}],["中的",{"2":{"832":1}}],["中的内存",{"2":{"565":1}}],["中的内容实现服务端逻辑",{"2":{"338":1}}],["中使用",{"2":{"831":1}}],["中不能工作",{"2":{"830":1}}],["中国特供版下载地址",{"2":{"761":1}}],["中文竖排标点",{"2":{"857":1}}],["中文标点符号",{"2":{"857":1}}],["中文字体大小少则2",{"2":{"854":1}}],["中文字体适配",{"2":{"500":1}}],["中文显示需要自定义字体",{"2":{"725":1}}],["中度",{"2":{"618":1}}],["中度游戏",{"2":{"580":1}}],["中档机",{"2":{"628":2,"629":2}}],["中档",{"2":{"610":1,"625":1}}],["中重度游戏应保证中高档机不限帧时达到40fps以上",{"2":{"590":1}}],["中重度游戏建议开启ios高性能模式以支持jit",{"2":{"589":1}}],["中向开放域页面传递数据",{"2":{"556":1}}],["中除了",{"2":{"526":1}}],["中",{"2":{"519":1,"820":1}}],["中小型游戏",{"2":{"502":1}}],["中存储",{"2":{"485":1}}],["中以下配置与缓存相关",{"2":{"453":1}}],["中分离单独托管",{"2":{"340":1}}],["中指定",{"2":{"338":1}}],["中函数",{"2":{"48":1}}],["新的高性能模式",{"2":{"867":1}}],["新一代的addressable正是对这些痛点做了不少改进",{"2":{"775":1}}],["新版的插件已经规避这个问题",{"2":{"891":1}}],["新版本无需修改",{"2":{"836":1}}],["新版本已新增memorysize",{"2":{"606":1}}],["新版本异常回退说明",{"0":{"354":1}}],["新版导出插件使用小游戏插件来渲染关系链数据",{"2":{"417":1}}],["新建一个云函数的空工程",{"2":{"338":1}}],["新增收集函数个数这个数据非常重要",{"2":{"881":1}}],["新增收集函数个数清零",{"2":{"881":1}}],["新增收集的函数要重新再次提审才会在首包吗",{"0":{"887":1},"2":{"864":1}}],["新增wxcleanallfilecache接口",{"2":{"236":1}}],["新增api",{"2":{"230":1,"239":1}}],["新增录屏接口功能",{"2":{"123":1}}],["新增米大师接口requestmidaspaymentgameitem",{"2":{"59":1}}],["新增tcp接口能力",{"2":{"20":1}}],["新增启动剧情能力",{"2":{"20":1}}],["此为",{"2":{"949":1}}],["此套接口只可在微信小游戏环境下使用",{"2":{"800":1}}],["此地址默认为编译机器的",{"2":{"757":1}}],["此部分始终占用内存无法释放",{"2":{"581":1}}],["此处将产生异常",{"2":{"512":1}}],["此最大值通过maxstorage修改",{"2":{"460":1}}],["此外",{"2":{"423":1}}],["此时ios",{"2":{"822":1}}],["此时我们可以将每个场景单独作为addressable分组",{"2":{"781":1}}],["此时打开的可能还是旧版本",{"2":{"766":1}}],["此时根据monitorduration的值截止检测",{"2":{"641":1}}],["此时应使用其他资源管理比如assetbundle来减少资源索引文件大小",{"2":{"596":1}}],["此时loader会按照lru规则",{"2":{"460":1}}],["此时可通过该文件找到c",{"2":{"403":1}}],["此时不需要将首包资源部署到服务器",{"2":{"388":1}}],["此时本地化",{"2":{"379":1}}],["此时在",{"2":{"379":1}}],["此时",{"2":{"379":1,"661":1,"757":1,"781":1}}],["此时若已经执行过微信压缩纹理能力时",{"2":{"352":1}}],["此时得到的profile中函数为数字id",{"2":{"329":1}}],["此示例仅供参考云函数使用流程",{"2":{"338":1}}],["混合的模式",{"2":{"336":1}}],["详情请查阅",{"2":{"949":1}}],["详情参考资源缓存",{"2":{"819":1}}],["详情可参考unity",{"2":{"668":1}}],["详情可见链接",{"2":{"561":1}}],["详见资源缓存",{"2":{"853":1}}],["详见",{"2":{"560":1,"561":1}}],["详见云开发",{"2":{"336":1}}],["详细文档请查阅高性能+模式",{"2":{"936":1}}],["详细示例可参考系统字体demo",{"2":{"856":1}}],["详细示例请参考api",{"2":{"491":1}}],["详细配置请参考使用预下载功能",{"2":{"793":1,"818":1}}],["详细内容可查阅",{"2":{"685":1}}],["详细内容通过vconsole打印",{"2":{"642":1}}],["详细接口可参考c",{"2":{"681":1}}],["详细的基准机型与性能要求可参考性能评估标准",{"2":{"590":1}}],["详细步骤",{"0":{"551":1},"1":{"552":1,"553":1,"554":1,"555":1,"556":1,"557":1,"558":1,"559":1,"560":1,"561":1}}],["详细缓存日志不写入日志管理器",{"2":{"56":1}}],["云端安装依赖",{"2":{"338":1}}],["云函数可以同时存在多个环境",{"2":{"338":1}}],["云函数可以和前端的游戏逻辑独立创建为不同的项目",{"2":{"338":1}}],["云函数",{"2":{"338":1}}],["云开发有一个基本的免费套餐",{"2":{"338":1}}],["云开发可以降低运维",{"2":{"336":1}}],["云开发",{"0":{"338":1},"2":{"336":1}}],["云测试设置ui框架导致editor运行错误",{"2":{"322":1}}],["通用标点符号",{"2":{"857":1}}],["通用",{"2":{"664":1}}],["通用渲染管线",{"2":{"378":1}}],["通骁⻰625",{"2":{"610":1,"625":1}}],["通常可以3~5mb左右的内容",{"2":{"853":1}}],["通常平均耗时会在3~6s左右",{"2":{"843":1}}],["通常是由于安全域名与ssl证书",{"2":{"839":1}}],["通常是问题所在",{"2":{"402":1}}],["通常需要再asset或其子目录下创建resources的文件夹",{"2":{"789":1}}],["通常需要适配",{"2":{"685":2}}],["通常使用",{"2":{"757":1}}],["通常呈现splah场景即可",{"2":{"727":1}}],["通常呈现splash场景即可",{"2":{"466":1}}],["通常包含较多游戏场景或支持多人在线游戏",{"2":{"618":1}}],["通常定义为用户可交互的时机",{"2":{"611":1}}],["通常为assetbundle",{"2":{"611":1,"625":1}}],["通常",{"2":{"577":1,"580":1,"668":1,"779":1}}],["通常我们可以使用浏览器自带的内存工具",{"2":{"573":1}}],["通常我们从异常log中找到函数id",{"2":{"403":1}}],["通常而言",{"2":{"570":1,"587":1,"588":1}}],["通常无需替换",{"2":{"440":1}}],["通常有以下两种方式避免",{"2":{"392":1}}],["通信",{"0":{"831":1},"1":{"832":1},"2":{"336":1,"337":1}}],["通过去掉此开关可以正常回退到普通模式",{"2":{"940":1}}],["通过多款游戏项目",{"2":{"938":1}}],["通过多路复用和头部压缩的特性",{"2":{"655":1}}],["通过开发者工具的设置",{"2":{"869":1}}],["通过真机运行小游戏",{"2":{"868":1}}],["通过运行时收集信息",{"2":{"868":1}}],["通过微信系统字体",{"2":{"854":1}}],["通过手机端小游戏右上角菜单",{"2":{"840":1}}],["通过详情",{"2":{"839":1,"840":1}}],["通过修改minigame",{"2":{"820":1}}],["通过修改unity",{"2":{"723":1}}],["通过接口修改",{"0":{"811":1}}],["通过加载前后snapshot来对比总内存变化",{"2":{"802":1}}],["通过addressable检查bultin分组",{"2":{"779":1}}],["通过勾选minigameconfig",{"2":{"768":1}}],["通过切石",{"2":{"706":1}}],["通过c",{"2":{"678":1,"850":1}}],["通过小游戏数据助手查看",{"2":{"611":1}}],["通过timelog",{"2":{"611":2,"625":2}}],["通过texturespath可让loader识别一条请求是否为纹理",{"2":{"456":1}}],["通过优化逻辑分帧加载可大幅度提升游戏体验",{"2":{"599":1}}],["通过上面的改造",{"2":{"469":1}}],["通过usb链接电脑或者第三方文件管理器即可将profile文件传输至电脑",{"2":{"467":1}}],["通过文件名中的hash区分同名文件的不同版本",{"2":{"461":1}}],["通过文件名中带资源hash",{"2":{"458":1}}],["通过导出的小游戏minigame",{"2":{"460":1}}],["通过细粒度的资源拆分",{"2":{"449":1}}],["通过日志的函数id找到对应的原始函数名",{"2":{"400":1}}],["通过以下方式打开",{"2":{"397":1}}],["通过宏wx",{"2":{"380":1}}],["通过",{"0":{"556":1},"2":{"337":1,"843":1}}],["通过替换脚本对cpuprofile进行自动映射到真实函数",{"2":{"329":1}}],["通过webgl导出目录下的symbols文件对照映射",{"2":{"329":1}}],["通过分包加载资源时读取bug",{"2":{"198":1}}],["通过disablehighperformancefallback修改",{"2":{"93":1}}],["引入wasm水印机制",{"2":{"958":1}}],["引入unitymarkdownviewer在inspector面板预览changelog",{"2":{"323":1}}],["引发异常的可能是",{"2":{"532":1}}],["引擎自身模块与数据初始化",{"2":{"843":1}}],["引擎默认资源",{"2":{"725":1}}],["引擎导出项目将微信runtime包裁剪",{"2":{"697":1}}],["引擎与首场景初始化",{"2":{"678":1}}],["引擎与资源",{"2":{"566":1}}],["引擎初始化和首场景准备",{"2":{"843":1}}],["引擎初始化",{"2":{"682":1}}],["引擎初始化完成后修改",{"0":{"850":1}}],["引擎初始化完成后多长时间开始加载子包",{"2":{"651":1}}],["引擎初始化完成时",{"2":{"649":2}}],["引擎初始化与开发者首帧逻辑",{"0":{"727":1},"2":{"646":1,"723":1}}],["引擎初始化耗时",{"2":{"645":1}}],["引擎和手场景完成",{"2":{"625":1}}],["引擎和首场景完成",{"2":{"611":1}}],["引擎和首场景",{"2":{"611":1,"625":1}}],["引擎可监控内存",{"2":{"584":1}}],["引擎内部对象",{"2":{"570":1}}],["引擎基于底层实现对游戏资源的异步加载能力",{"2":{"502":1}}],["引擎",{"2":{"492":1,"578":1}}],["引擎版本",{"0":{"446":1},"2":{"685":1,"760":1}}],["引擎代码裁剪级别",{"0":{"431":1}}],["引擎+业务首场景",{"2":{"412":1}}],["引擎或业务代码导致的异常都会抛出到",{"2":{"402":1}}],["引擎捕捉哪种级别的异常",{"2":{"402":1}}],["引用查找",{"2":{"333":1}}],["资源系统迁移可参考unity官方文档upgrading",{"2":{"788":1}}],["资源拆分",{"2":{"783":1}}],["资源按需延迟加载",{"2":{"772":1}}],["资源按需加载概述",{"0":{"684":1},"1":{"685":1,"686":1,"687":1,"688":1,"689":1},"2":{"474":2,"967":1}}],["资源按需加载",{"0":{"474":1,"635":1,"688":1,"689":1,"780":1},"1":{"781":1},"2":{"340":1}}],["资源下载提示istrusted",{"0":{"948":1}}],["资源下载提示",{"2":{"934":1}}],["资源下载",{"0":{"809":1},"1":{"810":1,"811":1}}],["资源下载通常是贡献最大的部分",{"2":{"772":1}}],["资源下载失败",{"0":{"413":1,"414":1}}],["资源更新",{"0":{"770":1}}],["资源更新说明",{"0":{"392":1},"2":{"770":1}}],["资源清理插件",{"2":{"734":1}}],["资源分包",{"2":{"717":1}}],["资源",{"2":{"716":1,"717":1}}],["资源与代码分包处理",{"2":{"716":1}}],["资源包不可再使用小游戏分包加载",{"2":{"815":1}}],["资源包括",{"2":{"716":1}}],["资源包方式安装",{"0":{"693":1},"1":{"694":1}}],["资源包使用cdn远程加载",{"2":{"687":1}}],["资源包请使用cdn",{"2":{"411":1}}],["资源管理",{"2":{"685":1}}],["资源量",{"2":{"653":1}}],["资源处理建议",{"0":{"636":1}}],["资源请求并发数不超过20个",{"2":{"635":1}}],["资源放到",{"2":{"519":1}}],["资源目录",{"2":{"518":1}}],["资源预下载",{"0":{"483":1,"793":1}}],["资源服务器部署配置",{"0":{"476":1}}],["资源服务器注意事项",{"0":{"391":1}}],["资源实际部署的cdn前缀必须与转换面板填写的cdn地址一致",{"2":{"461":1}}],["资源版本=8d265a9dfd6cb7669cdb8b726f0afb1e",{"2":{"461":1}}],["资源唯一标识=streamingassets",{"2":{"461":1}}],["资源淘汰规则",{"0":{"457":1},"1":{"458":1,"459":1},"2":{"448":1}}],["资源加载与编译",{"2":{"806":1}}],["资源加载与缓存",{"2":{"755":1}}],["资源加载",{"2":{"447":1}}],["资源缓存与淘汰策略",{"0":{"819":1}}],["资源缓存与更新的不同",{"2":{"799":1}}],["资源缓存规则",{"0":{"394":1}}],["资源缓存",{"0":{"393":1,"448":1},"1":{"394":1},"2":{"476":1}}],["资源部署",{"0":{"387":1,"750":1},"1":{"388":1,"389":1,"390":1,"391":1}}],["资源部署与缓存",{"0":{"386":1},"1":{"387":1,"388":1,"389":1,"390":1,"391":1,"392":1,"393":1,"394":1},"2":{"476":1}}],["资源上传至cdn的注意事项",{"0":{"358":1}}],["资源将保持对应的",{"2":{"347":1}}],["资源占位符专用",{"2":{"346":1}}],["资源列表",{"2":{"333":1}}],["资源优化",{"0":{"330":1},"1":{"331":1,"332":1,"333":1,"334":1}}],["资源优化工具与建议",{"2":{"636":1,"967":1}}],["资源优化工具",{"2":{"331":1}}],["资源优化工具代码添加namespace",{"2":{"325":1}}],["资源优化工具支持astc6",{"2":{"46":1}}],["筛选列表展示结果",{"2":{"333":1}}],["将收集到的函数加入首包",{"2":{"868":1}}],["将原来的",{"2":{"866":1}}],["将原本要绘制的",{"2":{"550":1}}],["将原本的",{"2":{"486":1}}],["将simpledlmalloc",{"2":{"828":1}}],["将这部分函数放在首包",{"2":{"890":1}}],["将这段内容保存到文件",{"2":{"744":1}}],["将这两个子文件夹拷贝到工程目录外的一个本地文件夹",{"2":{"379":1}}],["将直接使用本地缓存",{"2":{"717":1}}],["将优先需要使用的资源放到列表头部",{"2":{"649":1}}],["将游戏资源以",{"2":{"687":1}}],["将游戏运行一段时间",{"2":{"580":1}}],["将游戏内纹理资源针对webgl导出做优化",{"2":{"330":1}}],["将内存控制到1g以内",{"2":{"577":1}}],["将插件内置的",{"2":{"557":1}}],["将得到一些信息反馈",{"2":{"525":1}}],["将方便开发者进行数据分析",{"2":{"521":1}}],["将生成目录下的webgl",{"2":{"498":1}}],["将使用微信开发者工具打开",{"2":{"476":1}}],["将此目录部署到服务器即可",{"2":{"389":1}}],["将相关的",{"2":{"384":1}}],["将那些游戏用不到的功能在编译期就去掉",{"2":{"378":1}}],["将其放在",{"2":{"364":1}}],["将资源指针替换至原bundle内",{"2":{"355":1}}],["将",{"2":{"350":1,"364":1,"475":1,"519":1,"687":1,"858":1}}],["将只生成",{"2":{"349":1}}],["将maxsize设置为纹理宽高最大值的一半",{"2":{"333":1}}],["其次阐述在微信小游戏环境下最佳的性能优化工具与常见优化手段",{"2":{"586":1}}],["其实就是开放数据域文件夹外的业务代码",{"2":{"550":1}}],["其实不用宏也可以定制本地化的",{"2":{"380":1}}],["其他的像颜色",{"2":{"668":1}}],["其他的一些修改",{"2":{"382":1}}],["其他兼容性问题",{"2":{"623":1}}],["其他常见优化手段",{"0":{"583":1}}],["其他颜色",{"2":{"570":1}}],["其他js层未捕获异常",{"2":{"512":1}}],["其他",{"2":{"379":1,"384":2,"565":1,"760":1}}],["其他版本",{"2":{"326":1}}],["其格式优先级为",{"2":{"359":1}}],["其余删除",{"2":{"861":1}}],["其余部分都必须放cdn进行延迟加载",{"2":{"684":1}}],["其余的都建议选择",{"2":{"665":1}}],["其余值使用timer控制",{"2":{"600":1}}],["其余年限跟随微信纹理压缩支持版本进行选择",{"2":{"351":1}}],["其余格式请勿设置",{"2":{"347":1}}],["其中api项目为常见到使用范例",{"2":{"860":1}}],["其中静态摆放的物件不单独设置为addressable也会一并打包到场景所在bundle",{"2":{"781":1}}],["其中$unity",{"2":{"757":1}}],["其中自动上报为unity",{"2":{"681":1}}],["其中xxx为js对象",{"2":{"647":1}}],["其中webgl1",{"2":{"587":1}}],["其中webgl目录结构如下",{"2":{"386":1}}],["其中部分配置可通过转换插件面板快速修改",{"2":{"453":1}}],["其中小游戏工程导出目录路径来自",{"2":{"367":1}}],["其中2019必须使用unity与微信合作的instant",{"2":{"351":1}}],["其中",{"2":{"333":1,"430":1,"449":1,"498":1,"552":1,"554":1,"748":1,"825":1,"855":1}}],["禁用了部分不常用的后处理",{"2":{"382":1}}],["禁用mipmap",{"2":{"333":1}}],["禁用readable",{"2":{"333":1}}],["从systeminfo",{"2":{"932":1}}],["从本地加载中文",{"2":{"854":1}}],["从服务器下载bundle的方式主要以下两种",{"2":{"798":1}}],["从首包开始",{"0":{"779":1}}],["从启动时序可以知道loader启动阶段分为以下五个阶段",{"2":{"682":1}}],["从小游戏的运行周期来看",{"2":{"623":1}}],["从下图看到程序在第",{"2":{"402":1}}],["从而再次降低首资源包体积",{"2":{"353":1}}],["从",{"2":{"352":1}}],["从library",{"2":{"333":1}}],["从unity",{"2":{"324":1}}],["搜素maxsize大于512纹理",{"2":{"333":1}}],["搜索关键字",{"2":{"898":1}}],["搜索wasm",{"2":{"895":1}}],["搜索已开启readable纹理",{"2":{"333":1}}],["搜索已开启了mipmap的纹理",{"2":{"333":1}}],["搜索非pot图片",{"2":{"333":1}}],["搜索规则",{"2":{"333":1}}],["选择增量更新时可查看首包个数",{"2":{"909":1}}],["选择生成profile或者release包",{"2":{"871":1}}],["选择是否增量分包",{"0":{"876":1},"2":{"864":1,"871":1}}],["选择分组",{"2":{"781":1}}],["选择建议",{"2":{"685":1}}],["选择哪种渲染管线",{"0":{"664":1}}],["选择对应的设备",{"2":{"568":1}}],["选择符合当前游戏的方案",{"2":{"474":1}}],["选择",{"2":{"379":5,"498":1}}],["选云端安装依赖即可",{"2":{"338":1}}],["选中javascript",{"2":{"467":1}}],["选中",{"2":{"379":2,"781":1}}],["选中需要部署的云函数",{"2":{"338":1}}],["选中需要部署的云函数环境",{"2":{"338":1}}],["选中一个资源",{"2":{"333":1}}],["选中目录",{"2":{"333":1}}],["选项表示",{"2":{"402":1}}],["选项",{"2":{"9":1,"823":1}}],["最新占比请查阅基础库版本分布",{"2":{"926":1}}],["最新版本chrome",{"2":{"329":1}}],["最后收集时间",{"2":{"909":1}}],["最后一步这里已经可以随时上传体验版了",{"2":{"871":1}}],["最后一列dpi",{"2":{"601":1}}],["最多并发10个预下载",{"2":{"843":1}}],["最多支持",{"2":{"382":1}}],["最近使用时间的目录",{"2":{"823":1}}],["最基本的异步回调",{"0":{"785":1}}],["最差情况下",{"2":{"766":1}}],["最差的情况将使用",{"2":{"359":1}}],["最长帧信息",{"2":{"657":1}}],["最佳实践是业务应该尽可能早地使用ab",{"2":{"803":1}}],["最佳实践检测配置",{"2":{"641":1}}],["最佳实践检测工具",{"0":{"639":1},"1":{"640":1,"641":1,"642":1,"643":1,"644":1,"645":1,"646":1,"647":1,"648":1,"649":1,"650":1,"651":1,"652":1,"653":1,"654":1,"655":1,"656":1,"657":1,"658":1,"659":1,"660":1},"2":{"639":1,"967":1}}],["最佳实践",{"0":{"633":1},"1":{"634":1,"635":1,"636":1,"637":1,"638":1}}],["最佳实践预下载及网络下载检测项调整",{"2":{"67":1}}],["最小值",{"2":{"570":1}}],["最强战力排行榜",{"2":{"561":1}}],["最好不要超过1024",{"2":{"667":1}}],["最好能提供非业务相关的可复现代码片段",{"2":{"507":1}}],["最好有截图",{"2":{"507":1}}],["最开始执行的逻辑是callmain主函数",{"2":{"468":1}}],["最大内存",{"2":{"754":1}}],["最大并发数",{"2":{"654":1}}],["最大阻塞时间",{"2":{"651":1}}],["最大值",{"2":{"570":1}}],["最大缓存容量",{"2":{"453":1,"461":1}}],["最大不要超过1024",{"2":{"334":1}}],["最终到游戏内有可能会上涨到和原来差不多",{"2":{"897":1}}],["最终被绘制在了屏幕的位置和尺寸",{"2":{"562":1}}],["最终会调用",{"2":{"554":1}}],["最终会导致",{"2":{"402":1}}],["最终生成的多份格式资源中",{"2":{"347":1}}],["最清晰内存占用也会升高",{"2":{"347":1}}],["游戏转换到微信小游戏的开发成本",{"2":{"963":1}}],["游戏转化至微信小游戏平台的能力",{"2":{"501":1}}],["游戏logo动画",{"0":{"956":1}}],["游戏端内因为跨域问题会读取不到",{"2":{"946":1}}],["游戏帧率都会得到明显改善",{"2":{"939":1}}],["游戏本身是否需要做修改",{"0":{"946":1},"2":{"934":1}}],["游戏运行会随着收集越来越流畅",{"2":{"889":1}}],["游戏运行时长",{"2":{"657":1}}],["游戏加载完整",{"2":{"883":1}}],["游戏加载速度都会有提升",{"2":{"669":1}}],["游戏最初的关卡内容",{"2":{"868":1}}],["游戏内容难以遍历完整怎么办",{"0":{"885":1},"2":{"864":1}}],["游戏内资源按需加载",{"0":{"728":1}}],["游戏基本会使用中文",{"2":{"854":1}}],["游戏首个场景加载以及awake流程",{"2":{"843":1}}],["游戏首个data资源文件",{"2":{"611":1,"625":1}}],["游戏缓存目录",{"2":{"823":1}}],["游戏业务awake逻辑耗时较高时可能导致出现短暂黑屏",{"2":{"814":1}}],["游戏业务侧无需关心资源是否有缓存",{"2":{"450":1}}],["游戏存在备用cdn地址",{"2":{"811":1}}],["游戏不再直接读写文件系统",{"2":{"799":1}}],["游戏不依赖",{"2":{"663":1}}],["游戏发新版本后",{"2":{"766":1}}],["游戏是横屏还是竖屏",{"2":{"748":1}}],["游戏方向",{"2":{"748":1,"754":1}}],["游戏appid",{"2":{"748":1}}],["游戏较大",{"2":{"689":1}}],["游戏总包体积较小",{"2":{"688":1}}],["游戏原本发布原生",{"2":{"687":1}}],["游戏开发者可以根据自己游戏的类型进行不同的优化策略来提升实际的游戏体验",{"2":{"686":1}}],["游戏通常安装与启动时将资源都下载完成",{"2":{"684":1}}],["游戏完成所有加载时上报",{"2":{"681":1}}],["游戏在可用内存和性能对比",{"2":{"674":1}}],["游戏在微信手机平台的渲染性能优化一些建议",{"2":{"662":1}}],["游戏在微信开发者工具中运行缺失资源",{"0":{"505":1}}],["游戏前期不应加载子包",{"2":{"652":1}}],["游戏类型说明",{"0":{"618":1}}],["游戏类目包括",{"2":{"445":1}}],["游戏类目",{"0":{"445":1}}],["游戏可交互耗时",{"2":{"617":1}}],["游戏可交互完成",{"2":{"611":1,"625":1,"628":1,"629":1}}],["游戏核心场景完成",{"2":{"611":1,"625":1}}],["游戏启动速度",{"2":{"967":1}}],["游戏启动初始阶段",{"2":{"938":1}}],["游戏启动很烫",{"0":{"951":1},"2":{"934":1}}],["游戏启动调用wechatwasm",{"2":{"823":1}}],["游戏启动耗时",{"2":{"611":1,"625":1}}],["游戏启动将会有10s黑屏",{"2":{"329":1}}],["游戏初始化完成耗时",{"2":{"617":1}}],["游戏初始化完成",{"2":{"611":1,"625":1,"628":1,"629":1}}],["游戏代码压缩包",{"2":{"611":1,"625":1}}],["游戏代码的异常将被捕捉",{"2":{"402":1}}],["游戏占用内存必须以真机环境为准",{"2":{"584":1}}],["游戏占用更大的内存",{"2":{"564":1}}],["游戏左上角显示performence",{"2":{"570":1}}],["游戏状态",{"2":{"570":1}}],["游戏逻辑依然按未使用预下载的异步加载逻辑",{"2":{"853":1}}],["游戏逻辑还是按照未缓存需要从网络下载去编写",{"2":{"799":1}}],["游戏逻辑分配的c",{"2":{"565":1}}],["游戏逻辑是否能使用lua",{"0":{"426":1}}],["游戏引擎比如",{"2":{"558":1}}],["游戏的启动自然不能始终等待这段空隙",{"2":{"520":1}}],["游戏厂家启动logo",{"2":{"516":1}}],["游戏世界观",{"2":{"516":1}}],["游戏工程可以导出但在微信开发者工具运行提示报错",{"0":{"697":1}}],["游戏工程本身已采用完善的",{"2":{"685":1}}],["游戏工程没有使用",{"2":{"502":1}}],["游戏工程在较少的代码修改的情况下完成微信小游戏平台的运行",{"2":{"502":1}}],["游戏相关运行数据请前往",{"2":{"488":1}}],["游戏将在微信小游戏平台成功启动运行",{"2":{"481":1}}],["游戏接入微信小游戏平台的一个重点优化的工作",{"2":{"482":1}}],["游戏接入微信小游戏平台将获得微信提供的",{"2":{"479":1}}],["游戏接入微信小游戏指南",{"0":{"470":1},"1":{"471":1,"472":1,"473":1,"474":1,"475":1,"476":1,"477":1,"478":1,"479":1,"480":1,"481":1,"482":1,"483":1,"484":1,"485":1,"486":1,"487":1,"488":1}}],["游戏很少考虑场景内的资源规划问题",{"2":{"474":1}}],["游戏资源cdn下不自动缓存的文件类型",{"2":{"748":1}}],["游戏资源cdn为首包资源所在的http或cdn目录",{"2":{"498":1}}],["游戏资源cdn",{"2":{"413":1,"498":1,"748":1,"754":1}}],["游戏项目工程已经安装好",{"2":{"379":1}}],["游戏所需资源下载的总量没变",{"2":{"361":1}}],["游戏实际运行时将劫持渲染时根据资源指针以及当前设备gpu所支持的纹理格式进行远程加载",{"2":{"355":1}}],["游戏异常时增加重启游戏按钮",{"2":{"201":1}}],["$stream",{"2":{"847":1}}],["$symbol",{"2":{"329":1}}],["$preload",{"2":{"846":1,"847":1}}],["$load",{"2":{"816":1,"817":1}}],["$loading",{"2":{"374":1,"375":1,"376":2,"813":2,"814":2}}],["$",{"2":{"781":1}}],["$verson",{"2":{"661":2,"757":2}}],["$hide",{"2":{"374":1,"375":1,"376":1,"813":1,"814":1}}],["$background",{"2":{"374":1,"375":1,"376":1,"813":1,"814":1}}],["$unity",{"2":{"364":2,"661":2,"757":2}}],["$cpuprofile",{"2":{"329":1}}],["有两个地方可安装插件",{"2":{"895":1}}],["有两种解决方案选择其一即可",{"2":{"362":1}}],["有两种做法进行解读",{"2":{"329":1}}],["有玩家遇到新增函数个数",{"2":{"881":1}}],["有条件的话",{"2":{"879":1}}],["有条件的建议分别打对应的包",{"2":{"663":1}}],["有人力情况下建议升级2021",{"2":{"762":1}}],["有助于更好地分析webgl内存使用",{"2":{"760":1}}],["有助于提升渲染兼容性",{"2":{"9":1}}],["有哪些文件需要放cdn服务器",{"2":{"717":1}}],["有差距",{"2":{"674":1}}],["有优化空间",{"2":{"670":1}}],["有需要投射或接受阴影的物体才去设置",{"2":{"667":1}}],["有需要根据项目实际情况",{"2":{"384":1}}],["有大量可能游戏用不上的冗余属性",{"2":{"663":1}}],["有网络请求的总时长",{"2":{"654":1}}],["有上报游戏可交互wx",{"2":{"641":1}}],["有以下几点原因",{"2":{"631":1}}],["有关",{"2":{"685":1}}],["有关自定义上报详细内容请参考",{"2":{"521":1}}],["有关分包策略可参阅",{"2":{"474":1}}],["有200mb存储上限",{"2":{"441":1}}],["有10mb存储上限",{"2":{"441":1}}],["有效减少",{"2":{"485":1}}],["有效",{"2":{"402":1}}],["有效降低内存",{"2":{"340":1}}],["有相关",{"2":{"381":1}}],["有一些共同点是可以参考的",{"2":{"381":1}}],["有了编译宏可以保留",{"2":{"380":1}}],["有些",{"2":{"379":1}}],["有些功能可能是用不上",{"2":{"378":1}}],["特点",{"2":{"687":1,"688":1,"689":1}}],["特效",{"0":{"675":1}}],["特别建议使用wasm",{"2":{"943":1,"952":1}}],["特别是启动后最先进入的场景和关卡",{"2":{"868":1}}],["特别是启动发烫与内存方面",{"2":{"589":1}}],["特别是",{"2":{"830":1,"843":1}}],["特别是在有lua逻辑的情况",{"0":{"828":1}}],["特别地",{"2":{"798":1,"832":1,"837":1,"936":1}}],["特别地请避免使用fmod播放长音频",{"2":{"565":1}}],["特别注意不要随意放置资源到resources目录",{"2":{"779":1}}],["特殊情况下",{"2":{"329":1}}],["特性支持",{"2":{"0":1,"11":1,"14":1,"17":1,"19":1,"24":1,"36":1}}],["或通过js接口",{"2":{"849":1}}],["或js接口",{"2":{"811":1}}],["或协程写法",{"2":{"782":1}}],["或在内存中创建资源对象",{"2":{"782":1}}],["或新addressable",{"2":{"732":1}}],["或资源包是否需每次下载",{"2":{"717":1}}],["或较少使用",{"2":{"689":1}}],["或停止检测时",{"2":{"649":1}}],["或是否下载过慢",{"2":{"649":1}}],["或是通过以下方式将它在浏览器显示出来",{"2":{"329":1}}],["或日志查看",{"2":{"611":2,"625":2}}],["或unity",{"2":{"570":1,"580":1}}],["或",{"0":{"411":1},"2":{"461":1,"476":1,"500":1,"584":1,"670":2,"725":1,"822":1,"836":1,"947":1,"949":1}}],["或使用代码分包",{"2":{"399":1}}],["或者是小程序appid",{"2":{"962":1}}],["或者看framework最后的api",{"2":{"897":1}}],["或者新增函数较多",{"2":{"889":1}}],["或者收到小游戏数据助手的相关告警",{"2":{"881":1}}],["或者减少顶点的受影响的骨骼权重数",{"2":{"670":1}}],["或者对硬件优化不友好",{"2":{"668":1}}],["或者自定义了bundle的生成目录",{"2":{"390":1}}],["或者右键云函数",{"2":{"338":1}}],["或者",{"2":{"337":1,"384":1,"397":1,"463":1,"836":1,"839":1}}],["或development时才能在函数堆栈中看到可读函数名",{"2":{"329":1}}],["或mp文档",{"2":{"105":1}}],["推荐版本",{"0":{"760":1}}],["推荐缓存到本地",{"2":{"655":1}}],["推荐由游戏自行控制加载时机",{"2":{"649":1}}],["推荐使用db",{"2":{"823":1}}],["推荐使用",{"2":{"689":1}}],["推荐使用catalog",{"2":{"655":1}}],["推荐使用unity",{"2":{"572":1}}],["推荐使用小游戏包内图片",{"2":{"375":1}}],["推荐开发者在",{"2":{"532":1}}],["推荐内容",{"0":{"516":1}}],["推荐引擎版本",{"0":{"758":1},"1":{"759":1,"760":1,"761":1,"762":1},"2":{"471":1,"664":1,"757":1,"967":1}}],["推荐发布使用",{"2":{"402":1}}],["推荐配置",{"2":{"401":1}}],["推荐",{"0":{"592":1,"732":1,"733":1,"848":1},"1":{"849":1,"850":1},"2":{"329":1,"441":1,"800":1,"837":1,"949":1}}],["注",{"2":{"683":1,"956":1}}],["注销启动剧情全局变量变化时回调",{"2":{"539":1}}],["注销当发生弱网情况时的回调事件",{"2":{"535":1}}],["注销当发生异常时的回调事件",{"2":{"533":1}}],["注销当剧情结束时配置的回调事件",{"2":{"531":1,"546":1}}],["注册回调",{"2":{"834":1,"836":1,"838":1}}],["注册开通小游戏请查阅快速上手",{"2":{"748":1}}],["注册的回调只会产生1次",{"2":{"545":1}}],["注册当发生异常时的回调事件",{"2":{"532":1}}],["注册当剧情结束时的回调事件",{"2":{"530":1,"545":1}}],["注册一些其他的启动剧情事件回调",{"2":{"519":1}}],["注册一个小游戏帐号",{"2":{"407":1}}],["注册进度事件",{"2":{"183":1}}],["注意是预览",{"2":{"878":1}}],["注意onmessage参数与文档不同",{"2":{"834":1}}],["注意浮点精度的使用",{"2":{"668":1}}],["注意这里传x",{"2":{"560":2}}],["注意左上角为",{"2":{"554":1}}],["注意项",{"0":{"465":1},"2":{"448":1}}],["注意bundle命名规则和缓存策略即可",{"2":{"423":1}}],["注意事项第五点",{"2":{"649":1}}],["注意事项",{"0":{"384":1,"839":1,"853":1,"862":1,"881":1},"1":{"840":1,"841":1},"2":{"757":1,"800":1,"864":1}}],["注意正式环境cdn一定要开启brotli或者gzip",{"2":{"357":1}}],["注意修改纹理尺寸",{"2":{"334":1}}],["注意",{"0":{"962":1},"2":{"329":1,"333":1,"338":1,"375":1,"379":1,"380":3,"388":1,"397":1,"402":1,"460":1,"461":1,"498":1,"570":2,"751":1,"796":1,"834":1,"838":1,"875":1,"966":1}}],["视图得渲染应该会恢复正常的",{"2":{"379":1}}],["视图可能显示粉红色的渲染异常",{"2":{"379":1}}],["视图有多种方式",{"2":{"329":1}}],["视频编码",{"2":{"956":1}}],["视频会在",{"2":{"956":1}}],["视频时长",{"2":{"956":1}}],["视频尺寸",{"2":{"956":1}}],["视频分辨率",{"2":{"956":1}}],["视频规范",{"2":{"956":1}}],["视频格式参考",{"2":{"956":1}}],["视频格式请参考视频规范",{"2":{"498":1,"748":1}}],["视频设计",{"0":{"955":1},"1":{"956":1}}],["视频范例",{"2":{"794":1}}],["视频封面图",{"2":{"748":1}}],["视频url",{"2":{"498":1,"814":1}}],["视频内容",{"2":{"487":1}}],["视频等内容作为加载期间的过渡来留住玩家",{"2":{"487":1}}],["视频可播放后",{"2":{"375":1,"377":1,"814":1}}],["视频",{"2":{"372":1,"524":1,"812":1}}],["视频透明时全局清理标记",{"2":{"113":1}}],["jit",{"2":{"935":1,"951":1,"953":1}}],["jianshu",{"2":{"794":1}}],["j23511",{"2":{"744":1}}],["j88421",{"2":{"744":2}}],["jankrate",{"2":{"657":1,"658":1}}],["javascript内存",{"2":{"577":1}}],["javascriptcore中还需要大量内存进行jit优化",{"2":{"565":1}}],["javascript侧",{"0":{"526":1},"1":{"527":1,"528":1,"529":1,"530":1,"531":1,"532":1,"533":1,"534":1,"535":1,"536":1,"537":1,"538":1,"539":1}}],["javascript环境",{"2":{"475":1}}],["javascriptwx",{"2":{"338":1}}],["javascript",{"0":{"573":1},"1":{"574":1,"575":1,"576":1},"2":{"338":1,"517":1,"519":1,"520":1,"525":4,"526":1,"566":1,"577":2,"830":1,"832":1}}],["javascript探测器",{"2":{"329":1}}],["jpg",{"2":{"377":1}}],["js相关的日志",{"2":{"881":1}}],["js前面import部分",{"2":{"861":1}}],["js手动配置",{"2":{"847":1}}],["js临时内存等",{"2":{"822":1}}],["jsdata",{"2":{"817":1}}],["jsd2vshnvkzexjlsc6ba3guqc8d",{"2":{"794":1}}],["jsgamemanager",{"2":{"682":1}}],["jsgameglobal",{"2":{"523":1,"528":1}}],["js修改",{"2":{"641":1}}],["js增加以下代码",{"2":{"601":1}}],["js增加代码",{"2":{"397":1,"410":1,"463":1}}],["js的运行差异",{"0":{"588":1}}],["js的preload列表",{"2":{"304":1}}],["jswx",{"2":{"556":1,"849":2}}],["jsopendatacontext",{"2":{"554":1}}],["jsonmapper",{"2":{"834":2,"838":1}}],["json中声明",{"2":{"807":1}}],["json中plugins",{"2":{"417":1}}],["json的hash",{"2":{"655":1}}],["json的文件不会被自动缓存",{"2":{"455":1}}],["json缓存到本地若无版本标识",{"2":{"655":1}}],["json被缓存且无hash",{"2":{"655":1}}],["json记录了所有资源文件的描述信息和依赖关系",{"2":{"655":1}}],["json配置为可缓存文件",{"2":{"655":1}}],["json文件名带hash的方式来管理catalog版本",{"2":{"655":1}}],["json文件用来记录打包配置",{"2":{"655":1}}],["json文件打开",{"2":{"379":2}}],["json是否带上了hash或其他用于区分版本的信息",{"2":{"654":1}}],["json是否自动缓存",{"2":{"654":2}}],["json解析大文件",{"2":{"596":1}}],["jsonutility",{"2":{"556":1,"560":1,"561":1,"850":1}}],["json或读取错误",{"0":{"408":1}}],["json未找到",{"0":{"407":1}}],["json和catalog",{"2":{"392":1}}],["json",{"2":{"338":3,"386":1,"392":1,"453":1,"465":1,"556":1,"557":1,"654":2,"655":1,"807":1,"848":1,"850":2,"940":1}}],["jslib做两处修改",{"2":{"836":1}}],["jslet",{"2":{"817":1,"847":1}}],["jslaunchopera",{"2":{"532":1,"534":1}}],["jsloadingpageconfig",{"2":{"377":1,"814":1}}],["jsconsole",{"2":{"527":1}}],["js文件",{"2":{"469":1}}],["js打开详细日志开关enabledebuglog",{"2":{"463":1}}],["js中hidetimelogmodal为false",{"2":{"723":1}}],["js中enableprofilestats变量打开性能面板",{"2":{"570":1,"580":1}}],["js中iserasablefilejavascript函数自行控制",{"2":{"460":1}}],["js中releasememorysize修改",{"2":{"237":1}}],["jsbgimagesrc",{"2":{"376":1}}],["jshideaftercallmain",{"2":{"375":1}}],["js配置",{"0":{"375":1,"814":1,"817":1}}],["js异常处理",{"0":{"360":1}}],["js末尾代码稍作修改",{"2":{"329":1}}],["js依赖",{"2":{"72":1}}],["js",{"0":{"344":1,"512":1},"2":{"48":1,"102":1,"279":1,"338":1,"344":2,"360":4,"375":1,"377":1,"386":2,"460":1,"467":1,"509":1,"519":3,"525":1,"554":1,"558":2,"564":1,"588":1,"617":1,"641":1,"661":4,"744":3,"757":5,"820":1,"823":1,"837":1,"846":1,"857":1}}],["js部分环境变量丢失问题",{"2":{"1":1}}],["以便两种模式对比",{"2":{"940":1}}],["以便清理掉该文件的旧缓存",{"2":{"465":1}}],["以支持更多",{"2":{"867":1}}],["以zip压缩后体积为准",{"2":{"779":1}}],["以减少函数量",{"2":{"726":1}}],["以休闲娱乐为主",{"2":{"618":1}}],["以达到买量用户覆盖度",{"2":{"590":1}}],["以达到和游戏更贴近的体验",{"2":{"377":1}}],["以实际游戏为准",{"2":{"580":1}}],["以实现一个服务端校验内容安全的云函数为例对云开发流程进行简单介绍",{"2":{"338":1}}],["以上内存机型的内存限制为",{"2":{"942":1}}],["以上的时候就可以接受了",{"2":{"884":1}}],["以上就差不多了",{"2":{"878":1}}],["以上",{"2":{"578":1,"588":1}}],["以ios高性能模式为例",{"2":{"577":1}}],["以为您跳过剧情",{"2":{"534":1}}],["以视频",{"2":{"515":1}}],["以ugui的input组件为例",{"2":{"491":1}}],["以addressables为例",{"2":{"458":1}}],["以代码为例",{"2":{"402":1}}],["以文本方式打开导出目录",{"2":{"400":1}}],["以及是否有更换引擎或者其他导致代码变动较大的操作",{"2":{"893":1}}],["以及是否命中缓存",{"2":{"450":1}}],["以及列表中尚未发起的任务",{"2":{"843":1}}],["以及使用带证书的https",{"2":{"839":1}}],["以及其中的资源引用到的其他资源",{"2":{"725":1}}],["以及",{"2":{"684":1}}],["以及不同系统平台",{"2":{"586":1}}],["以及减少脚本编译的时间",{"2":{"486":1}}],["以及开放能力",{"2":{"479":1}}],["以及assetbundles打包生成的配置文件通常没有带上hash",{"2":{"392":1}}],["以及js接口gameglobal",{"2":{"145":2}}],["以下为视频建议参数",{"2":{"956":1}}],["以下为使用协程方式发送",{"2":{"832":1}}],["以下为默认值",{"2":{"523":1,"528":1}}],["以下是默认值",{"2":{"814":1}}],["以下简称addressable",{"2":{"774":1}}],["以下几种命名都能识别到版本号8d265a9dfd6cb7669cdb8b726f0afb1e",{"2":{"458":1}}],["以下配置的样式",{"2":{"375":1}}],["以下示例为独立项目的模式",{"2":{"338":1}}],["以",{"2":{"338":1,"673":1}}],["以设定规则修复列表中选中的资源",{"2":{"333":1}}],["以设定规则扫描目录下文件",{"2":{"333":1}}],["以edge为例",{"2":{"329":1}}],["录制结束后",{"2":{"329":1}}],["该运行模式下",{"2":{"935":1}}],["该",{"2":{"830":1}}],["该工具仅分析业务与引擎的cpu内存",{"2":{"822":1}}],["该工具能够降低游戏的运行时内存情况",{"2":{"355":1}}],["该如何加载",{"2":{"781":1}}],["该目录将无条件被打包到首包中",{"2":{"779":1}}],["该目录将被直接打包在首资源包",{"2":{"635":1}}],["该版本是对特定正式版本的增强",{"2":{"762":1}}],["该类游戏需要耐心调优",{"2":{"689":1}}],["该数据将显著影响用户打开留存率",{"2":{"623":1}}],["该接口使用前需自行判断是否满足基础库版本要求",{"2":{"606":1}}],["该值仅表示unityheap的峰值进行预留",{"2":{"580":1}}],["该文件是",{"2":{"519":1}}],["该文件格式可以使用chrome进行解析",{"2":{"329":1}}],["该格式并非",{"2":{"494":1}}],["该格式是要求高宽必须为",{"2":{"359":1}}],["该能力可以有效降低内存的使用",{"2":{"486":1}}],["该能力仍在兼容一些特殊的应用场景",{"2":{"351":1}}],["该提示仅在开发版本提示",{"2":{"412":1}}],["该选项建议一直开启",{"2":{"493":1}}],["该选项产生的代码体积较大",{"2":{"404":1}}],["该选项性能最高",{"2":{"402":1}}],["该异常的",{"2":{"402":1}}],["该方法对应",{"2":{"367":1}}],["该函数为异步函数",{"2":{"367":1}}],["该功能可以利用此阶段的网络空闲期进行资源下载",{"2":{"727":1}}],["该功能可以在不开启微信压缩纹理工具的情况下使用",{"2":{"353":1}}],["该功能需要两个必要条件",{"2":{"510":1}}],["该功能能够将首资源包中",{"2":{"353":1}}],["该过程等同执行微信压缩纹理的",{"2":{"352":1}}],["该小游戏首次使用云开发需要先开通云开发",{"2":{"338":1}}],["该模式将极大降低性能",{"2":{"329":1}}],["该特性处于测试阶段",{"2":{"258":1}}],["开通成功后",{"2":{"940":1}}],["开通后",{"2":{"683":1}}],["开通使用",{"2":{"415":1,"751":1,"966":1}}],["开放域js代码可以通过",{"2":{"556":1}}],["开放数据域才能够正确处理事件监听",{"2":{"562":1}}],["开放数据域监听相应事件",{"2":{"560":1,"561":1}}],["开放数据域的开发和普通小游戏并无区别",{"2":{"558":1}}],["开放数据域甚至可以忽略这个事件",{"2":{"554":1}}],["开放数据域接触到的",{"2":{"550":1}}],["开放数据域所有逻辑都在一个独立的文件夹内完成",{"2":{"550":1}}],["开放数据域虽然乍一看有点复杂",{"2":{"550":1}}],["开放数据",{"2":{"479":1,"863":1}}],["开始下载wasm子包的时间",{"2":{"651":1}}],["开始",{"2":{"554":1}}],["开始配置启动剧情",{"2":{"519":1}}],["开始游戏",{"2":{"375":1,"814":1}}],["开始处理",{"2":{"349":1}}],["开启后请验证进程内存",{"2":{"936":1}}],["开启后",{"2":{"928":1}}],["开启后会占用gpu显存和cpu内存",{"2":{"334":1}}],["开启调试",{"2":{"840":1}}],["开启调试时不检验安全域名",{"2":{"839":1}}],["开启调试模式则输出详细日志",{"2":{"326":1}}],["开启proflingmemory后非常慢",{"0":{"828":1}}],["开启性能面板可通过修改unity",{"2":{"823":1}}],["开启gzip",{"2":{"725":1}}],["开启代码异常",{"0":{"493":1}}],["开启云函数本地调试",{"2":{"338":1}}],["开启会增大1",{"2":{"334":1}}],["开发建议",{"0":{"859":1},"1":{"860":1,"861":1}}],["开发设置",{"2":{"840":1}}],["开发知识",{"2":{"558":1}}],["开发管理",{"2":{"511":1,"512":1,"840":1}}],["开发时通常将资源在游戏启动时全加载到内存中",{"2":{"474":1}}],["开发调试",{"2":{"467":1}}],["开发错误调试与排查",{"2":{"410":1,"477":1,"967":1}}],["开发者自行决定是否需要上传并打水印",{"2":{"961":1}}],["开发者务必验证游戏所用到的特性支持情况",{"2":{"927":1}}],["开发者一般不需要修改",{"2":{"815":1}}],["开发者无须自己实现缓存",{"2":{"799":1}}],["开发者无需手动修改",{"2":{"807":1}}],["开发者无需感知本地是否存在缓存",{"2":{"449":1}}],["开发者无需关心",{"2":{"449":1}}],["开发者在addressable的default中能看到所有这些资源",{"2":{"789":1}}],["开发者在管理后台发布新版本的小游戏之后",{"2":{"766":1}}],["开发者只需要将asset设置为addressable然后加载即可",{"2":{"775":1}}],["开发者只需在导出时配置启动素材即可",{"2":{"376":1}}],["开发者往往需要分析玩家从点击到进入游戏核心玩法的整个过程流失率",{"2":{"678":1}}],["开发者往往需要异常产生时的堆栈找到蛛丝马迹",{"2":{"494":1}}],["开发者依此对游戏的启动与运行性能进行调优",{"2":{"632":1}}],["开发者应尽量减少首资源包压缩后大小",{"2":{"779":1}}],["开发者应该特别注意cpu侧的性能瓶颈",{"2":{"587":1}}],["开发者应根据实际调试后运行效果按需配置",{"2":{"347":1}}],["开发者输入",{"2":{"523":1}}],["开发者配置上报后",{"2":{"521":1}}],["开发者埋点上报异常捕捉的信息",{"2":{"510":1}}],["开发者埋点上报购买物品",{"2":{"510":1}}],["开发者埋点打印日志",{"2":{"510":1}}],["开发者看通过c",{"2":{"510":1}}],["开发者也可通过使用wx",{"2":{"510":1}}],["开发者也可以通过wx",{"2":{"594":1}}],["开发者也可以通过",{"2":{"508":1}}],["开发者需要注意",{"2":{"726":1}}],["开发者需要注意的是",{"2":{"466":1,"727":1}}],["开发者需要关注哪些性能指标",{"0":{"617":1,"623":1}}],["开发者需要根据不同品类的游戏建立不同的最低机型要求和流畅度标准",{"2":{"590":1}}],["开发者需要收集玩家遇到的错误",{"2":{"509":1}}],["开发者遇到bug或者希望新增特性优先使用git",{"2":{"507":1}}],["开发者的",{"2":{"481":1}}],["开发者根据需要进行按需接入",{"2":{"479":1}}],["开发者工具插件偶现下载wk",{"2":{"907":1}}],["开发者工具上",{"2":{"870":1}}],["开发者工具上可以打开文件系统查看缓存文件",{"2":{"465":1}}],["开发者工具中展示的小游戏项目名",{"2":{"748":1}}],["开发者工具中使用png资源",{"2":{"349":1}}],["开发者工具或者线上打印出来的堆栈",{"2":{"744":1}}],["开发者工具提示pluginid",{"0":{"417":1}}],["开发者工具提示",{"0":{"415":1}}],["开发者工具",{"2":{"397":1,"463":1,"468":1}}],["开发者请联系助手",{"2":{"382":1}}],["开发者可通过三种途径收集到游戏异常数据",{"2":{"509":1}}],["开发者可阅读本文自行选择转换方案",{"2":{"501":1}}],["开发者可以自定义封面",{"2":{"812":1}}],["开发者可以自行补充后30",{"2":{"522":1}}],["开发者可以自行设计",{"2":{"520":1}}],["开发者可以在离线测试阶段",{"2":{"868":1}}],["开发者可以在后台下载到对应数据",{"2":{"510":1}}],["开发者可以在游戏内自助构建游戏导出脚本",{"2":{"365":1}}],["开发者可以操作的主要是playerloadfirstscene函数的调用",{"2":{"468":1}}],["开发者可自定义以下内容",{"2":{"372":1}}],["开发者使用转换方案时",{"2":{"506":1}}],["开发者使用的",{"2":{"384":1}}],["开发者使用忽略处理能力完成对资源的保留在ab包内",{"2":{"352":1}}],["开发者使用后需要进行详细的真机测试",{"2":{"351":1}}],["开发人员工具",{"2":{"329":1}}],["开发",{"2":{"254":1,"840":1}}],["开发阶段只有内网ip没正式域名",{"2":{"839":1}}],["开发阶段还没ssl证书可以跑起来吗",{"2":{"839":1}}],["开发阶段",{"2":{"737":1}}],["开发阶段的错误排查",{"0":{"477":1}}],["开发阶段分析内存",{"2":{"185":1}}],["开发阶段没显示耗时弹框",{"2":{"168":1}}],["开发版",{"2":{"86":1}}],["若图片无法显示",{"2":{"963":1}}],["若appid为测试号",{"2":{"962":1}}],["若有异常",{"2":{"961":1}}],["若遭遇恶意人员扒包抄袭",{"2":{"958":1}}],["若问题仍无法解决",{"2":{"898":1}}],["若不想使用水印功能",{"2":{"961":1}}],["若不满足客户端版本要求",{"2":{"855":1}}],["若不支持",{"2":{"814":1}}],["若填写相对路径",{"2":{"851":1}}],["若填写完成路径",{"2":{"851":1}}],["若填写bundledir则不可省略",{"2":{"368":1}}],["若想修改引擎初始化期间的并发数",{"2":{"843":1}}],["若手动将loaddatapackagefromsubpackage改为true",{"2":{"817":1}}],["若手动将loaddatapackagefromsubpackage改为false",{"2":{"817":1}}],["若已缓存",{"2":{"799":1}}],["若未缓存则缓存此bundle",{"2":{"799":1}}],["若作者认为不适合分享",{"2":{"698":1}}],["若加载时机过早",{"2":{"650":1}}],["若开发者未定义后30",{"2":{"522":1}}],["若开发者使用api调用执行",{"2":{"360":1}}],["若仍未得到结果",{"2":{"520":1}}],["若",{"2":{"519":1}}],["若存在404时",{"2":{"505":1}}],["若存在独立的ab包目录",{"2":{"368":1,"371":1}}],["若追求较好的游戏品质",{"2":{"502":1}}],["若游戏为休闲关卡类等小型游戏",{"2":{"502":1}}],["若小游戏是第一次使用本插件",{"2":{"498":1,"751":1}}],["若没有用到ab包则不需要填",{"2":{"498":1}}],["若授权后还是报错",{"2":{"498":1}}],["若本地已经有此文件的旧缓存",{"2":{"457":1}}],["若由步骤",{"2":{"430":1}}],["若启动封面无法打开vconsole",{"2":{"410":1}}],["若执行前已安装",{"2":{"360":1}}],["若资源支持以",{"2":{"359":1}}],["若使用的",{"2":{"683":1}}],["若使用期间存在异常影响正常的游戏发布可前往issues提出问题",{"2":{"354":1}}],["若使用了其他第三方",{"2":{"338":1}}],["若此前从未执行过微信压缩纹理",{"2":{"352":1}}],["若为开发版",{"2":{"326":1}}],["若新版本出现异常",{"2":{"86":1}}],["规则为",{"2":{"326":1}}],["同理",{"2":{"728":1}}],["同样的",{"2":{"817":1,"850":1}}],["同样地",{"2":{"596":1}}],["同样能接触",{"2":{"550":1}}],["同步",{"2":{"519":1}}],["同步和异步",{"2":{"306":1}}],["同",{"2":{"402":2}}],["同时我们对子包支持按需加载",{"2":{"883":1}}],["同时提审发布",{"2":{"881":1}}],["同时提供了包装好的unity",{"2":{"800":1}}],["同时推荐使用wxassetbundle更自动化地节省内存",{"2":{"795":1}}],["同时也能卸载资源",{"2":{"774":1}}],["同时它会自动管理并加载好该内容的全部依赖",{"2":{"774":1}}],["同时结合压缩纹理优化减少包体积",{"2":{"687":1}}],["同时分阶段的耗时分布有利于帮助我们分析该阶段的对应耗时的用户占比",{"2":{"683":1}}],["同时会忽略monitorduration的值",{"2":{"641":1}}],["同时存在的音频数不应该超过20个",{"2":{"582":1}}],["同时自动释放注册的事件",{"2":{"530":1}}],["同时要注意避免频繁的同步接口调用",{"2":{"441":1}}],["同时需要注意实际未使用关系链数据时请删掉game",{"2":{"417":1}}],["同时",{"2":{"392":1,"460":1,"580":1,"726":1,"782":1}}],["同时由于小游戏总包体不能超过20mb",{"2":{"388":1}}],["同时纹理从ab中剥离出来",{"2":{"341":1}}],["同版本",{"2":{"343":1}}],["同名文件缓存未清理",{"2":{"241":1}}],["仅供参考",{"2":{"956":1}}],["仅表示发布时间",{"2":{"774":1}}],["仅dxt",{"2":{"760":2}}],["仅ios高性能",{"2":{"651":1}}],["仅安卓",{"2":{"651":1}}],["仅当showresultafterlaunch=false时有效",{"2":{"641":1}}],["仅包含简单操作",{"2":{"618":1}}],["仅包含线上用户数据",{"2":{"611":1}}],["仅支持ios",{"2":{"601":1}}],["仅支持webgl1",{"2":{"447":1}}],["仅支持2021以上版本",{"2":{"115":1}}],["仅仅是ab包内部分纹理资源渲染不佳",{"2":{"352":1}}],["仅调试问题时勾选此选项时",{"2":{"280":1}}],["并处罚恶意抄袭人员",{"2":{"958":1}}],["并尽量覆盖游戏内的场景",{"2":{"868":1}}],["并修改lualib",{"2":{"828":1}}],["并勾选导出选项",{"2":{"823":1}}],["并将cdn地址填写到game",{"2":{"817":1}}],["并将这些资源托管至",{"2":{"502":1}}],["并重新为someprefab赋值",{"2":{"782":1}}],["并了解启动loader在加载资源时的缓存逻辑",{"2":{"750":1}}],["并设置",{"2":{"726":1}}],["并使用微信小游戏文件存储系统进行缓存",{"2":{"776":1}}],["并使用loadassetasync等异步接口",{"2":{"687":1}}],["并使用上一代稳定版微信纹理压缩包",{"2":{"354":1}}],["并发数较少可能导致细碎文件较多时网络利用率不高",{"2":{"655":1}}],["并发数数",{"2":{"653":1}}],["并不能反应真实使用情况",{"2":{"593":1}}],["并不包含小游戏公共库",{"2":{"584":1}}],["并不是undo",{"2":{"333":1}}],["并非每个unity版本unityprofiler都稳定",{"2":{"757":1}}],["并非用",{"2":{"663":1}}],["并非全部",{"2":{"573":1}}],["并非所有文件都适合持久化缓存",{"2":{"455":1}}],["并及时弹出可退出剧情的按钮由用户主动放弃剧情",{"2":{"524":1}}],["并在console输入命令",{"2":{"823":1}}],["并在2019的版本中已经成为正式版本",{"2":{"774":1}}],["并在后续合理的时机完成故事线的切换",{"2":{"520":1}}],["并在渲染期间做了兜底的渲染策略",{"2":{"359":1}}],["并导入至游戏项目中",{"2":{"497":1}}],["并导致程序",{"2":{"402":1}}],["并安装brotli",{"2":{"496":1}}],["并做简单的逻辑修改来适配",{"2":{"491":1}}],["并前往",{"2":{"476":1}}],["并正确设置导出面板的",{"2":{"413":1}}],["并申请为小游戏服务类目",{"2":{"407":1}}],["并选中",{"2":{"379":1}}],["并编辑",{"2":{"364":1}}],["并按需忽略部分不希望执行压缩纹理的bundle资源",{"2":{"349":1}}],["并且有新增函数",{"2":{"889":1}}],["并且有一个完善的profiler帮助你指出潜在的内存问题",{"2":{"774":1}}],["并且由于",{"2":{"832":1}}],["并且能够跟随项目git等代码版本托管迭代",{"2":{"525":1}}],["并且进度条前70",{"2":{"522":1}}],["并且unity",{"2":{"496":1}}],["并且unity也是默认关闭",{"2":{"334":1}}],["并且为了避免频繁触发清理",{"2":{"460":1}}],["并且已经切换到",{"2":{"379":1}}],["并且不支持",{"2":{"347":1}}],["并检查环境变量是否生效",{"2":{"344":1}}],["并自动提交用户反馈日志",{"2":{"279":1}}],["并支持不同的块大小",{"2":{"133":1}}],["程序捕捉的异常",{"2":{"402":1}}],["程序捕捉异常",{"2":{"402":1}}],["程序未捕捉异常有最浅层堆栈函数名",{"2":{"402":1}}],["程序未捕捉异常",{"2":{"402":2}}],["程序即将crash之前弹出用户反馈入口",{"2":{"279":1}}],["程序crash时触发用户反馈入口",{"2":{"276":1}}],["更换正确的appid后重新检测即可",{"2":{"962":1}}],["更换引擎",{"2":{"876":1}}],["更适合以下游戏需求",{"2":{"925":1}}],["更节省内存的wxassetbundle",{"0":{"800":1}}],["更小的编译体积",{"2":{"762":1}}],["更快的编译速度与更小的体积",{"2":{"760":1}}],["更快编译和更小体积",{"2":{"446":1}}],["更好",{"2":{"685":1}}],["更早的运行时机",{"2":{"515":1}}],["更建议使用服务器或云开发进行定期存储",{"2":{"423":1}}],["更多转换案例",{"2":{"965":1,"967":1}}],["更多信息请阅读",{"2":{"635":1,"636":1,"637":1,"638":1}}],["更多信息请参考定制启动封面",{"2":{"814":1}}],["更多信息请参考",{"2":{"634":1}}],["更多信息可查看unityloader",{"2":{"388":1}}],["更多小游戏成功转换案例",{"2":{"471":1}}],["更多使用细节参考云调用文档",{"2":{"338":1}}],["更多文档和示例请参考云函数文档",{"2":{"338":1}}],["更多工具",{"2":{"329":2}}],["更接近unity的api调用方式",{"2":{"278":1}}],["更新",{"2":{"901":1}}],["更新分包插件后",{"2":{"892":1}}],["更新插件即可",{"2":{"891":1}}],["更新插件版本为1",{"2":{"214":1}}],["更新不及时",{"2":{"766":1}}],["更新策略",{"0":{"765":1},"1":{"766":1,"767":1,"768":1,"769":1}}],["更新时间",{"2":{"610":1}}],["更新后",{"2":{"348":1}}],["更新独立域插件版本",{"2":{"222":1}}],["更新独立域插件版本为1",{"2":{"218":1,"220":1}}],["更新独立域插件版本1",{"2":{"203":1,"205":1}}],["更新压缩纹理工具使用方式",{"2":{"216":1}}],["更新启动插件1",{"2":{"89":1}}],["更新需手动删除assets",{"2":{"86":1}}],["更新适配插件1",{"2":{"59":1,"62":1,"80":1,"83":1}}],["更新适配插件为1",{"2":{"53":1}}],["更新适配插件版本到1",{"2":{"6":1,"20":1,"38":1,"40":1,"43":1,"45":1}}],["更新内容",{"2":{"53":1}}],["更新小游戏项目模板",{"2":{"297":1}}],["更新小游戏模板",{"2":{"266":1,"270":1}}],["更新小游戏模板捕获全局错误",{"2":{"4":1}}],["更新小游戏云测试profile获取的性能数据",{"2":{"32":1}}],["提高可缓存数量",{"2":{"655":1}}],["提高下载成功率",{"2":{"449":1}}],["提前加载子包",{"2":{"883":1}}],["提前在unity环境使用unity",{"2":{"638":1}}],["提前结束启动剧情",{"2":{"529":1,"544":1}}],["提审版本请勿显示",{"2":{"570":1}}],["提示用户重启更新",{"2":{"768":1}}],["提示",{"0":{"412":1},"2":{"365":1}}],["提升",{"2":{"967":1}}],["提升用户体验",{"2":{"608":1,"622":1}}],["提升运行速度",{"2":{"485":1}}],["提升unity",{"0":{"718":1},"1":{"719":1,"720":1,"721":1,"722":1,"723":1,"724":1,"725":1,"726":1,"727":1,"728":1,"729":1,"730":1,"731":1,"732":1,"733":1,"734":1,"735":1},"2":{"482":1,"634":1}}],["提升渲染效率",{"2":{"340":1}}],["提升转换速度",{"2":{"272":1}}],["提供日志排查",{"2":{"898":1}}],["提供了",{"2":{"855":1}}],["提供autostreaming资源自动化处理",{"2":{"762":1}}],["提供更强的unity",{"2":{"760":1}}],["提供webassembly基础能力",{"2":{"737":1}}],["提供平台能力的c",{"2":{"737":1}}],["提供压缩纹理按需加载的能力工具",{"2":{"340":1}}],["提供loader启动数据",{"2":{"182":1}}],["提供插件缓存路径plugincachepath",{"2":{"105":1}}],["提供instant",{"2":{"72":1}}],["自行维护asset的引用计数管理资源",{"2":{"803":1}}],["自行管理的本地缓存",{"2":{"519":1}}],["自选cdn",{"2":{"685":1}}],["自助完成",{"2":{"488":1}}],["自己写的",{"2":{"382":1}}],["自带的",{"2":{"382":1}}],["自带",{"2":{"362":1}}],["自建后端服务",{"0":{"337":1}}],["自建后端",{"2":{"336":1}}],["自动连接到",{"2":{"661":1,"757":1}}],["自动缓存",{"2":{"464":1}}],["自动预览",{"2":{"409":1}}],["自动减半根据当前纹理尺寸",{"2":{"333":1}}],["自动从导出目录webgl",{"2":{"304":1}}],["自动清理存量旧文件",{"2":{"237":1}}],["自定义assetbundle名中hash长度用于缓存控制",{"2":{"748":1}}],["自定义上报分析",{"0":{"521":1}}],["自定义需缓存的路径标识符",{"2":{"268":1}}],["自定义bundle名中hash长度",{"2":{"268":1}}],["导致配置在预下载列表中的资源是旧版本的资源",{"2":{"848":1}}],["导致mp无法登记安全域名能跑起来吗",{"2":{"839":1}}],["导致markdownviewer报错",{"2":{"264":1}}],["导致解析过慢而影响启动速度",{"2":{"596":1}}],["导致部分模块比如ai",{"2":{"587":1}}],["导致缓存失败",{"2":{"461":1}}],["导致多点触控不正确",{"0":{"427":1}}],["导入插件后会有wxassetbundleprovider",{"2":{"777":1}}],["导入转换后的minigame目录",{"2":{"751":1}}],["导入项目",{"2":{"751":1}}],["导入",{"2":{"694":1}}],["导入文件后",{"2":{"469":1}}],["导入步骤1的启动过程profile文件",{"2":{"469":1}}],["导入本地的",{"2":{"379":2}}],["导入工程后采用旧版本完成游戏发布",{"2":{"354":1}}],["导出时自动替换",{"2":{"847":1}}],["导出预下载列表",{"0":{"845":1},"1":{"846":1}}],["导出内存堆栈数据",{"2":{"823":1}}],["导出场景不要勾选任何其他场景",{"2":{"779":1}}],["导出路径",{"2":{"748":1,"754":1}}],["导出阶段",{"2":{"737":1}}],["导出小游戏项目后",{"2":{"866":1}}],["导出小游戏项目后代码将存储在",{"2":{"486":1}}],["导出小游戏默认在开发版和体验版开启检测",{"2":{"641":1}}],["导出目录",{"2":{"577":1}}],["导出目录中",{"2":{"387":1}}],["导出面板勾选",{"2":{"570":1,"580":1}}],["导出面板进行导出微信小游戏即可",{"2":{"519":1}}],["导出选项时勾选",{"2":{"661":1,"757":1}}],["导出选项勾选使用好友关系链",{"0":{"557":1}}],["导出选项勾选webgl2实验能力",{"2":{"428":1}}],["导出选项中禁用异常",{"2":{"512":1}}],["导出profile文件",{"2":{"467":1}}],["导出的webgl游戏在浏览器时能自动连接到unity",{"2":{"661":1,"757":1}}],["导出的代码包中将包含可读函数名",{"2":{"399":1}}],["导出的游戏工程来自",{"2":{"343":1}}],["导出webgl并转化为小游戏",{"2":{"348":1}}],["导出游戏工程",{"2":{"348":2}}],["导出游戏",{"0":{"348":1}}],["导出插件导出到",{"2":{"744":1}}],["导出插件自动生成",{"2":{"389":1}}],["导出插件只提示更新",{"2":{"313":1}}],["导出插件的brotli压缩不依赖python环境",{"2":{"172":1}}],["导出配置调整",{"2":{"263":1}}],["导出增加sbrk函数",{"2":{"120":1}}],["设备发烫",{"2":{"943":1}}],["设备默认devicepixelratio",{"2":{"601":1}}],["设备",{"2":{"383":2,"479":1}}],["设备方向无法选中",{"2":{"261":1}}],["设置分组属性如下",{"2":{"781":1}}],["设置分享菜单",{"2":{"561":1}}],["设置最低可用版本",{"0":{"769":1}}],["设置为略大于dynamicmemory峰值",{"2":{"580":1}}],["设置为",{"2":{"560":1,"834":2,"838":2}}],["设置为180",{"2":{"552":1}}],["设置占位纹理",{"0":{"552":1}}],["设置启动剧情全局变量值",{"2":{"536":1,"547":1}}],["设置启动时是否自动检查小游戏版本更新",{"2":{"164":1}}],["设置表面的类型",{"2":{"382":1}}],["设置阴影偏移",{"2":{"382":1}}],["设置",{"2":{"381":1,"382":1,"769":1,"895":1}}],["设计启动剧情",{"2":{"967":1}}],["设计上尽量按需加载",{"2":{"783":1}}],["设计",{"2":{"706":1}}],["设计剧情",{"0":{"518":1}}],["设计尺寸",{"2":{"377":1}}],["设计稿",{"2":{"377":1}}],["设计高度",{"2":{"375":1}}],["设计宽度",{"2":{"375":1}}],["跳转小游戏接口错误",{"2":{"252":1}}],["性能上重点对首场景启动优化",{"2":{"688":1}}],["性能评测标准希望能引导开发者优化相关性能数据",{"2":{"622":1}}],["性能评估标准",{"2":{"564":1,"967":1}}],["性能分析",{"2":{"611":1}}],["性能基线机型并非特定",{"2":{"610":1}}],["性能基线",{"0":{"610":1,"625":1}}],["性能",{"2":{"594":1}}],["性能优化总览",{"0":{"630":1},"1":{"631":1,"632":1,"633":1,"634":1,"635":1,"636":1,"637":1,"638":1},"2":{"967":1}}],["性能优化",{"2":{"583":2,"967":1}}],["性能调优查看lua的耗时占比",{"2":{"597":1}}],["性能调优",{"2":{"484":2,"572":1,"592":1,"967":2}}],["性能最高",{"2":{"402":1}}],["性能提升",{"0":{"937":1},"1":{"938":1,"939":1},"2":{"244":1,"934":1}}],["性能面板",{"2":{"566":1}}],["性能面板增加profilingmemory",{"2":{"105":1}}],["性能面板数值显示优化",{"2":{"65":1}}],["用法如下",{"2":{"744":1}}],["用法保持不变",{"2":{"239":1}}],["用不到的材质属性会剔除掉",{"2":{"663":1}}],["用不到的属性可以剔除掉",{"2":{"381":1}}],["用来新建材质替代默认的材质",{"2":{"668":1}}],["用来热更新资源",{"2":{"655":1}}],["用来分析分包收集是否合理",{"2":{"650":1}}],["用来作为初始加载阶段的封面视频",{"2":{"498":1}}],["用js开发排行榜这类微信关系逻辑",{"0":{"558":1}}],["用户占比约为",{"2":{"945":1}}],["用户占比",{"0":{"926":1},"2":{"926":2}}],["用户占比和兼容性不如",{"2":{"663":1}}],["用户下载的代码包只能是提审发布过的",{"2":{"887":1}}],["用户信息",{"2":{"863":1}}],["用户",{"2":{"580":1}}],["用户的实际网络也是影响的重要因素",{"2":{"524":1}}],["用户新设备或本地缓存丢失时也将判定为新用户",{"2":{"520":1}}],["用户反馈",{"2":{"510":1}}],["用户反馈日志",{"0":{"510":1},"2":{"509":1,"510":1}}],["用unity网络接口发起请求",{"2":{"451":1}}],["用",{"2":{"382":1,"453":2,"754":1,"755":2}}],["用于区分不同广告位",{"2":{"679":1}}],["用于websocket转发",{"2":{"661":1,"757":1}}],["用于分析长耗时帧",{"2":{"641":1}}],["用于表明时间类型",{"2":{"556":1}}],["用于后面做异常源码映射",{"2":{"493":1}}],["用于特定assetbundle的缓存保持",{"2":{"460":1}}],["用于缓存控制",{"2":{"268":1}}],["用于清理所有文件缓存",{"2":{"236":1}}],["用于游戏自定义场景上报",{"2":{"105":1}}],["达到节约内存的目的",{"2":{"800":1}}],["达到最佳仍需要",{"2":{"685":2}}],["达到最好的买量效果",{"2":{"679":1}}],["达到可上线标准的小游戏体验",{"2":{"470":1}}],["达到缓存上限时默认额外清理的存储大小",{"2":{"755":1}}],["达到缓存上限时",{"2":{"460":1}}],["达到缓存上限时清理更多空间",{"2":{"237":1}}],["达到缓存上限后",{"2":{"460":1}}],["达缓存上限时未正常清理旧缓存",{"2":{"203":1}}],["rootrect",{"2":{"932":1}}],["rootrect初始时设置其anchor",{"2":{"932":1}}],["rotation设置为180",{"2":{"560":1}}],["rotation的x",{"2":{"552":1}}],["rc",{"2":{"868":1,"959":1}}],["rw",{"2":{"802":1}}],["rules",{"2":{"781":1}}],["runtimems",{"2":{"682":1}}],["runtime=xxxms",{"2":{"658":1}}],["runtime",{"2":{"519":1,"525":1,"657":1,"777":2,"826":2,"883":1}}],["runtimeinitialize",{"2":{"468":2}}],["running",{"0":{"430":1,"527":1},"2":{"527":1}}],["run",{"2":{"224":1,"757":1}}],["r9s",{"2":{"610":1,"625":1}}],["rate",{"2":{"956":1}}],["ratio",{"2":{"673":1}}],["ram",{"2":{"942":1}}],["rawimage设置为200",{"2":{"560":1}}],["rawimage",{"2":{"552":1,"554":2,"555":1,"560":2,"562":1}}],["rankbody",{"2":{"560":6}}],["rankingbox",{"2":{"560":1}}],["ranking下面的unity工程",{"2":{"559":1}}],["rankmask",{"2":{"560":1}}],["rangeerror",{"2":{"500":1}}],["randomdevices替换",{"2":{"252":1}}],["rpgpp",{"2":{"781":2}}],["rpg游戏为创角",{"2":{"611":1,"625":1}}],["rp",{"2":{"379":16,"664":2}}],["rp包",{"2":{"379":3}}],["rp项",{"2":{"379":1}}],["rgb",{"2":{"346":5,"347":1}}],["rgba32造成巨大的cpu和内存消耗",{"2":{"602":1}}],["rgba",{"2":{"346":4}}],["r",{"2":{"346":2,"802":2}}],["realloc",{"2":{"826":2}}],["ready",{"2":{"785":1,"786":1}}],["readassets",{"2":{"682":1}}],["read",{"2":{"334":1}}],["readfilesync",{"2":{"48":1,"49":1}}],["readfile和fs",{"2":{"48":1}}],["release",{"2":{"786":2}}],["rewrite",{"2":{"744":1}}],["rectmask2d",{"2":{"668":1}}],["rect",{"2":{"560":4}}],["recttransform",{"2":{"560":4}}],["receivedbytedcount",{"2":{"654":1}}],["received",{"2":{"545":1}}],["repot",{"2":{"443":1}}],["reportgamesceneerror",{"2":{"681":1}}],["reportgamestart",{"2":{"641":1,"681":2}}],["report",{"2":{"430":1,"733":1}}],["reporting",{"2":{"430":1}}],["reportsceneparams",{"2":{"681":1}}],["reportscene",{"2":{"105":1,"681":5}}],["reportscene接口",{"2":{"105":1}}],["referenceresolution",{"2":{"560":5,"932":3}}],["references",{"2":{"402":1}}],["reflectivityspecular",{"2":{"382":1}}],["reflectionprobe",{"2":{"382":1}}],["reflection",{"2":{"381":1}}],["renderoptimization",{"0":{"662":1},"1":{"663":1,"664":1,"665":1,"666":1,"667":1,"668":1,"669":1,"670":1,"671":1,"672":1,"673":1,"674":1,"675":1,"676":1}}],["renderer",{"2":{"606":4}}],["renderscale",{"2":{"382":1}}],["rendergraph",{"2":{"382":1}}],["renderinglayer",{"2":{"382":1}}],["rendering",{"2":{"381":1,"467":1}}],["render",{"2":{"379":4,"380":2,"384":1,"945":1}}],["registry",{"2":{"379":1}}],["resize",{"2":{"826":2}}],["resource改造",{"0":{"789":1}}],["resourcemanager",{"2":{"777":1}}],["resources目录的内容都会被打包进首包资源",{"2":{"789":1}}],["resources",{"2":{"789":2}}],["resources文件夹中的资源",{"2":{"725":1}}],["resources文件",{"2":{"725":1}}],["resources资源",{"2":{"388":1}}],["resource目录所有资源",{"2":{"716":1}}],["reserved内存",{"2":{"577":1}}],["result",{"2":{"338":3,"368":2,"469":1,"782":1,"785":2,"786":1,"787":1,"789":1,"850":2}}],["res",{"2":{"338":7,"443":2,"561":3,"681":6,"834":7,"838":3,"849":6,"858":4}}],["response",{"2":{"338":5,"948":1}}],["return",{"2":{"338":4,"460":3,"556":1,"781":1,"782":1,"786":2,"789":1,"798":2,"800":1,"828":3,"832":2,"850":1}}],["redo逻辑",{"2":{"333":1}}],["removeusercloudstorage",{"2":{"863":1}}],["remove",{"2":{"379":2}}],["removed",{"0":{"324":1}}],["removefile参数转字符串",{"2":{"180":1}}],["require时使用bundle",{"2":{"426":1}}],["require",{"0":{"442":1},"2":{"338":1}}],["requireprivacyauthorize等",{"2":{"51":1}}],["requestbundlecatalog=true",{"2":{"655":2}}],["requestbundlecatalog",{"2":{"654":1}}],["requestbundlesettings=true",{"2":{"655":1}}],["requestbundlesettings",{"2":{"654":1}}],["requestcatahash=true",{"2":{"655":1}}],["requestcatahash",{"2":{"654":1}}],["requestsubscribemessage",{"2":{"442":1}}],["requestsubscribeliveactivity",{"2":{"51":1}}],["request",{"2":{"338":1,"798":6,"840":1,"849":2}}],["qwe25878",{"2":{"832":1}}],["qa3",{"2":{"949":1}}],["qa",{"0":{"584":1,"717":1,"762":1,"944":1},"1":{"945":1,"946":1,"947":1,"948":1,"949":1,"950":1,"951":1,"952":1,"953":1},"2":{"934":1}}],["q3",{"2":{"562":1}}],["q2",{"2":{"562":1}}],["q1",{"2":{"562":1}}],["qpic",{"2":{"561":1}}],["query",{"2":{"561":5}}],["quot",{"0":{"411":4,"413":2,"422":2,"430":2},"2":{"224":2,"261":4,"280":2,"329":6,"338":4,"388":2,"397":2,"402":4,"409":2,"410":6,"463":2,"493":4,"498":4,"500":4,"510":2,"562":1,"570":2,"579":4,"631":2,"661":10,"726":4,"748":2,"757":14,"823":8,"826":2,"836":6,"839":2,"940":2,"945":6,"947":4,"949":6}}],["q",{"0":{"356":1,"504":1},"1":{"357":1,"358":1,"359":1,"360":1,"361":1,"362":1,"363":1,"364":1,"505":1},"2":{"417":1,"584":3}}],["qq",{"2":{"105":1,"338":1,"441":2,"443":10,"461":3,"500":1,"561":1,"834":1,"838":1,"840":1}}],["预加载资源",{"0":{"818":1}}],["预加载",{"2":{"783":1}}],["预下载无效",{"2":{"853":1}}],["预下载所有文件总体积应控制在合理范围内",{"2":{"853":1}}],["预下载文件列表",{"2":{"754":1}}],["预下载文件体积不应过大",{"2":{"649":1}}],["预下载",{"2":{"754":1}}],["预下载列表",{"2":{"748":1}}],["预下载资源量较大",{"2":{"649":1}}],["预下载资源较小",{"2":{"649":1}}],["预下载资源个数较多",{"2":{"649":1}}],["预下载资源个数",{"2":{"648":1}}],["预下载基本信息",{"2":{"647":1}}],["预下载检测",{"0":{"647":1},"1":{"648":1,"649":1},"2":{"639":1}}],["预下载问题路径bug",{"2":{"205":1}}],["预览",{"2":{"409":1}}],["预载列表按照填写顺序生成",{"2":{"218":1}}],["暴露插件进度事件",{"2":{"189":1}}],["避免模糊的问题",{"2":{"933":1}}],["避免业务逻辑需要全量资源的情况",{"2":{"783":1}}],["避免大量的大屏幕的半透明特效重叠导致的",{"2":{"675":1}}],["避免同时启用多于",{"2":{"672":1}}],["避免瓶颈的手段有",{"2":{"670":1}}],["避免上述的",{"2":{"668":1}}],["避免使用",{"2":{"667":1,"668":3}}],["避免使用unity自带的文件缓存机制",{"2":{"581":1}}],["避免用实时光照",{"2":{"667":1}}],["避免用户无法退出剧情插件模式",{"2":{"519":1}}],["避免直接从源站拉取资源",{"2":{"655":1}}],["避免直接调用存储接口绕开校验的情况出现",{"2":{"338":1}}],["避免内存不足时导致扩容产生的尖刺",{"2":{"580":1}}],["避免单帧内分配过多的对象",{"2":{"580":1}}],["避免过大的assetbundle导致瞬间峰值",{"2":{"580":1}}],["避免场景过大导致瞬间峰值",{"2":{"580":1}}],["避免云函数代码被业务逻辑代码一同打包发布到外网",{"2":{"338":1}}],["避免与游戏代码冲突",{"2":{"325":1}}],["避免有nuget产生dll冲突",{"2":{"173":1}}],["避免动态创建的类型被裁剪",{"2":{"75":1}}],["6~15",{"2":{"956":1}}],["6m",{"2":{"866":1}}],["67190",{"2":{"744":1}}],["6s",{"2":{"629":1,"942":1}}],["6sp",{"2":{"564":1}}],["66b71f",{"2":{"377":1}}],["649ms",{"2":{"468":1}}],["64",{"2":{"375":3}}],["6x6",{"2":{"347":1}}],["600",{"2":{"858":2}}],["6028bab6edbc2a750bf5b8a7",{"2":{"804":1}}],["60使用raf分片处理",{"2":{"600":1}}],["60",{"2":{"203":1}}],["6",{"0":{"169":1,"171":1,"174":1,"176":1,"179":1,"181":1,"184":1,"186":1,"362":1,"412":1,"426":1,"439":1,"583":1,"601":1,"792":1,"793":1,"820":1,"912":1,"950":1},"1":{"170":1,"172":1,"173":1,"175":1,"177":1,"178":1,"180":1,"182":1,"183":1,"185":1,"187":1,"363":1,"364":1,"913":1},"2":{"523":1,"802":1,"864":1,"934":1}}],["6格式",{"2":{"46":1,"113":1}}],["补充小程序框架异常时上报实时日志",{"2":{"250":1}}],["补充touchcancel事件",{"2":{"149":1}}],["补充启动阶段关键日志",{"2":{"59":1}}],["在目录树上方工具栏找到水印工具icon",{"2":{"961":1}}],["在目录树上的工具栏中",{"2":{"872":1}}],["在平台原有相似度检测基础上",{"2":{"958":1}}],["在这个时间之后才触发未收集函数的情况也不会有加载子包的影响",{"2":{"883":1}}],["在真机上跑游戏",{"2":{"878":1}}],["在真机环境则无",{"2":{"402":1}}],["在主入口初始化",{"2":{"858":1}}],["在插件启动前",{"2":{"849":1}}],["在插件启动前修改",{"0":{"849":1}}],["在引擎初始化期间",{"2":{"843":1}}],["在引擎初始化完成",{"2":{"641":1}}],["在处理websocket数据包时",{"2":{"837":1}}],["在给定的套接字上启动连接",{"2":{"834":1}}],["在不同端上的行为基本是一致的",{"2":{"829":1}}],["在lua源码目录下的同名文件中增加simple",{"2":{"828":1}}],["在微信开发者工具运行游戏",{"2":{"822":1,"823":1}}],["在业务侧看来",{"2":{"799":1}}],["在网络空闲时可预下载游戏需要用到的ab包",{"2":{"793":1,"818":1}}],["在用到的时候才下载该场景包",{"2":{"781":1}}],["在所有的依赖加载完成",{"2":{"774":1}}],["在此阶段最多只能允许10个并发",{"2":{"853":1}}],["在此可使用handle",{"2":{"781":1}}],["在此",{"2":{"772":1}}],["在打开小游戏前",{"2":{"766":1}}],["在启动加载时会循环播放这段视频",{"2":{"748":1}}],["在得到成就感的同时收获相关的翡翠知识",{"2":{"706":1}}],["在满足画质情况下",{"2":{"669":1}}],["在移动端性能更好",{"2":{"668":1}}],["在开始长耗时逻辑前",{"2":{"655":1}}],["在开发者工具会报错提示插件未授权",{"2":{"498":1,"751":1}}],["在开发者工具有出现详细堆栈函数",{"2":{"402":1}}],["在cpu繁忙时未充分利用网络空闲",{"2":{"655":1}}],["在新包做wasm分包期间可能会频繁提示优化建议",{"2":{"650":1}}],["在中低端机型限制帧率已减轻设备发烫",{"2":{"638":1}}],["在压缩纹理不支持的情况下",{"2":{"602":1}}],["在勾选profile",{"2":{"592":1}}],["在相同算力条件下两者性能是接近的",{"2":{"589":1}}],["在相同的菜单中选择stop",{"2":{"329":1}}],["在unity侧使用微信插件导出时",{"2":{"876":1}}],["在unity转换导出插件填写文件列表",{"2":{"846":1}}],["在unityloader加载过程中存在网络空闲的情况",{"2":{"843":1}}],["在unity",{"2":{"584":1}}],["在android",{"2":{"565":1}}],["在android微信小游戏打开调试进行录制",{"2":{"329":1}}],["在小游戏底层对bundle做缓存及缓存淘汰时",{"2":{"797":1}}],["在小游戏环境",{"2":{"782":1}}],["在小游戏环境下",{"2":{"678":1}}],["在小游戏环境中并不存在dom",{"2":{"565":1}}],["在小游戏生态下玩家对启动耗时更敏感",{"2":{"631":1}}],["在小游戏平台请勿使用unity的setresulution等接口修改分辨率",{"2":{"601":1}}],["在小游戏未开启webgl2",{"2":{"587":1}}],["在小游戏中使用addressable",{"0":{"776":1}}],["在小游戏中unity游戏唤不起输入法",{"2":{"491":1}}],["在小游戏中推荐将资源包拆分成为一个个小文件加载",{"2":{"449":1}}],["在操作系统的控制策略下超出阈值时非常容易被oom",{"2":{"564":1}}],["在分享时",{"2":{"561":1}}],["在屏幕中绝对的位置和尺寸",{"2":{"560":1}}],["在需要展示的地方调用",{"0":{"554":1}}],["在需要绘制排行榜的时候",{"2":{"550":1}}],["在游戏运行时适宜的位置进行加载",{"2":{"687":1}}],["在游戏运行中如需按需加载",{"2":{"340":1}}],["在游戏过程中也尽量避免这类cpu消耗",{"2":{"596":1}}],["在游戏需要展示的地方创建一个",{"2":{"552":1}}],["在关闭排行榜的时候",{"2":{"550":1}}],["在重新导出游戏时将会被覆盖",{"2":{"525":1}}],["在3~5秒期间",{"2":{"520":1}}],["在文件底部增加启动剧情初始化配置",{"2":{"519":1}}],["在部署方面",{"2":{"502":1}}],["在该事件之后重新播放音频",{"2":{"500":1}}],["在该标签页下找到",{"2":{"380":1}}],["在初始化sdk后",{"2":{"933":1}}],["在初始化期间对启动剧情组件进行相关配置",{"2":{"528":1}}],["在初始",{"2":{"482":1}}],["在进入小游戏后",{"2":{"469":1}}],["在webgl模式下",{"2":{"468":1}}],["在wasm代码分包情况下",{"2":{"397":1,"400":1}}],["在timelog中呈现的首场景耗时即为引擎初始化与开发者首帧逻辑",{"2":{"466":1,"727":1}}],["在touchend时触发点击事件",{"2":{"67":1}}],["在提升unity",{"2":{"466":1}}],["在写入缓存前",{"2":{"461":1}}],["在写入缓存前需要经过三步",{"2":{"461":1}}],["在清理时也支持忽略一些文件",{"2":{"460":1}}],["在回调内使用这类api",{"2":{"442":1}}],["在转换完成后",{"2":{"386":1,"749":1}}],["在弹出的",{"2":{"379":1}}],["在弹出列表选择",{"2":{"379":1}}],["在合理的时机进行路径配置",{"2":{"363":1}}],["在",{"2":{"359":1,"379":4,"380":6,"430":1,"526":1,"562":1,"668":1,"830":1,"832":1,"833":1,"840":1,"935":1}}],["在ios普通模式无法正常渲染的问题",{"2":{"137":1}}],["当批次较大时出现显示错误",{"2":{"929":1}}],["当uniform变量过多时",{"2":{"928":1}}],["当unityheap",{"2":{"580":1}}],["当出现问题时",{"2":{"898":1}}],["当插件页显示的收集到增量函数个数相对稳定时",{"2":{"878":1}}],["当符合缓存规则时",{"2":{"855":1}}],["当存在",{"2":{"852":1}}],["当首包资源通过小游戏代码分包下载时",{"2":{"815":1}}],["当wasm代码+首包资源",{"2":{"815":1}}],["当ab",{"2":{"803":1}}],["当app同步方式使用ab时",{"2":{"687":1}}],["当app异步方式使用ab时",{"2":{"687":1}}],["当app手游使用了这些特性时",{"2":{"587":1}}],["当http对象dispose之后",{"2":{"803":1}}],["当bundle从资源服务器下载并使用",{"2":{"803":1}}],["当bundle数量多时",{"2":{"802":1}}],["当编译addressable资源时会输出到library",{"2":{"792":1}}],["当打开addressables",{"2":{"790":1}}],["当我们adressable面板的tools",{"2":{"781":1}}],["当你需要将打包的资源从本地移到服务器上面",{"2":{"774":1}}],["当新版本可用后",{"2":{"768":1}}],["当引擎不支持移动端压缩纹理",{"2":{"760":1}}],["当小游戏无法连接unityprofile时",{"2":{"757":1}}],["当分析出小游戏需要进行启动优化时",{"2":{"730":1}}],["当业务侧需要使用loader启动数据时",{"2":{"682":1}}],["当inspector窗口的材质缺失",{"2":{"668":1}}],["当提示优化建议时",{"2":{"646":1}}],["当场景渲染物件过多时应该采取适当的措施减少drawcall",{"2":{"604":1}}],["当帧率为15",{"2":{"600":1}}],["当发现unityheap",{"2":{"572":1}}],["当发生1",{"2":{"534":1}}],["当前使用内存",{"2":{"825":1}}],["当前存活的分配次数",{"2":{"825":1}}],["当前是否处于前台",{"2":{"682":1}}],["当前游戏运行时长",{"2":{"657":1}}],["当前游戏的运行时长",{"2":{"611":1}}],["当前期出现子包加载",{"2":{"652":1}}],["当前的内存使用量",{"2":{"570":2}}],["当前帧",{"2":{"570":1}}],["当前项目安装的",{"2":{"379":1}}],["当前项目模板过旧",{"2":{"70":1}}],["当开启自定义外显进度条时",{"2":{"542":1}}],["当启动剧情全局变量变化时回调",{"2":{"538":1}}],["当产生该回调时意味着启动剧情组件资源已经完全析构",{"2":{"530":1}}],["当剧情启动并给到充分的",{"2":{"525":1}}],["当然能尽量再收集完善刚好",{"2":{"884":1}}],["当然",{"2":{"664":1}}],["当然我们也提供了部分",{"2":{"525":1}}],["当然也可以在同一个项目中",{"2":{"338":1}}],["当5秒内明确了后续播与不播放的选择时",{"2":{"520":1}}],["当确认后",{"2":{"520":1}}],["当触发异常时将走到js",{"2":{"512":1}}],["当玩家游戏中出现问题时",{"2":{"510":1}}],["当游戏资源量比较少时",{"2":{"815":1}}],["当游戏完成所有加载阶段",{"2":{"681":1}}],["当游戏发布到现网时",{"2":{"509":1}}],["当游戏出现异常时可通过日志进行错误堆栈分析",{"2":{"477":1}}],["当游戏代码包下载编译完成和首包资源下载完成后会运行游戏逻辑",{"2":{"468":1}}],["当点击stop",{"2":{"467":1}}],["当已有缓存+待写入缓存超过允许的上限时",{"2":{"461":1}}],["当以其他符号分割时",{"2":{"461":1}}],["当需要自动缓存的文件在写入本地之前",{"2":{"457":1}}],["当有两个wasm文件时",{"2":{"961":1}}],["当有缓存时",{"2":{"450":1}}],["当有视频时",{"2":{"375":1}}],["当使用以下api发起网络请求时会检查是否需要缓存",{"2":{"450":1}}],["当不使用小游戏分包时",{"2":{"388":1}}],["当导出时wasm代码brotli压缩正常的前提下",{"2":{"388":1}}],["当导入完成后",{"2":{"379":1}}],["当downloadingtext有多个文案时",{"2":{"375":1,"377":1,"814":1}}],["当禁用异常时",{"2":{"279":1}}],["当音频路径加入到缓存目录时",{"2":{"136":1}}],["需是插件会自动缓存的文件",{"2":{"853":1}}],["需将游戏内资源逐一拆分",{"2":{"689":1}}],["需使用腾讯云cdn服务",{"2":{"685":1}}],["需前往",{"2":{"683":1}}],["需开发者自行评估devicepixelratio降低后的品质变化",{"2":{"601":1}}],["需开发者自行分析",{"2":{"570":1}}],["需特别注意机型兼容性",{"2":{"590":1}}],["需控制在500mb左右",{"2":{"577":1}}],["需以",{"2":{"461":1}}],["需调整",{"2":{"447":2}}],["需根据实际游戏在真机验证性能",{"2":{"447":1}}],["需游戏自行排查",{"2":{"422":1}}],["需要更多的精力做优化",{"2":{"952":1}}],["需要更强的性能分析请使用2021",{"2":{"760":1}}],["需要占用更多的编译消耗与内存",{"2":{"943":1}}],["需要该能力的开发者登录微信公众平台",{"2":{"940":1}}],["需要乘以systeminfo中的pixelratio才为unity中的大小",{"2":{"932":1}}],["需要开启profiling",{"2":{"876":1}}],["需要开发者采取合适的手段以达到最优",{"2":{"935":1}}],["需要开发者提供",{"2":{"814":1}}],["需要开发者更关注性能与体验调优",{"2":{"631":1}}],["需要开发者根据自身游戏商业化要求制定",{"2":{"590":1}}],["需要重启开发者工具",{"2":{"875":1}}],["需要上线并累计uv",{"2":{"862":1}}],["需要上传至开发者的",{"2":{"476":1}}],["需要游戏服务器自行处理",{"2":{"837":1}}],["需要微信基础库3",{"2":{"833":1}}],["需要将webgl目录下的资源包copy到minigame",{"2":{"817":1}}],["需要将webgl目录下的资源包上传到cdn",{"2":{"817":1}}],["需要将bundle移动到streamingassets目录",{"2":{"390":1}}],["需要同时导出webgl版本的",{"2":{"800":1}}],["需要保证加载速度",{"2":{"799":1}}],["需要保证profile的录制开始之后才真正执行游戏开始逻辑",{"2":{"469":1}}],["需要给wx",{"2":{"777":1}}],["需要给input",{"2":{"491":1}}],["需要替换provider来使用wxassetbundle",{"2":{"777":1}}],["需要注意保证旧版本资源可访问",{"2":{"766":1}}],["需要注意的是",{"2":{"587":1}}],["需要下载",{"2":{"751":1}}],["需要在使用分包插件后",{"2":{"957":1}}],["需要在网络空闲时预加载的资源",{"2":{"847":1}}],["需要在小游戏的启动前期下载",{"2":{"725":1}}],["需要在touch回调才能被使用",{"2":{"442":1}}],["需要知道留存率",{"2":{"681":1}}],["需要知道完成的留存率",{"2":{"681":1}}],["需要留意",{"2":{"675":1}}],["需要画质和性能之前取一个平衡",{"2":{"673":1}}],["需要用到实时光的",{"2":{"667":1}}],["需要通过",{"2":{"664":1,"744":1}}],["需要以实测游戏为准",{"2":{"588":1}}],["需要调用",{"2":{"561":1}}],["需要关闭时则调用",{"0":{"555":1}}],["需要查看资源是否正确上传",{"2":{"505":1}}],["需要使用js接口",{"2":{"843":1}}],["需要使用平台提供的",{"2":{"502":1}}],["需要使用wx",{"2":{"491":1}}],["需要快速转化上线",{"2":{"502":1}}],["需要说明的是",{"2":{"493":1}}],["需要进行相应的适配",{"2":{"475":1}}],["需要进行缓存",{"2":{"423":1}}],["需要缓存的路径",{"2":{"453":1}}],["需要自行稍做修改",{"2":{"400":1}}],["需要避免这些文件使用缓存",{"2":{"392":1}}],["需要部署到服务器",{"2":{"388":1}}],["需要分别对",{"2":{"380":1}}],["需要先导入本地的",{"2":{"379":1}}],["需要修改文字和进度条样式",{"2":{"375":1}}],["需要修改unity工程中",{"2":{"375":1}}],["需要点击",{"2":{"352":1}}],["需先构建",{"2":{"345":1}}],["需升级unity到2021",{"2":{"224":1}}],["需unity2021版本",{"2":{"133":1}}],["需同时升级分包工具插件至1",{"2":{"13":1}}],["85",{"2":{"926":1}}],["800",{"2":{"956":1}}],["8009c16fcab3",{"2":{"794":1}}],["800mb",{"2":{"629":1}}],["80",{"2":{"760":3}}],["84",{"2":{"739":1}}],["8162",{"2":{"733":1}}],["815ms",{"2":{"468":1}}],["8s",{"2":{"628":1,"629":1}}],["8p",{"2":{"564":1,"942":1}}],["8等ram",{"2":{"564":1}}],["896",{"2":{"560":1}}],["8ms",{"2":{"468":1}}],["8d265a9dfd6cb7669cdb8b726f0afb1e",{"2":{"458":3,"460":1,"461":4,"847":1,"851":1}}],["8848",{"2":{"834":1,"838":1}}],["88",{"2":{"383":1}}],["87",{"2":{"383":1}}],["87014",{"2":{"338":1}}],["8x8",{"2":{"347":2}}],["8",{"0":{"143":1,"148":1,"150":1,"152":1,"154":1,"156":1,"181":1,"286":1,"288":1,"290":1,"414":1,"428":1,"441":1,"603":1,"910":1,"952":1},"1":{"144":1,"145":1,"149":1,"151":1,"153":1,"155":1,"157":1,"158":1,"182":1,"183":1,"287":1,"289":1,"291":1,"911":1},"2":{"109":1,"180":1,"346":3,"383":7,"610":1,"625":1,"669":1,"855":2,"864":1,"934":1,"942":1}}],["es",{"2":{"925":4}}],["ev",{"2":{"836":1}}],["events",{"2":{"519":1}}],["eventsystems",{"2":{"491":1}}],["eventdata",{"2":{"491":2}}],["event",{"0":{"442":1},"2":{"338":3,"523":1,"545":1}}],["echo",{"2":{"836":1}}],["errcode",{"2":{"858":1}}],["errmsg",{"2":{"834":1}}],["errstr",{"2":{"681":1}}],["err",{"2":{"519":1,"532":1}}],["errortype取值",{"2":{"681":1}}],["errortype",{"2":{"681":1}}],["error错误日志",{"0":{"512":1},"2":{"509":1}}],["error",{"2":{"379":1,"556":1,"617":1,"798":4,"800":2,"832":2,"850":1}}],["errorcode",{"2":{"338":1}}],["error与实时日志",{"2":{"279":1}}],["eg3",{"2":{"458":1}}],["eg2",{"2":{"458":1}}],["eg1",{"2":{"458":1}}],["eg",{"2":{"453":2,"611":1,"618":3,"648":1,"654":1,"680":1}}],["egret",{"2":{"375":1,"377":1}}],["emsdk",{"2":{"430":1}}],["emscripten使用文件系统模拟linux",{"2":{"565":1}}],["emscripten",{"2":{"108":2,"739":1,"757":1}}],["else",{"2":{"368":1,"380":2,"419":1,"534":1,"798":2,"800":1,"828":1,"832":2,"836":1,"850":1}}],["example",{"2":{"834":1,"838":1,"848":4,"849":2,"850":1}}],["exact",{"2":{"377":1}}],["exactfit",{"2":{"377":1}}],["exists",{"2":{"797":1}}],["extensions",{"2":{"949":1}}],["extension",{"2":{"898":1}}],["extra",{"2":{"725":1}}],["extjsonstr",{"2":{"681":1}}],["exe",{"2":{"661":1,"757":1}}],["execution",{"2":{"467":1}}],["exceeded",{"2":{"500":1}}],["exception如果设置为",{"2":{"493":2}}],["exceptions",{"0":{"402":1},"2":{"401":2,"402":4}}],["exception",{"0":{"362":1},"1":{"363":1,"364":1},"2":{"402":2,"744":2}}],["excludefileextensions",{"2":{"453":1}}],["ex",{"2":{"402":2}}],["expose",{"2":{"947":1}}],["export",{"2":{"377":1}}],["exports",{"2":{"338":1}}],["explicitly",{"2":{"401":1,"402":3}}],["etc均支持",{"2":{"342":1}}],["etc",{"2":{"342":1,"346":1,"364":1}}],["etc2",{"2":{"341":1,"346":2,"359":1,"760":7}}],["e",{"2":{"338":2,"519":1,"556":1,"682":8}}],["edit",{"2":{"380":1,"775":1,"794":1}}],["editor监听固定端口",{"2":{"593":1}}],["editor的无用资源",{"2":{"353":1}}],["editor",{"2":{"353":1,"360":1,"363":1,"364":5,"379":3,"380":2,"430":1,"453":1,"499":1,"661":4,"692":1,"752":1,"757":4}}],["editor中的兼容",{"2":{"147":1}}],["edge已经将javascript",{"2":{"329":1}}],["encoding",{"2":{"834":1,"838":1,"947":3}}],["enough",{"0":{"432":1}}],["enableprofilestats或c",{"2":{"823":1}}],["enablecontentencoding",{"2":{"654":1}}],["enablemonitor",{"2":{"641":1}}],["enable",{"0":{"402":1},"2":{"401":1,"402":1,"493":2}}],["enabledebuglog=true",{"2":{"820":1}}],["enabledebuglog=false且为调试模式时输出详细日志",{"2":{"326":1}}],["enabledebug",{"2":{"397":1,"410":1,"463":1}}],["enabled",{"2":{"334":1}}],["engine",{"2":{"375":1,"377":1,"726":1}}],["environment",{"2":{"430":1}}],["env",{"2":{"338":3,"461":1}}],["endtime",{"2":{"654":1}}],["ending",{"2":{"545":1}}],["endif",{"2":{"363":1,"380":6,"430":1}}],["end",{"0":{"529":1,"544":1},"2":{"108":1,"519":1,"532":1,"534":1,"545":1}}],["uff00",{"2":{"857":1}}],["ufe30",{"2":{"857":1}}],["ufe10",{"2":{"857":1}}],["u2200",{"2":{"857":1}}],["u25a0",{"2":{"857":1}}],["u20a0",{"2":{"857":1}}],["u2000",{"2":{"857":1}}],["u2190",{"2":{"857":1}}],["u2150",{"2":{"857":1}}],["u2100",{"2":{"857":1}}],["u2460",{"2":{"857":1}}],["u2700",{"2":{"857":1}}],["u2600",{"2":{"857":1}}],["u3300",{"2":{"857":1}}],["u3200",{"2":{"857":1}}],["u3000",{"2":{"857":1}}],["u0000",{"2":{"857":1}}],["u4e00",{"2":{"857":1}}],["utf8",{"2":{"834":1,"838":1}}],["utilities",{"2":{"733":1,"734":1}}],["ud",{"2":{"828":2}}],["udptest",{"2":{"838":1}}],["udpsocketsendoption",{"2":{"838":1}}],["udpsocketonmessagelistenerresult>",{"2":{"838":1}}],["udpsocket",{"2":{"838":2}}],["udp",{"0":{"838":1},"2":{"838":7}}],["udp使用wx",{"2":{"447":1}}],["udpclient使用connect+write",{"2":{"121":1}}],["uwa4d",{"2":{"794":1}}],["uwa关于addressable的介绍",{"2":{"794":1}}],["uv",{"2":{"668":1}}],["ui纹理的精细度可能要求不高",{"2":{"669":1}}],["ui系统的合批",{"2":{"668":1}}],["uinty",{"2":{"605":1}}],["ui控件延x轴旋转180度",{"2":{"552":1}}],["ui",{"0":{"950":1},"2":{"491":1,"669":1,"672":1,"934":1}}],["ui等基础模块",{"2":{"447":1}}],["ui不需要开启mipmap",{"2":{"334":1}}],["ugui",{"2":{"427":1}}],["uri",{"2":{"798":1}}],["uripath",{"2":{"798":2}}],["urp的基础上定制",{"2":{"664":1}}],["urp复杂的特性尽量少用",{"2":{"664":1}}],["urp管线通过renderer配置取消",{"2":{"579":1}}],["urp包移除掉",{"2":{"384":1}}],["urp版本一致",{"2":{"384":1}}],["urp版本",{"2":{"379":1}}],["urp版本的路径是差不多的",{"2":{"379":1}}],["urp版本信息",{"2":{"379":1}}],["urp后",{"2":{"379":1}}],["urp",{"0":{"378":1,"379":1,"381":1,"382":1,"383":1},"1":{"379":1,"380":1,"381":1,"382":2,"383":2,"384":1,"385":1},"2":{"378":6,"379":14,"380":3,"381":4,"382":5,"383":2,"384":14,"385":1,"447":1,"664":4,"667":2,"671":1,"967":1}}],["url中包含特定标识符时需要自动缓存",{"2":{"755":1}}],["url地址为",{"2":{"692":1}}],["url剔除掉data",{"2":{"461":1}}],["url",{"2":{"374":1,"375":1,"376":1,"443":1,"534":1,"654":1,"692":1,"757":2,"800":1,"813":1,"814":1,"849":2}}],["updatekeyboard",{"2":{"863":1}}],["updatemanager",{"0":{"768":1}}],["updatesharemenuoption",{"2":{"561":1}}],["updatesharemenu",{"2":{"561":2,"863":1}}],["update",{"2":{"329":1,"823":1,"838":1}}],["unload时",{"2":{"803":1}}],["unload",{"2":{"775":1,"798":2,"803":1}}],["unlit",{"2":{"667":1}}],["unlitinput",{"2":{"382":1}}],["unmasked",{"2":{"606":2}}],["unallocatedmemory",{"2":{"570":1}}],["unable",{"0":{"422":1}}],["understanding",{"2":{"565":1,"804":2}}],["undef",{"2":{"380":1}}],["untiy",{"2":{"460":1}}],["untiy3d拓展名文件视为bundle文件",{"2":{"326":1}}],["unicoderange",{"2":{"857":1}}],["unicode",{"2":{"857":20}}],["uniform可以减少sizeof",{"2":{"928":1}}],["uniform",{"2":{"381":1,"382":2,"663":1}}],["universal",{"2":{"379":11,"380":1,"384":1,"664":1}}],["unity社区讨论",{"2":{"949":1}}],["unity官方文档",{"2":{"930":1}}],["unity提供了将所有assetsbundle迁移到addressable",{"2":{"790":1}}],["unity首资源包的压缩率是比较高的",{"2":{"779":1}}],["unity中资源按需加载也可以使用老的assetbundle",{"2":{"775":1}}],["unity中如何展示排行榜这类微信关系数据",{"0":{"549":1},"1":{"550":1,"551":1,"552":1,"553":1,"554":1,"555":1,"556":1,"557":1,"558":1,"559":1,"560":1,"561":1,"562":1}}],["unity在2018版本中推出了addressable",{"2":{"774":1}}],["unity的",{"2":{"800":1}}],["unity的buildtarget支持webgl平台",{"2":{"737":1}}],["unity的阴影方案",{"2":{"667":1}}],["unity全新资源管理流程",{"2":{"735":1}}],["unity默认内建资源",{"2":{"716":1}}],["unity默认的材质",{"2":{"668":1}}],["unity会自动使用内置的默认材质",{"2":{"668":1}}],["unity会多一个全屏",{"2":{"665":1}}],["unity了",{"2":{"665":1}}],["unity内置shader",{"2":{"663":1}}],["unity3d",{"2":{"661":1,"735":1,"739":1,"757":1,"804":1}}],["unity将自动移动到",{"2":{"789":1}}],["unity将自启动监听端口34999等待调试链接",{"2":{"661":1,"757":1}}],["unity将音频传递给容器",{"2":{"565":1}}],["unity并未对webgl平台做特别裁剪",{"2":{"631":1}}],["unity小游戏的启动可参考启动流程与时序",{"2":{"611":1,"625":1}}],["unity性能评测标准用于开发者优化游戏性能数据",{"2":{"608":1}}],["unity是以webgl",{"2":{"587":1}}],["unity数据统计等",{"2":{"578":1}}],["unityplugin",{"2":{"807":1}}],["unityprofiler以及更小的包体",{"2":{"760":1}}],["unityprofiler会默认启动监听",{"2":{"757":1}}],["unityprofiler",{"2":{"566":1}}],["unitypermaterial",{"2":{"381":1,"382":1,"663":1}}],["unityheap不宜过大",{"2":{"580":1}}],["unityheap=dynamicmemory+少量静态内存",{"2":{"580":1}}],["unityheap预留内存",{"2":{"580":3,"584":1}}],["unityheap预留量",{"2":{"570":1}}],["unityheap是用于存储所有状态",{"2":{"580":1}}],["unityheap真实使用量",{"2":{"570":1}}],["unityheap使用上限",{"2":{"570":1}}],["unityheap总预分配内存大小",{"2":{"570":1}}],["unityheap非常关键",{"2":{"570":1}}],["unityheap",{"0":{"570":1,"580":1},"2":{"566":1,"577":4,"580":1}}],["unity管理的assetbundle和场景结构等本机内存",{"2":{"565":1}}],["unity博客",{"2":{"565":2}}],["unity微信小游戏首次启动会花费较长的加载时间",{"2":{"513":1}}],["unity微信小游戏专区",{"2":{"503":1}}],["unity导出webgl",{"0":{"497":1,"746":1}}],["unity引擎在早期版本如5",{"2":{"760":1}}],["unity引擎底层资源异步加载策略",{"2":{"685":1}}],["unity引擎目前没有很好地针对浏览器环境优化",{"2":{"588":1}}],["unity引擎视角",{"2":{"570":1}}],["unity引擎初始化",{"2":{"468":1}}],["unity引擎自带压缩纹理",{"2":{"341":1,"342":1}}],["unitynamespace",{"2":{"460":2,"641":1}}],["unityaudio基本能力支持",{"2":{"447":1}}],["unityaudio循环播放修复",{"2":{"224":1}}],["unity音频",{"2":{"447":1}}],["unity基础模块",{"2":{"447":1}}],["unityengine",{"2":{"430":1,"491":3,"830":1,"834":1,"838":1}}],["unityeditor",{"2":{"364":1,"430":3,"797":1}}],["unityloader插件已经考虑到业务会重复请求预下载的文件",{"2":{"853":1}}],["unityloader",{"2":{"386":1,"483":1}}],["unity版本的使用",{"2":{"690":1}}],["unity版本支持从2018到最新的2021版本",{"2":{"446":1}}],["unity版本",{"2":{"384":1,"670":1}}],["unitywebsocket需要对websocket",{"2":{"836":1}}],["unitywebsocket",{"2":{"836":1}}],["unityweb或code",{"2":{"577":1}}],["unitywebrequest按需下载并使用资源",{"2":{"799":1}}],["unitywebrequestassetbundle",{"2":{"450":1,"798":2,"800":1,"802":1}}],["unitywebrequest",{"2":{"450":1,"475":1,"798":4,"800":1,"802":1,"831":1,"832":5,"850":3}}],["unitywebrequest支持timeout属性",{"2":{"77":1}}],["unityweb文件",{"2":{"449":2}}],["unityweb不会被上传",{"0":{"418":1}}],["unityweb",{"2":{"350":1,"386":5,"387":1,"388":1,"498":1,"611":2,"625":2,"717":1,"744":1}}],["unity插件",{"2":{"86":1,"497":1}}],["unity",{"0":{"342":1,"411":1,"420":1,"429":1,"430":1,"440":1,"468":1,"470":1,"565":1,"572":1,"587":1,"593":1,"607":1,"621":1,"716":1,"735":1,"736":1,"761":1,"963":1},"1":{"421":1,"422":1,"423":1,"424":1,"425":1,"426":1,"427":1,"428":1,"429":1,"430":1,"431":1,"432":1,"471":1,"472":1,"473":1,"474":1,"475":1,"476":1,"477":1,"478":1,"479":1,"480":1,"481":1,"482":1,"483":1,"484":1,"485":1,"486":1,"487":1,"488":1,"608":1,"609":1,"610":1,"611":1,"612":1,"613":1,"614":1,"615":1,"616":1,"617":1,"618":1,"619":1,"620":1,"622":1,"623":1,"624":1,"625":1,"626":1,"627":1,"628":1,"629":1,"737":1,"738":1,"739":1,"964":1,"965":1,"966":1,"967":1},"2":{"48":1,"105":1,"108":1,"125":1,"237":1,"244":1,"246":2,"340":2,"342":9,"343":1,"347":1,"353":1,"362":1,"363":1,"364":5,"372":1,"375":1,"377":1,"378":2,"379":12,"380":6,"382":11,"384":6,"385":1,"402":1,"410":1,"430":3,"463":1,"468":1,"473":1,"480":1,"481":1,"482":2,"484":2,"487":1,"500":1,"501":2,"502":1,"503":1,"525":1,"550":5,"554":2,"555":1,"556":1,"560":1,"562":2,"564":1,"565":9,"570":1,"572":1,"578":1,"579":1,"584":1,"586":1,"587":4,"593":2,"597":1,"605":1,"631":2,"637":1,"641":1,"661":4,"662":1,"663":1,"664":2,"665":1,"667":1,"668":2,"670":1,"671":1,"678":2,"684":1,"685":1,"687":1,"688":1,"691":1,"692":1,"693":1,"715":1,"725":2,"733":1,"734":1,"735":1,"739":1,"744":1,"757":3,"759":1,"760":1,"762":1,"772":1,"777":1,"781":1,"783":1,"792":1,"794":2,"803":3,"804":6,"806":1,"812":1,"820":1,"826":2,"831":1,"832":1,"833":1,"836":1,"866":1,"926":1,"933":1,"939":1,"942":1,"949":3,"950":1,"963":2,"966":1,"967":3}}],["unity2018~2020在webgl上没有明显的性能差异",{"2":{"760":1}}],["unity2021开始支持更多特性",{"2":{"760":1}}],["unity2021建议使用instantgame版本",{"2":{"757":1}}],["unity2021不再提示分离symbols",{"2":{"218":1}}],["unity2021",{"2":{"142":1,"665":1}}],["unity2022支持新的memoryprofiler",{"2":{"760":1}}],["unity2022",{"2":{"32":1}}],["unity21",{"2":{"5":1}}],["usparkle",{"2":{"794":1}}],["using",{"2":{"430":4,"491":5,"800":1,"828":1,"834":4,"836":1,"838":4,"850":1}}],["usingmemoryprofiler",{"2":{"105":1}}],["useaudioapi",{"2":{"754":1}}],["usefriendrelation",{"2":{"754":1}}],["useh2=false",{"2":{"655":1}}],["useh2",{"2":{"648":1,"654":1}}],["usecodesplit为false",{"2":{"646":1}}],["usecodesplit",{"2":{"645":1,"682":1}}],["usecontentencoding值为false",{"2":{"646":1}}],["usecontentencoding",{"2":{"645":1,"648":1,"654":1}}],["usecustomprogress",{"2":{"523":2,"528":1,"542":1}}],["use",{"2":{"579":1,"785":1,"786":2}}],["users",{"2":{"802":1}}],["user",{"0":{"442":1},"2":{"461":1}}],["useoptimizedstoreactions",{"2":{"381":1,"382":1}}],["usedheapmemory",{"2":{"570":1}}],["used",{"2":{"264":1,"823":2,"826":18,"828":1}}],["usr",{"2":{"363":1,"744":2,"823":1}}],[">",{"2":{"87":3}}],["l",{"2":{"828":6}}],["lz4压缩方式",{"2":{"797":1}}],["lh",{"2":{"794":1}}],["length",{"2":{"947":1}}],["left",{"2":{"858":2,"932":1}}],["learn",{"2":{"804":1}}],["let",{"2":{"519":1}}],["level",{"0":{"431":1},"2":{"534":4,"726":1}}],["lp",{"2":{"443":1}}],["lualib",{"2":{"828":1}}],["lual",{"2":{"828":2}}],["lua会存在大量分配行为",{"2":{"828":1}}],["luam",{"2":{"826":2}}],["luah",{"2":{"826":2}}],["luay",{"2":{"826":2}}],["lua",{"2":{"826":2,"828":8}}],["lua性能",{"0":{"597":1}}],["lua脚本",{"2":{"447":1}}],["lua可使用assetbundle方式整体打包",{"2":{"426":1}}],["lua外部模块",{"2":{"422":1}}],["launchplugin",{"2":{"682":1}}],["launcheventtype",{"2":{"682":7}}],["launchevent",{"2":{"682":2}}],["launchoperahandler",{"2":{"541":1}}],["launchopera",{"2":{"523":1,"526":1,"527":1,"528":1,"532":1,"534":1,"545":1}}],["launchoperalocaldataxxx",{"2":{"519":2}}],["launchoperainit",{"2":{"519":2,"523":1,"526":1}}],["launchoperaplay",{"2":{"518":1,"519":2}}],["layout配置",{"2":{"417":1}}],["layers",{"2":{"382":1}}],["landscaperight",{"2":{"261":1}}],["landscapeleft",{"2":{"261":1}}],["locale=zh",{"2":{"733":1}}],["local",{"2":{"668":2}}],["localhost",{"2":{"661":2,"757":2}}],["longestframe",{"2":{"657":1,"658":1}}],["long",{"0":{"432":1},"2":{"443":2}}],["lod",{"2":{"382":1,"670":1}}],["lodfade",{"2":{"382":1}}],["loadmain",{"2":{"781":1}}],["loadscenemode",{"2":{"781":1}}],["loadsceneasync",{"2":{"781":1}}],["loadsceneasync可以动态加载场景与获取加载进度",{"2":{"781":1}}],["loadsubwasmpackagecosttime",{"2":{"651":1}}],["loadsubwasmpackagestarttime",{"2":{"651":1}}],["loadfrommemory",{"2":{"826":1}}],["loadfromfile",{"2":{"687":1,"800":1}}],["loadfromcacheordownload除了会将文件存入indexdb外",{"2":{"802":1}}],["loadfromcacheordownload",{"2":{"802":2}}],["loadfromcacheordownload或www等带cache接口",{"2":{"798":1}}],["loadfromcacheordownload等cache",{"2":{"565":1}}],["loadfromcachecount",{"2":{"654":1}}],["loadasset通过文件描述符fd去读实际的目标对象",{"2":{"800":1}}],["loadasset",{"2":{"785":1,"798":2}}],["loadassetasync",{"2":{"687":2,"786":1,"787":1,"789":1}}],["loadassetscript",{"2":{"782":3}}],["loadassets",{"2":{"682":1}}],["loadasset同步接口获取脚本",{"2":{"426":1}}],["loadwasm",{"2":{"682":1}}],["loaddatapackagefromsubpackage",{"2":{"682":1,"817":1}}],["loaddurationcallmain=true",{"2":{"652":1}}],["loaddurationcallmain",{"2":{"651":1}}],["loadcount",{"2":{"654":1,"655":1}}],["loadedtasks",{"2":{"654":1}}],["loadedsize",{"2":{"648":1,"649":3,"654":1}}],["loadedsizestr",{"2":{"648":1,"654":1}}],["loadedcount",{"2":{"648":1,"649":1,"654":1}}],["loader会自动按一定规则做文件缓存",{"2":{"819":1}}],["loader默认使用视频+进度信息呈现",{"2":{"812":1}}],["loader默认使用图片+进度信息",{"2":{"372":1}}],["loader功能",{"0":{"808":1},"1":{"809":1,"810":1,"811":1,"812":1,"813":1,"814":1,"815":1,"816":1,"817":1,"818":1,"819":1,"820":1}}],["loader是在微信小游戏环境加载unity",{"2":{"806":1}}],["loader工作流程",{"0":{"716":1}}],["loader进行初始化",{"2":{"715":1}}],["loader版本",{"2":{"683":1}}],["loader自动完成开发者无需关注",{"2":{"681":1}}],["loader自动上报与开发者自定义阶段",{"2":{"683":1}}],["loader自动上报",{"2":{"680":1}}],["loader提供了上报广告参数的能力",{"2":{"679":1}}],["loader插件进行游戏加载",{"2":{"807":1}}],["loader插件",{"0":{"807":1}}],["loader插件自动统计了代码包",{"2":{"678":1}}],["loader插件会构造正常响应返回给游戏",{"2":{"450":1}}],["loader的数据统计功能如下",{"2":{"678":1}}],["loader",{"0":{"806":1},"2":{"480":1,"967":1}}],["load",{"0":{"422":1},"2":{"775":1,"781":1,"789":1}}],["loading场景",{"2":{"781":1}}],["loadingcount",{"2":{"648":1,"649":1}}],["loading",{"2":{"611":1,"625":1,"956":2}}],["loadingbarwidth",{"2":{"376":1,"755":1,"813":1}}],["loadingpageconfig",{"2":{"375":1}}],["logwarning",{"2":{"781":1}}],["logger",{"2":{"519":1}}],["logo出现",{"2":{"397":1,"463":1}}],["logo",{"2":{"375":1,"377":1,"410":1,"949":1}}],["logerror",{"2":{"368":1,"419":1,"798":2,"800":1}}],["log",{"2":{"338":3,"368":1,"402":6,"419":1,"464":3,"469":1,"491":8,"519":2,"527":1,"556":1,"606":2,"681":3,"832":4,"834":5,"838":4,"850":1,"858":2}}],["login",{"2":{"338":1,"863":1}}],["like",{"2":{"826":27}}],["list",{"2":{"561":2,"846":1,"847":1,"848":1,"849":2,"850":3}}],["listener",{"2":{"87":1,"834":2,"838":2}}],["litjson",{"2":{"834":1,"838":1}}],["lit",{"2":{"383":1}}],["litinput",{"2":{"382":1}}],["lightmap",{"2":{"381":1,"382":3,"667":4}}],["light",{"2":{"381":2,"382":3}}],["lights",{"2":{"381":1}}],["lineartosrgb",{"2":{"382":1}}],["lineartogamma22",{"2":{"382":1}}],["linear模式兼容",{"2":{"97":1}}],["lineheight",{"2":{"375":1,"377":1}}],["library包",{"2":{"379":2}}],["library",{"2":{"379":9,"430":1}}],["lib",{"2":{"364":1}}],["libgdiplus",{"2":{"362":1,"364":3}}],["lt",{"0":{"545":1,"546":1},"2":{"21":1,"366":1,"369":1,"514":1,"564":4,"577":1,"580":1,"612":3,"627":3,"628":15,"629":15,"649":2,"652":1,"655":3,"683":2,"725":1,"781":2,"837":1}}],["原因",{"2":{"928":1,"929":1}}],["原因是收集函数不够完备",{"2":{"412":1}}],["原本使用webrequest的话可按如下修改",{"2":{"800":1}}],["原本是打开一个文件流",{"2":{"800":1}}],["原本的",{"2":{"554":1}}],["原有的代码",{"2":{"519":1}}],["原生app手游之间技术栈导致的性能差异",{"2":{"586":1}}],["原生插件内存",{"2":{"570":1}}],["原生内存",{"2":{"570":1}}],["原生",{"0":{"687":1,"688":1,"689":1},"2":{"482":1,"502":1,"685":1}}],["原理也是利用到了js与c",{"2":{"424":1}}],["原理解释",{"0":{"355":1}}],["原来的",{"2":{"380":1}}],["原",{"2":{"87":1}}],["可忽略这个错误",{"2":{"947":1}}],["可右键保存日志文件",{"2":{"898":1}}],["可联系小游戏研发助手8号",{"2":{"898":1}}],["可前往微信开发者工具",{"2":{"894":1}}],["可从本地加载字体",{"2":{"855":1}}],["可节省启动下载的资源量",{"2":{"854":1}}],["可节省内存",{"2":{"800":1}}],["可查看插件详细日志",{"2":{"820":1}}],["可切换版本号",{"2":{"807":1}}],["可看到以下内容",{"2":{"781":1}}],["可更改playersettings面板il2cpp选项为更小尺寸",{"2":{"726":1}}],["可缓存资源小于总请求数的一半",{"2":{"655":1}}],["可缓存文件过少",{"2":{"655":1}}],["可将项目中无用资源清理",{"2":{"734":1}}],["可将catalog",{"2":{"655":1}}],["可将bundle名中hash长度设置为crc长度",{"2":{"465":1}}],["可采用对应的优化手段",{"2":{"646":1}}],["可着重关注网络和卡帧的数据",{"2":{"642":1}}],["可帮助开发者在开发阶段针对问题进行优化",{"2":{"640":1}}],["可见范围以降低渲染物件",{"2":{"604":1}}],["可开启webgl2",{"2":{"604":1}}],["可降低渲染压力可明显降低设备发热量",{"2":{"601":1}}],["可获取函数热点",{"2":{"593":1}}],["可用于超休闲游戏",{"2":{"589":1}}],["可多预留50",{"2":{"580":1}}],["可被使用",{"2":{"570":1}}],["可控制进度条进度",{"2":{"542":1}}],["可适当给出toast提醒网络较弱",{"2":{"524":1}}],["可选值参考deviceorientation",{"2":{"748":1}}],["可选",{"2":{"498":2,"528":1,"748":1}}],["可选择将首包资源作为小游戏分包加载",{"2":{"815":1}}],["可选择可交互上报后或在引擎初始化完成",{"2":{"641":1}}],["可选择优化maxsize的方式",{"2":{"333":1}}],["可选择",{"2":{"329":1}}],["可参见资源缓存与淘汰",{"2":{"799":1}}],["可参见github文档",{"2":{"105":1}}],["可参考unity官方文档说明",{"2":{"928":1}}],["可参考websocket",{"2":{"836":1}}],["可参考启动loader视频规范进行配置",{"2":{"812":1}}],["可参考使用wxassetbundleprovider节省内存",{"2":{"800":1}}],["可参考",{"2":{"663":1,"667":1}}],["可参考手册案例完成适配",{"2":{"475":1}}],["可参阅相关手册完成上报配置",{"2":{"480":1}}],["可体验的webgl",{"2":{"470":1}}],["可能存在资源热更",{"2":{"848":1}}],["可能导致用户流失",{"2":{"768":1}}],["可能涉及资源下载",{"2":{"768":1}}],["可能会支持",{"2":{"670":1}}],["可能会导致一些渲染异常问题",{"2":{"668":1}}],["可能会打断",{"2":{"668":1}}],["可能有",{"2":{"668":1}}],["可能由于游戏业务初始化逻辑较重",{"2":{"655":1}}],["可能在右上角的三个点展开菜单",{"2":{"467":1}}],["可能和替换",{"2":{"379":1}}],["可修改",{"2":{"455":2,"499":1,"752":1}}],["可自行替换",{"2":{"814":1}}],["可自动缓存个数",{"2":{"654":1}}],["可自动剔除函数名",{"2":{"399":1}}],["可自定义",{"2":{"338":1}}],["可视化编辑器的包",{"2":{"379":1}}],["可作为视频加载时的封面",{"2":{"375":1}}],["可根据游戏实际情况进行调整",{"2":{"375":1,"377":1,"814":1}}],["可缺省",{"2":{"368":4,"371":1}}],["可对该变量进行直接赋值",{"2":{"360":1}}],["可点击还原wasm文件到初始状态",{"2":{"961":1}}],["可点击",{"2":{"349":1}}],["可结合使用wxassetbundle减少ab体积造成的文件内存",{"2":{"341":1}}],["可使用assetstudio查看文件内的所有资源",{"2":{"725":1}}],["可使用application",{"2":{"600":1}}],["可使用微信开发者工具辅助分析",{"2":{"655":1}}],["可使用小游戏云测获取兼容性报告",{"2":{"590":1}}],["可使用c",{"2":{"423":1}}],["可使用",{"2":{"388":1,"597":1}}],["可使用引擎自身的astc压缩格式",{"2":{"341":1}}],["可使用旧版本备份包",{"2":{"86":1}}],["可以明显感受到启动开始阶段",{"2":{"943":1}}],["可以看到在几个压测示例中高性能模式均明显优于普通模式",{"2":{"939":1}}],["可以看到插件的按钮",{"2":{"872":1}}],["可以点右上角退出小游戏触发强制gc来观察",{"2":{"897":1}}],["可以点击",{"2":{"878":1}}],["可以继续生成分包",{"2":{"890":1}}],["可以先继续往下生成分包",{"2":{"889":1}}],["可以等收集函数超过",{"2":{"888":1}}],["可以缓解内存问题",{"2":{"886":1}}],["可以考虑再往下分一次包然后提审发布",{"2":{"884":1}}],["可以考虑合并成",{"2":{"669":1}}],["可以尽量覆盖各种机型",{"2":{"879":1}}],["可以从",{"2":{"836":1}}],["可以用于生产",{"2":{"774":1}}],["可以检查data首包以及assetsbundle",{"2":{"732":1}}],["可以适当调小一点渲染分辨率",{"2":{"673":1}}],["可以尝试优化",{"2":{"670":1}}],["可以尝试使用",{"2":{"668":1}}],["可以打个",{"2":{"670":1}}],["可以通过在callmain或者raf之前暂停来观察",{"2":{"897":1}}],["可以通过分包插件面板的新增收集函数个数来留意线上新增的情况",{"2":{"884":1}}],["可以通过",{"2":{"668":1}}],["可以通过网络交互",{"2":{"520":1}}],["可以使用增量更新",{"2":{"876":1}}],["可以使用loader暴露的进度事件上报到自己的系统",{"2":{"682":1}}],["可以使用mesh",{"2":{"670":1}}],["可以使用",{"2":{"664":1}}],["可以参考demo",{"2":{"559":1}}],["可以不依赖任何引擎调用",{"2":{"558":1}}],["可以调用wx",{"2":{"556":1}}],["可以让开发者在任意位置访问到控制句柄",{"2":{"526":1}}],["可以按照老用户立即结束剧情即可",{"2":{"520":1}}],["可以按照这个流程采集profile",{"2":{"469":1}}],["可以是游戏厂家logo",{"2":{"520":1}}],["可以在",{"2":{"664":1}}],["可以在微信开发者工具打开转化后的小游戏进行预览",{"2":{"498":1}}],["可以在资源更新时",{"2":{"458":1}}],["可以借助上面提到的profile工具进行优化",{"2":{"468":1}}],["可以借鉴里面定制的方法或思路",{"2":{"384":1}}],["可以替代已有unity的playerpref",{"2":{"441":1}}],["可以拿来用",{"2":{"384":1}}],["可以",{"2":{"384":1,"424":1,"426":1}}],["可以切回官方的",{"2":{"384":1}}],["可以手动在",{"2":{"384":1}}],["可以支持镂空",{"2":{"382":1}}],["可以简化",{"2":{"381":4}}],["可以定制本地化",{"2":{"380":1}}],["可以输入调用云函数代码进行简单测试",{"2":{"338":1}}],["可以根据自身需求选择",{"2":{"336":1}}],["可通过开发者工具查看对应资源的",{"2":{"948":1}}],["可通过微信开发者工具查看",{"2":{"947":1}}],["可通过微信开发者工具控制台",{"2":{"417":1}}],["可通过打开调试+http",{"2":{"841":1}}],["可通过csharp接口",{"2":{"843":1}}],["可通过c",{"2":{"811":1}}],["可通过mp后台",{"2":{"769":1}}],["可通过minigame",{"2":{"641":1}}],["可通过minigameconfig",{"2":{"64":1}}],["可通过在命令行执行引擎自带node启动websocketfy",{"2":{"757":1}}],["可通过启动留存上报能力上报统计",{"2":{"611":1}}],["可通过benchmarking",{"2":{"587":1}}],["可通过bundlehashlength修改",{"2":{"458":1}}],["可通过unityprofiler进一步分析问题所在",{"2":{"572":1}}],["可通过导出选项中bundle名中hash长度来自定义",{"2":{"465":1}}],["可通过defaultreleasesize修改",{"2":{"460":1}}],["可通过textureshashlength配置",{"2":{"459":1}}],["可通过右上角搜索栏检索快速查找对应的纹理资源进行忽略设置",{"2":{"352":1}}],["可通过转换工具配套提供的资源优化工具",{"2":{"330":1}}],["可在此期间打开调试",{"2":{"329":1}}],["可做缓存",{"2":{"326":1}}],["版本更新与资源部署",{"2":{"967":1}}],["版本更新请查看更新日志",{"2":{"966":1}}],["版本更新",{"0":{"763":1},"1":{"764":1,"765":1,"766":1,"767":1,"768":1,"769":1,"770":1}}],["版本兼容性",{"0":{"759":1}}],["版本引擎使用资源包方式可安装",{"2":{"693":1}}],["版本游戏完全没有做资源的拆包",{"2":{"685":1}}],["版本信息",{"2":{"655":1}}],["版本要求",{"0":{"855":1},"2":{"641":1}}],["版本小于",{"2":{"496":1}}],["版本建议",{"2":{"446":1}}],["版本构建",{"2":{"430":1}}],["版本和",{"2":{"384":1}}],["版本和微信定制的",{"2":{"384":1}}],["版本不一样",{"2":{"384":1}}],["版本是越新越好吗",{"2":{"762":1}}],["版本是很接近的",{"2":{"384":1}}],["版本是基于大部分微信小游戏的渲染需要来定制的",{"2":{"382":1}}],["版本可以直接拿来用吗",{"2":{"384":1}}],["版本可能不一样",{"2":{"384":1}}],["版本对应",{"2":{"384":1}}],["版本后",{"2":{"384":1}}],["版本后需要重新构建",{"2":{"342":1}}],["版本目前没有对",{"2":{"384":1}}],["版本定制的渲染管线",{"2":{"382":1}}],["版本进行游戏开发",{"2":{"379":1}}],["版本支持",{"2":{"342":1}}],["版本支持问题",{"0":{"342":1}}],["版本",{"2":{"342":1,"379":1,"382":1,"383":2,"384":2}}],["版本限制条件更新",{"2":{"242":1}}],["版本包进行回退",{"2":{"86":1}}],["版本使用新的目录结构为wx",{"2":{"86":1}}],["版本号兼容验证逻辑",{"2":{"12":1}}],["vv",{"2":{"661":1,"757":1}}],["vs",{"0":{"587":1,"588":1}}],["var",{"2":{"499":1,"519":1,"541":1,"560":2,"752":1,"781":1,"782":2,"789":2,"838":1,"858":2,"932":1}}],["value",{"0":{"536":1,"542":1,"547":1},"2":{"491":4,"519":3,"542":1,"832":1}}],["v",{"2":{"491":7}}],["void",{"0":{"542":1,"544":1,"545":1,"546":1,"547":1},"2":{"430":1,"491":7,"782":2,"785":2,"797":1,"828":7,"834":3,"838":3}}],["vm",{"2":{"402":1}}],["vconsole输出如下",{"2":{"647":1}}],["vconsole",{"2":{"397":1,"410":1,"463":1,"500":2,"945":1,"949":1}}],["vfxcalcpixeloutputforward",{"2":{"382":1}}],["veretx",{"2":{"670":1}}],["vertex",{"2":{"670":2}}],["versions",{"2":{"430":1}}],["version2",{"2":{"392":1}}],["version",{"2":{"364":2,"807":1,"897":1}}],["vendor",{"2":{"606":3}}],["vector2",{"2":{"932":2}}],["vector",{"2":{"381":1}}],["vibratelong",{"2":{"863":1}}],["vibrateshort",{"2":{"863":1}}],["view",{"2":{"794":1}}],["vivo",{"2":{"610":1,"625":1}}],["visible",{"2":{"375":1}}],["videoplayer",{"0":{"438":1}}],["videoplayer组件",{"2":{"28":1}}],["video",{"2":{"374":1,"375":1,"376":1,"813":1,"814":1}}],["videourl",{"2":{"374":1,"376":1,"754":1,"813":1}}],["video支持修改属性",{"2":{"53":1}}],["v8",{"2":{"329":1,"565":1}}],["v1",{"0":{"900":1,"902":1,"904":1,"906":1,"908":1,"910":1,"912":1,"914":1,"916":1,"918":1,"920":1,"922":1},"1":{"901":1,"903":1,"905":1,"907":1,"909":1,"911":1,"913":1,"915":1,"917":1,"919":1,"921":1,"923":1},"2":{"111":1,"864":12}}],["v2",{"2":{"86":2,"519":1,"525":1,"695":1,"777":2}}],["7mb",{"2":{"826":1}}],["750",{"2":{"956":1}}],["75",{"2":{"888":1,"926":1}}],["751427a66d22b184c95342d556354150",{"2":{"802":1}}],["75ms",{"2":{"468":1}}],["7s",{"2":{"628":1}}],["768",{"2":{"580":1}}],["7p",{"2":{"564":1,"942":1}}],["79ms",{"2":{"464":1}}],["741",{"2":{"432":1}}],["72",{"2":{"383":1}}],["720",{"2":{"377":2}}],["70mb",{"2":{"577":1}}],["70",{"2":{"383":2,"468":1,"542":1}}],["78kb",{"2":{"464":1}}],["78",{"2":{"377":1}}],["7",{"0":{"76":1,"114":1,"146":1,"159":1,"161":1,"165":1,"167":1,"184":1,"217":1,"219":1,"245":1,"413":1,"427":1,"440":1,"602":1,"951":1},"1":{"77":1,"78":1,"115":1,"116":1,"147":1,"160":1,"162":1,"163":1,"164":1,"166":1,"168":1,"185":1,"218":1,"220":1,"246":1},"2":{"430":2,"564":1,"655":1,"934":1,"942":1,"949":1}}],["如按上述文档去除依然无法解决",{"2":{"950":1}}],["如启动前",{"2":{"943":1}}],["如安全区域的获取需调用",{"2":{"932":1}}],["如遇到问题请与小游戏研发助手",{"2":{"927":1}}],["如js版的banner广告的调用如下",{"2":{"858":1}}],["如$stream",{"2":{"851":1}}],["如无ssl证书或正式域名",{"2":{"841":1}}],["如非需要新老unity引擎版本兼容",{"2":{"797":1}}],["如大厅",{"2":{"781":1}}],["如前所述",{"2":{"781":1}}],["如有条件尽可能使用",{"2":{"760":1}}],["如有二次修改请备份",{"2":{"86":1}}],["如更全的压缩纹理",{"2":{"760":1}}],["如不支持设置webgl分辨率",{"2":{"760":1}}],["如stencil特性支持",{"2":{"950":1}}],["如splash图片等",{"2":{"725":1}}],["如system",{"2":{"422":1}}],["如arial字体",{"2":{"725":1}}],["如assetbundle",{"2":{"687":2}}],["如astc",{"2":{"340":1,"357":1}}],["如此一来也更方便开发者的代码版本维护",{"2":{"695":1}}],["如休闲游戏已进入核心玩法",{"2":{"681":1}}],["如进入新手引导或大厅",{"2":{"681":1}}],["如修改端口需重启websocketfy",{"2":{"661":1}}],["如游戏bgm",{"2":{"582":1}}],["如物理",{"2":{"578":1}}],["如在ios系统",{"2":{"578":1}}],["如createbannerad就变为createbannerad",{"2":{"858":1}}],["如c",{"2":{"570":1}}],["如lua",{"2":{"565":1,"570":2}}],["如litjson解析",{"2":{"75":1}}],["如下是适配刘海屏",{"2":{"932":1}}],["如下",{"2":{"601":1}}],["如下代码",{"2":{"556":1}}],["如下图",{"2":{"552":1}}],["如下配置",{"2":{"523":1}}],["如图所示",{"2":{"522":1,"872":1}}],["如需手工调整ip",{"2":{"757":1}}],["如需手动删除缓存可在真机中小游戏下拉历史栏将小游戏删除",{"2":{"717":1}}],["如需保持相关的应用配置应始终保留该目录内容",{"2":{"695":1}}],["如需设置ios的设备分辨率可以在game",{"2":{"601":1}}],["如需关闭",{"2":{"523":1}}],["如需异步请查阅",{"2":{"519":1}}],["如需读取本地缓存请使用",{"2":{"519":1}}],["如开发者希望分享案例",{"2":{"698":1}}],["如开启",{"2":{"523":1}}],["如开篇的流程图所示",{"2":{"457":1}}],["如开源的unitywebsocket插件",{"2":{"447":1}}],["如xlua",{"2":{"447":1}}],["如2019",{"2":{"430":1}}],["如何判别游戏否已经开启了高性能模式",{"0":{"945":1},"2":{"934":1}}],["如何开通",{"0":{"940":1},"2":{"934":1}}],["如何查看分包插件日志",{"0":{"898":1},"2":{"864":1}}],["如何查看日志",{"0":{"397":1}}],["如何更新分包插件",{"0":{"894":1},"2":{"864":1}}],["如何验证",{"0":{"852":1}}],["如何优雅地异步加载",{"0":{"784":1},"1":{"785":1,"786":1,"787":1}}],["如何消除冗余呢",{"2":{"781":1}}],["如何合理与高效地进行资源按需加载是非常重要的事情",{"2":{"684":1}}],["如何上报",{"0":{"680":1}}],["如何使用unity",{"0":{"807":1}}],["如何使用",{"0":{"641":1},"2":{"639":1}}],["如何获取设备硬件信息",{"0":{"606":1}}],["如何解决ios高性能模式出现内存过大导致游戏关闭",{"2":{"584":1}}],["如何设置",{"2":{"580":1}}],["如何接入第三方的js",{"0":{"424":1}}],["如何自定义接入构建流程",{"0":{"419":1}}],["如何在真机上进行调试和错误日志排查",{"0":{"410":1}}],["如何在真机上预览游戏",{"0":{"409":1}}],["如何通过错误堆栈查找源代码问题",{"0":{"398":1},"1":{"399":1,"400":1}}],["如何排查程序中出现的异常",{"0":{"396":1},"1":{"397":1,"398":1,"399":1,"400":1}}],["如何找到对应堆栈并解决问题",{"2":{"395":1}}],["如no",{"2":{"392":1}}],["如果同时使用代码分包插件",{"2":{"957":1}}],["如果不做任何优化的情况下",{"2":{"952":1}}],["如果不需要建议在",{"2":{"668":1}}],["如果未使用代码分包的情况下",{"2":{"951":1}}],["如果未进行优化前",{"2":{"943":1}}],["如果出现资源访问失败",{"2":{"949":1}}],["如果出现卡顿",{"2":{"889":1}}],["如果出现红框中的提示",{"2":{"875":1}}],["如果能看到有新增函数个数的变化",{"2":{"889":1}}],["如果能用半精度",{"2":{"668":1}}],["如果线上新增较多",{"2":{"884":1}}],["如果上线后",{"2":{"881":1}}],["如果想回退到未分包的版本",{"2":{"880":1}}],["如果这个游戏之前的包已经有用过代码分包",{"2":{"876":1}}],["如果这里给出的参考版本满足开发者需要",{"2":{"384":1}}],["如果等待超过10分钟",{"2":{"875":1}}],["如果用的是stable版",{"2":{"870":1}}],["如果用了",{"2":{"668":1}}],["如果预下载完成unityloader会立即构造网络数据返回",{"2":{"853":1}}],["如果服务端使用",{"2":{"837":1}}],["如果我们希望把someprefab以及它的依赖资源打包在addressable分组进行按需下载应该如何做呢",{"2":{"782":1}}],["如果我们仅将场景作为分组",{"2":{"781":1}}],["如果我们需要尽量少的工作量去做到像h5游戏按需加载",{"2":{"776":1}}],["如果希望用户始终打开最新版本",{"2":{"769":1}}],["如果某个用户本地有小程序的历史版本",{"2":{"766":1}}],["如果发现无法正常的情况请尝试更换小版本",{"2":{"757":1}}],["如果发现部分代码被错误裁剪",{"2":{"431":1}}],["如果无法连接请查看微信开发者工具network页签对应的ws链接是否正常可达",{"2":{"757":1}}],["如果无法连接请关注vconsole输出的ip",{"2":{"661":1}}],["如果配置了加载阶段视频url",{"2":{"748":1}}],["如果当前版本暂不支持",{"2":{"694":1}}],["如果dpr",{"2":{"673":1}}],["如果data资源包和wasm对不上会有各种问题",{"2":{"500":1}}],["如果手机发烫比较严重",{"2":{"673":1}}],["如果只用一个",{"2":{"672":1}}],["如果渲染状态比较多",{"2":{"671":1}}],["如果渲染差异比较大",{"2":{"384":1}}],["如果使用unity2021以上版本",{"2":{"726":1}}],["如果使用",{"2":{"671":2}}],["如果使用的功能是定制",{"2":{"384":1}}],["如果顶点过多或骨骼数过多",{"2":{"670":1}}],["如果有正确压缩",{"2":{"947":1}}],["如果有最后两点",{"2":{"881":1}}],["如果有顶点蒙皮",{"2":{"670":1}}],["如果有用不到的关键字要记得删除掉",{"2":{"668":1}}],["如果有用到纹理压缩和微信音频api",{"2":{"389":1}}],["如果",{"2":{"670":1}}],["如果启用",{"2":{"669":1}}],["如果实在代替不了",{"2":{"668":1}}],["如果地表是平的",{"2":{"667":1}}],["如果没有光照和阴影的需要",{"2":{"667":1}}],["如果游戏不能升级版本",{"2":{"933":1}}],["如果游戏使用",{"2":{"833":1}}],["如果游戏场景比较复杂",{"2":{"670":1}}],["如果游戏需要依赖",{"2":{"663":1}}],["如果游戏内容不多",{"2":{"663":1}}],["如果游戏勾选profiling",{"2":{"329":1}}],["如果需要光照和阴影的",{"2":{"667":1}}],["如果需要手工调整端口可通过修改以下代码",{"2":{"661":1}}],["如果需要在",{"2":{"556":1}}],["如果以上步骤完成还有问题",{"2":{"584":1}}],["如果开发者有简单的js代码经验",{"2":{"861":1}}],["如果开发者遇到内存问题时请逐个排查优化",{"2":{"577":1}}],["如果开发者工具控制台没有添加插件的入口请手动在mp端添加插件或者升级至最新版本的开发者工具",{"2":{"417":1}}],["如果开放数据域在监听到",{"2":{"562":1}}],["如果排行榜被绘制在屏幕中央且物理尺寸为",{"2":{"560":1}}],["如果父元素占满整个窗口的话",{"2":{"560":1}}],["如果仅仅在",{"2":{"555":1}}],["如果在开发者注册时剧情已经结束",{"2":{"545":1}}],["如果遇到问题可以随时反馈给我们",{"2":{"506":1}}],["如果遇到异常",{"2":{"492":1}}],["如果你希望将导出插件集成到自己的发布流程",{"2":{"499":1,"752":1}}],["如果你用的是big",{"2":{"496":1}}],["如果playerloadfirstscene耗时占比过高",{"2":{"469":1}}],["如果callmain耗时过大",{"2":{"468":1}}],["如果默认没有",{"2":{"467":1}}],["如果非致命异常",{"2":{"402":1}}],["如果wasm代码+首包资源小于20mb",{"2":{"388":1}}],["如果是选择",{"2":{"665":1}}],["如果是新开发的游戏",{"2":{"664":1}}],["如果是scale",{"2":{"560":1}}],["如果是玩家存档",{"2":{"423":1}}],["如果是资源",{"2":{"423":1}}],["如果是用的aa",{"2":{"390":1}}],["如果是",{"2":{"384":1,"665":1,"670":1,"840":1}}],["如果后面版本有相关的接口",{"2":{"380":1}}],["如果此时",{"2":{"379":1}}],["如果按文本传输也会出现加载回来的图片成黑色",{"2":{"358":1}}],["如mmo",{"2":{"341":1}}],["如测试环境",{"2":{"338":1}}],["如没有用到",{"2":{"338":1}}],["如希望能从游戏启动立即抓取profile",{"2":{"329":1}}],["如",{"2":{"87":1,"342":1,"350":1,"525":1,"530":1,"697":1,"851":1}}],["如心跳",{"2":{"48":1}}],["x已提供webgl平台导出模式",{"2":{"760":1}}],["xcode抓帧工具",{"2":{"670":1}}],["xcode",{"0":{"568":1},"2":{"566":1,"584":1}}],["x3c",{"2":{"560":1,"561":1,"681":2,"785":3,"786":2,"787":2,"789":2,"834":3,"838":3,"850":2}}],["xsamx",{"2":{"942":1}}],["xs",{"2":{"560":1}}],["xlua",{"2":{"432":1}}],["xr",{"2":{"378":1,"381":2,"382":1}}],["x",{"2":{"342":1,"383":2,"554":4,"560":6,"562":2,"610":1,"625":1,"823":1,"932":1}}],["x26",{"2":{"338":4,"380":2,"561":4,"828":1}}],["xml",{"2":{"75":1}}],["xxxx",{"2":{"392":2,"858":2}}],["xxx",{"2":{"49":1,"350":1,"400":1,"491":1,"577":1,"647":2,"826":4}}],["微信提供的",{"2":{"949":1}}],["微信号",{"2":{"927":1}}],["微信客户端满足以下版本要求时",{"2":{"855":1}}],["微信系统字体",{"0":{"854":1},"1":{"855":1,"856":1,"857":1},"2":{"967":1}}],["微信系统字体预载bug修复",{"2":{"73":1}}],["微信基础库支持udpsocket类",{"2":{"838":1}}],["微信底层接口支持",{"2":{"737":1}}],["微信用户存在不少",{"2":{"725":1}}],["微信广告可指定网络条件",{"2":{"725":1}}],["微信sdk",{"2":{"966":1}}],["微信sdk内容将不再存放在游戏工程的assets目录中",{"2":{"695":1}}],["微信sdk安装",{"0":{"690":1},"1":{"691":1,"692":1,"693":1,"694":1,"695":1,"696":1,"697":1}}],["微信sdk工具支持开发者自行实现构建",{"2":{"419":1}}],["微信两种方式",{"2":{"506":1}}],["微信版本与运行时基础要求是什么",{"2":{"500":1}}],["微信版本或基础库版本过低时wxwebassembly未定义",{"2":{"317":1}}],["微信公众平台",{"2":{"488":1}}],["微信平台能力接入",{"0":{"478":1},"1":{"479":1,"480":1},"2":{"470":1}}],["微信接口提示",{"0":{"442":1}}],["微信定制的",{"2":{"384":2}}],["微信纹理压缩工具在资源处理的过程中识别了资源能否正确的被压缩处理",{"2":{"359":1}}],["微信unity",{"2":{"348":1}}],["微信unitysdk压缩纹理工具",{"2":{"341":1}}],["微信开发者工具会自动更新分包插件",{"2":{"894":1}}],["微信开发者工具小游戏profile",{"2":{"661":1,"757":1}}],["微信开发者工具",{"0":{"495":1,"574":1,"660":1},"2":{"639":1,"751":1,"823":1,"839":2,"840":1,"898":1}}],["微信开发者工具域名列表",{"0":{"443":1}}],["微信开发者工具域名被屏蔽",{"2":{"416":1}}],["微信开发者工具服务异常",{"0":{"416":1}}],["微信开发者工具能正常打开游戏",{"0":{"414":1}}],["微信开发者工具提示",{"0":{"413":1}}],["微信开发者工具打开时提示",{"0":{"407":1,"408":1}}],["微信开发者工具将软解为rgab32",{"2":{"341":1}}],["微信开发者工具支持提示插件审核指引",{"2":{"153":1}}],["微信",{"0":{"383":1},"2":{"340":1,"343":1,"380":1,"473":1,"479":1}}],["微信小游戏技术沙龙分享材料2023",{"2":{"967":1}}],["微信小游戏平台能力以c",{"2":{"964":1}}],["微信小游戏平台对上线无严格的性能要求",{"2":{"590":1}}],["微信小游戏适配方案",{"0":{"963":1},"1":{"964":1,"965":1,"966":1,"967":1}}],["微信小游戏包javascript扩展",{"0":{"954":1}}],["微信小游戏的网络需要提前在mp后台配置安全域名",{"2":{"839":1}}],["微信小游戏从2",{"2":{"742":1}}],["微信小游戏基础库",{"0":{"742":1}}],["微信小游戏具有",{"2":{"720":1}}],["微信小游戏团队将sdk分为如下两种模式安装使用",{"2":{"690":1}}],["微信小游戏环境中不支持对本地的",{"2":{"684":1}}],["微信小游戏将自动连接到unity",{"2":{"661":1,"757":1}}],["微信小游戏请使用",{"2":{"592":1}}],["微信小游戏启动剧情对可能影响用户体验的弱网情况做了相应的回调事件",{"2":{"524":1}}],["微信小游戏希望能够提供一些更早的交互行为来提升这段等待空窗期的用户访问体验",{"2":{"513":1}}],["微信小游戏框架会在顶层监控到任何未捕捉的js异常",{"2":{"512":1}}],["微信小游戏支持如下自定义配置项",{"2":{"487":1}}],["微信小游戏支持通过配置封面图",{"2":{"487":1}}],["微信小游戏在安卓平台提供了cpu",{"2":{"467":1}}],["微信小游戏专用宏",{"2":{"380":1}}],["微信小游戏转换工具面板",{"2":{"353":1}}],["微信小游戏压缩纹理工具",{"2":{"341":1,"342":1}}],["微信小游戏压缩纹理工具2",{"0":{"339":1},"1":{"340":1,"341":1,"342":1,"343":1,"344":1,"345":1,"346":1,"347":1,"348":1,"349":1,"350":1,"351":1,"352":1,"353":1,"354":1,"355":1,"356":1,"357":1,"358":1,"359":1,"360":1,"361":1,"362":1,"363":1,"364":1,"365":1,"366":1,"367":1,"368":1,"369":1,"370":1,"371":1}}],["微信小游戏对后端服务无任何限制",{"2":{"336":1}}],["微信小游戏",{"2":{"331":1,"349":1,"498":2,"664":1,"748":1,"799":1}}],["微信压缩纹理转换完成",{"2":{"368":1}}],["微信压缩纹理api介绍",{"0":{"365":1},"1":{"366":1,"367":1,"368":1,"369":1,"370":1,"371":1}}],["微信压缩纹理使用说明",{"2":{"354":1}}],["微信压缩纹理",{"2":{"352":1}}],["微信压缩纹理优化",{"2":{"123":1}}],["微信压缩纹理对",{"2":{"118":1}}],["微信压缩纹理支持webgl2",{"2":{"118":1}}],["微信压缩纹理增加支持astc6",{"2":{"113":1}}],["微信压缩纹理新增api可供开发者调用接入自定义自动转化能力",{"2":{"97":1}}],["微信压缩纹理工具提供了相应的",{"2":{"365":1}}],["微信压缩纹理工具将对同一个纹理资源生成多种不同格式的压缩纹理",{"2":{"340":1}}],["微信压缩纹理工具支持bundle级别修改压缩纹理等级",{"2":{"142":1}}],["微信压缩纹理工具支持astc文件读取",{"2":{"133":1}}],["微信压缩纹理工具对webgl2",{"2":{"97":1}}],["微信压缩纹理工具内核优化",{"2":{"97":1}}],["微信压缩纹理工具优化增量逻辑",{"2":{"95":1}}],["微信压缩纹理工具修复自定义路径导出",{"2":{"95":1}}],["微信压缩纹理工具unity全版本支持",{"2":{"42":1}}],["请访问gitee项目地址",{"2":{"963":1}}],["请耐心等待",{"2":{"962":1}}],["请升级微信开发者工具版本",{"2":{"960":1}}],["请提供可复现",{"2":{"950":1}}],["请提供详细数据联系平台侧进一步分析",{"2":{"584":1}}],["请不要服务端设置",{"2":{"946":1}}],["请不要使用真机调试",{"2":{"751":3}}],["请前往",{"2":{"894":1}}],["请前往mp后台",{"2":{"415":1,"751":1}}],["请优先查阅用法",{"2":{"860":1}}],["请按需更改地址和端口",{"2":{"838":1}}],["请按需更改地址与端口",{"2":{"834":1}}],["请按需使用",{"2":{"834":1,"838":1}}],["请查看资源部署",{"2":{"770":1}}],["请查阅推荐引擎版本",{"2":{"966":1}}],["请查阅文档优化unity",{"2":{"950":1}}],["请查阅小游戏资源缓存",{"2":{"797":1}}],["请查阅技术常见问题qa",{"2":{"756":1}}],["请查阅webgl2",{"2":{"603":1}}],["请查阅高性能+模式",{"2":{"9":1}}],["请务必使用压缩纹理优化进行优化",{"2":{"760":1}}],["请务必确保使用压缩纹理工具时",{"2":{"343":1}}],["请继续阅读",{"2":{"730":1}}],["请联系小游戏研发助手删除",{"2":{"698":1}}],["请",{"2":{"694":1}}],["请用安卓cpuprofile分析热点函数",{"2":{"646":1}}],["请看前文关于unityheap预留内存的说明",{"2":{"584":1}}],["请检查指定参考的旧版本以及当前版本是否都有",{"2":{"893":1}}],["请检查ssl证书请确认是否过期",{"2":{"841":1}}],["请检查unityprofiler是否已启动监听",{"2":{"757":1}}],["请检查预下载资源是否过大",{"2":{"649":1}}],["请检查",{"2":{"584":1}}],["请在",{"2":{"525":1}}],["请在game",{"2":{"329":1}}],["请开发者对弱网的反馈同样做出合理的处理提升用户体验",{"2":{"524":1}}],["请阅读文档",{"2":{"764":1}}],["请阅读相关手册完成相应的部署",{"2":{"476":1}}],["请阅读资源缓存",{"2":{"394":1}}],["请求请设置到",{"2":{"840":2}}],["请求到服务器的示例",{"2":{"832":1}}],["请求耗时",{"2":{"654":1}}],["请求介绍时间",{"2":{"654":1}}],["请求开始时间",{"2":{"654":1}}],["请求url",{"2":{"654":1}}],["请求详细信息如下",{"2":{"654":1}}],["请求回包总大小",{"2":{"654":1}}],["请求回包总大小的字符串表示",{"2":{"654":1}}],["请求量",{"2":{"653":1}}],["请求量达到一定上限后需要配额调整或申请代金券后更换配额套餐",{"2":{"338":1}}],["请求使用",{"2":{"475":1}}],["请求路径=https",{"2":{"461":1}}],["请更换接口wx",{"2":{"439":1}}],["请确认游戏是否依赖webgl2",{"2":{"428":1}}],["请尽量使用2~3mb以内的精简字体以免影响游戏启动速度",{"2":{"425":1,"725":1}}],["请点三次下方的",{"2":{"410":1}}],["请使用disablewritetypetree提升加载速度与降低内存",{"2":{"797":1}}],["请使用如下参数",{"2":{"797":1}}],["请使用android",{"2":{"727":1}}],["请使用分包工具继续收集",{"2":{"652":3}}],["请使用perfdog或mac",{"2":{"584":1}}],["请使用微信开发者工具",{"2":{"409":1}}],["请使用新版unity导出插件重新导出项目",{"2":{"70":1}}],["请注册小程序appid",{"2":{"407":1}}],["请注意数据的",{"2":{"837":1}}],["请注意做好文件备份",{"2":{"557":1}}],["请注意要按二进制传输",{"2":{"358":1}}],["请注意当开发者手动配置时需要自行判断资源是否是游戏中的必要资源",{"2":{"353":1}}],["请注意",{"2":{"348":1,"392":1,"683":1}}],["请自行查询对应cdn服务商文档进行设置",{"2":{"392":1}}],["请将优先需要的资源放到列表前面",{"2":{"853":1}}],["请将大资源调整到预下载列表顶部",{"2":{"649":1}}],["请将先将",{"2":{"552":1}}],["请将资源上传到",{"2":{"498":1}}],["请将wxtouchinputoverride",{"2":{"427":1}}],["请将首资源包放cdn或http服务器",{"2":{"413":1}}],["请将",{"2":{"360":1}}],["请参照demo示例",{"2":{"426":1}}],["请参考本文前面部分",{"2":{"951":1}}],["请参考资源缓存",{"2":{"687":1}}],["请参考小游戏输入法api进行适配",{"2":{"434":1}}],["请参考小游戏开发者文档以及示例video",{"2":{"438":1}}],["请参考小游戏开发者文档",{"2":{"407":1}}],["请参考https",{"2":{"432":1,"441":2}}],["请参考托管代码剥离",{"2":{"431":1}}],["请参考我们提供的c",{"2":{"424":1}}],["请参考文档优化物理性能",{"2":{"598":1}}],["请参考文档ios高性能模式概述部分",{"2":{"436":1}}],["请参考文档ios高性能模式qa部分",{"2":{"435":1}}],["请参考文档资源部署与缓存",{"2":{"423":1}}],["请参考文档网络通信适配关于跨域的问题",{"2":{"946":1,"948":1}}],["请参考文档网络通信适配",{"2":{"414":1,"421":1}}],["请参考配置说明",{"2":{"346":1}}],["请参阅",{"2":{"524":1}}],["请参阅最佳实践检测工具",{"2":{"86":1}}],["请参阅文档使用assetbundle其中wxassetbundle部分",{"2":{"86":1}}],["请勿同时勾选",{"2":{"823":1}}],["请勿请求catalog",{"2":{"655":1}}],["请勿缓存settings",{"2":{"655":1}}],["请勿设置超过200mb的值",{"2":{"460":1}}],["请勿修改playersettings的压缩选项",{"2":{"411":1}}],["请勿删除旧版本资源",{"2":{"392":1}}],["请勿使用小游戏版",{"2":{"966":1}}],["请勿使用小游戏版微信开发者工具",{"2":{"894":1}}],["请勿使用首资源包",{"2":{"565":1}}],["请勿使用异步方式",{"2":{"519":1}}],["请勿使用异步函数",{"2":{"519":1}}],["请勿使用",{"2":{"346":1}}],["请勿使用development",{"2":{"329":1}}],["请勿开启",{"2":{"345":1}}],["默认object缩放为均匀缩放",{"2":{"928":1}}],["默认检验安全域名",{"2":{"840":1}}],["默认检测条件如上",{"2":{"641":1}}],["默认会检查安全域名",{"2":{"839":1}}],["默认会缓存纹理",{"2":{"456":1}}],["默认240",{"2":{"814":1}}],["默认首包资源放在cdn一级目录",{"2":{"810":1}}],["默认方式",{"0":{"766":1}}],["默认mesh",{"2":{"725":1}}],["默认loader再次启动时资源",{"2":{"717":1}}],["默认的背景图",{"2":{"814":1}}],["默认的材质一般会有些冗余的设置",{"2":{"668":1}}],["默认的剧情将固定播放一段大约3~5秒钟的启动动画",{"2":{"520":1}}],["默认选项",{"2":{"664":1}}],["默认不检验安全域名",{"2":{"839":1,"840":1}}],["默认不需要",{"2":{"685":1}}],["默认不控制将以动画自动补间",{"2":{"523":1}}],["默认不传timeout",{"2":{"232":1}}],["默认额外清理的大小",{"2":{"461":1}}],["默认hash长度为8",{"2":{"459":1}}],["默认hash长度为32",{"2":{"458":1}}],["默认为0",{"2":{"680":1}}],["默认为assets",{"2":{"456":1}}],["默认为il2cppcodegeneration",{"2":{"62":1}}],["默认",{"2":{"455":1}}],["默认url中包含streamingassets的请求会被识别为资源文件被自动缓存",{"2":{"455":1}}],["默认值是json",{"2":{"465":1}}],["默认值200mb",{"2":{"453":1}}],["默认值30mb",{"2":{"453":1}}],["默认导出未webgl1",{"2":{"428":1}}],["默认情况下5秒未使用的bundle会被从内存中清理",{"2":{"800":1}}],["默认情况下位于小游戏底部区域",{"2":{"522":1}}],["默认情况下",{"2":{"397":1,"493":1,"510":2,"792":1}}],["默认情况下配置页面中将扫描当前项目所有可被处理的ab包资源",{"2":{"352":1}}],["默认是3",{"2":{"673":1}}],["默认是开启",{"2":{"671":1}}],["默认是",{"2":{"382":1}}],["默认使用",{"2":{"382":1}}],["默认用渲染图形",{"2":{"380":1}}],["默认效果",{"0":{"376":1}}],["默认设计尺寸为667",{"2":{"375":1}}],["默认总启动耗时",{"2":{"375":1,"377":1,"814":1}}],["默认遵循增量逻辑",{"2":{"368":1}}],["默认全量生成",{"2":{"368":1}}],["默认打包的资源",{"2":{"353":1}}],["默认采用增量逻辑不会额外增加处理时间",{"2":{"349":1}}],["默认推荐使用",{"2":{"347":1}}],["默认开启分享",{"2":{"320":1}}],["默认32位长度",{"2":{"465":1}}],["默认32",{"2":{"268":1}}],["默认超时为1000ms",{"2":{"232":1}}],["默认关闭纹理缓存",{"2":{"193":1}}],["默认10s",{"2":{"64":1}}],["修改为实际api地址",{"2":{"849":2}}],["修改为最新版本",{"2":{"769":1}}],["修改引擎初始化后的预下载并发数",{"2":{"843":1}}],["修改data",{"2":{"811":1}}],["修改provider",{"2":{"800":1}}],["修改分辨率",{"2":{"762":1}}],["修改maxstorage超过200mb会导致出现写缓存失败",{"2":{"465":1}}],["修改此值需要联系研发助手开通权限",{"2":{"461":1,"754":1}}],["修改needcachetextures可控制是否缓存纹理资源",{"2":{"456":1}}],["修改设计宽高和缩放模式后",{"2":{"375":1}}],["修改",{"2":{"338":2,"382":1,"849":2,"850":1}}],["修改后",{"2":{"329":1}}],["修改文件删除接口使用方法cleanfilecache",{"2":{"208":1}}],["修正url中非法路径",{"2":{"201":1}}],["修正调用参数类名的大小写",{"2":{"87":1}}],["修正网络个数和http2",{"2":{"54":1}}],["修复回退为旧分包方案的bug",{"2":{"905":1}}],["修复安卓分片读取包内资源内存越界",{"2":{"328":1}}],["修复了一些bug",{"2":{"312":1,"315":1}}],["修复初始上报时机",{"2":{"308":1}}],["修复首包资源下载异常",{"2":{"297":1}}],["修复若干问题",{"2":{"295":1}}],["修复资源预载bug",{"2":{"291":1}}],["修复资源量较大时",{"2":{"149":1}}],["修复排行榜内存增长问题",{"2":{"283":1}}],["修复独立域插件未编译子包bug",{"2":{"256":1}}],["修复引擎初始化失败后依然回调calledmaincb导致统计问题",{"2":{"250":1}}],["修复部分api问题",{"2":{"234":1}}],["修复部分首资源包压缩异常问题",{"2":{"30":1}}],["修复login方法",{"2":{"232":1}}],["修复21",{"2":{"194":1}}],["修复2022导出video的bug",{"2":{"26":1}}],["修复2021版本abort时执行wxuncaughtexception",{"2":{"250":1}}],["修复2021",{"2":{"10":1}}],["修复是否需要下载代码包上报",{"2":{"183":1}}],["修复playerpref在unity",{"2":{"147":1}}],["修复png资源windows系统下缓存异常",{"2":{"126":1}}],["修复pc端onkeydown回调报错",{"2":{"57":1}}],["修复send接口性能问题",{"2":{"121":1}}],["修复偶现读取空文件的bug",{"2":{"106":1}}],["修复fmod相关的适配问题",{"2":{"103":1}}],["修复fs",{"2":{"5":1}}],["修复fstate偶现报错",{"2":{"3":1}}],["修复ios普通模式运行出错的问题",{"2":{"917":1}}],["修复ios普通模式的渲染异常",{"2":{"103":1}}],["修复ios",{"2":{"917":1}}],["修复ios下音频被系统打断后的恢复问题",{"2":{"289":1}}],["修复ios高性能模式进程内存过大的问题",{"2":{"103":1}}],["修复ios音频被打断无法重新播放",{"2":{"26":1}}],["修复打包后分包插件提示",{"2":{"70":1}}],["修复导出webgl的兼容逻辑",{"2":{"68":1}}],["修复api中不确定类型的数据可能导致类型转换失败的问题",{"2":{"230":1}}],["修复android偶现null",{"2":{"917":1}}],["修复android的内存异常上涨",{"2":{"98":1}}],["修复android首次退出小游戏后会继续播放的问题",{"2":{"81":1}}],["修复android系统代码分包patch功能不生效的问题",{"2":{"13":1}}],["修复audiosource修改pitch失效",{"2":{"57":1}}],["修复最佳实践检测工具首资源包brotli压缩后仍提示未gzip",{"2":{"57":1}}],["修复最佳实践检测工具首资源包是否压缩判断",{"2":{"49":1}}],["修复系统字体未正常预下载",{"2":{"57":1}}],["修复微信压缩纹理dxt占位符当初修复eslint引发的无法替换问题",{"2":{"103":1}}],["修复微信压缩纹理工具在",{"2":{"33":1}}],["修复微信压缩纹理工具对音频ab包的处理bug问题",{"2":{"33":1}}],["修复微信系统字体多行重写的问题",{"2":{"78":1}}],["修复微信系统字体在ios系统部分缺失符号",{"2":{"78":1}}],["修复微信系统字体在ios上部分字符缺失",{"2":{"68":1}}],["修复微信系统字体在安卓上字形异常",{"2":{"68":1}}],["修复微信系统字体加载时报错",{"2":{"54":1}}],["修复使用",{"2":{"49":1}}],["修复旧版本安卓使用系统字体报错",{"2":{"46":1}}],["修复webgl2导出时的胶水层异常",{"2":{"137":1}}],["修复win7下使用unity2021生成symbols时导致的卡死问题",{"2":{"129":1}}],["修复wasm分包patch未生效的问题",{"2":{"38":1}}],["修复wxwritebinfilesync返回值的处理",{"2":{"147":1}}],["修复wxassetbundle",{"2":{"43":1}}],["修复wxassetbundle在异常时上报错误",{"2":{"38":1}}],["修复wx",{"2":{"5":3,"54":1}}],["修复适配插件处理代码分包时序导致的一定概率启动失败",{"2":{"21":1}}],["修复touchmove优化在2020之前版本产生的导出错误",{"2":{"23":1}}],["修复touchmove在",{"2":{"21":1}}],["修复tcp接口arraybuffer处理",{"2":{"16":1}}],["修复压缩纹理工具在一些特殊字符转义失败的bug",{"2":{"13":1}}],["修复开放域排行榜触控",{"2":{"10":1}}],["修复广告低版本微信reportsharebehavior上报问题",{"2":{"10":1}}],["修复蓝牙数据传输问题",{"2":{"10":1}}],["修复截屏回调",{"2":{"5":1}}],["修复unity2021下使用微信压缩纹理工具",{"2":{"137":1}}],["修复unityaudio适配inneraudio时",{"2":{"116":1}}],["修复unityplugin",{"2":{"111":1}}],["修复unity压缩选项导致出包错误",{"2":{"70":1}}],["修复unity",{"2":{"1":1,"78":1}}],["修复udp接口处理buffer",{"2":{"1":1}}],["忽略ab",{"2":{"365":1}}],["忽略",{"2":{"352":1}}],["忽略配置说明",{"0":{"352":1}}],["忽略路径下指定类型文件",{"2":{"268":1}}],["忽略unity分析的网络失败上报",{"2":{"54":1}}],["忽略非重要网络异常上报",{"2":{"48":1}}],["=500mb时",{"2":{"580":1}}],["=14",{"2":{"926":1,"945":1}}],["=1024mb时",{"2":{"580":1}}],["=15",{"2":{"4":1,"926":1}}],["=7",{"2":{"500":2}}],["==",{"2":{"419":1,"534":1,"561":1,"601":1,"757":1,"785":1,"786":1,"789":1,"828":1}}],["===",{"2":{"338":1,"556":2,"682":6,"849":2}}],["=>",{"2":{"329":1,"338":1,"368":1,"430":1,"460":1,"469":1,"519":4,"523":1,"532":1,"534":1,"545":1,"556":1,"561":1,"681":3,"682":1,"781":1,"782":1,"800":2,"834":4,"838":2,"856":1,"858":5,"933":1}}],["=",{"2":{"329":2,"338":3,"363":1,"366":5,"369":2,"377":1,"402":2,"460":2,"461":2,"469":1,"491":7,"499":1,"509":1,"519":4,"523":2,"528":1,"541":1,"545":2,"556":4,"560":6,"561":12,"570":1,"577":1,"601":1,"606":3,"641":1,"649":2,"681":7,"682":1,"752":1,"757":3,"781":1,"782":2,"785":2,"786":2,"787":1,"789":3,"797":1,"798":6,"800":2,"817":1,"828":2,"832":3,"834":6,"836":2,"838":6,"847":1,"849":1,"850":4,"855":3,"856":3,"857":1,"858":9,"861":1,"932":4}}],["=2",{"2":{"53":1,"500":1,"814":1,"945":1}}],["overview",{"2":{"794":1}}],["overdraw",{"2":{"675":1}}],["object",{"2":{"556":1,"744":1}}],["obj",{"2":{"519":1,"781":2,"782":1}}],["osize",{"2":{"828":2}}],["os",{"2":{"430":1}}],["osx",{"2":{"363":1}}],["offaudiointerruptionbegin",{"2":{"863":1}}],["offaudiointerruptionend",{"2":{"863":1}}],["offaddtofavorites",{"2":{"863":1}}],["offhide",{"2":{"863":1}}],["offshow",{"2":{"863":1}}],["offsharetimeline",{"2":{"863":1}}],["offshareappmessage",{"2":{"863":1}}],["offmessage",{"2":{"834":1,"838":1}}],["offglobalvarchange",{"0":{"539":1}}],["offweaknetwork",{"0":{"535":1}}],["offerr",{"0":{"533":1}}],["offend",{"0":{"531":1,"546":1}}],["offkeyboardcomplete",{"2":{"491":1,"863":1}}],["offkeyboardconfirm",{"2":{"491":1,"863":1}}],["offkeyboardinput",{"2":{"491":1,"863":1}}],["of",{"2":{"402":1,"828":2}}],["out",{"2":{"402":1}}],["outbundledir",{"2":{"366":1,"368":1}}],["other",{"2":{"379":1,"380":1,"523":1,"826":2,"828":1}}],["others",{"0":{"326":1}}],["options选项",{"2":{"928":1}}],["optimization",{"2":{"804":2,"868":1}}],["optimizesize",{"2":{"62":1}}],["opts",{"2":{"757":1}}],["operaplay",{"2":{"519":1}}],["operahandler",{"2":{"519":6,"523":2}}],["opengl",{"2":{"925":3}}],["opengles3",{"2":{"428":1}}],["opendatacontext",{"2":{"562":1}}],["opendata",{"2":{"556":2}}],["opendatamessage",{"2":{"556":3,"560":1,"561":2}}],["openapi",{"2":{"338":5}}],["open",{"2":{"338":1,"443":3,"554":2,"557":1,"559":1,"560":1,"561":2}}],["openprofilestats",{"2":{"248":1}}],["openpageoption",{"2":{"87":2}}],["oppo",{"2":{"468":1,"610":1,"625":1}}],["orientation",{"2":{"754":1}}],["org",{"2":{"739":3,"836":1,"857":18}}],["orthoparams",{"2":{"382":1}}],["or",{"0":{"569":1,"576":1},"2":{"49":1,"527":1,"584":1,"822":1,"826":8,"839":1,"917":1}}],["onaudiointerruptionend",{"2":{"863":1}}],["onaudiointerruptionend事件",{"2":{"500":1}}],["onaudiointerruptionbegin",{"2":{"863":1}}],["onaddtofavorites",{"2":{"863":1}}],["onsharetimeline",{"2":{"863":1}}],["onshareappmessage",{"2":{"863":1}}],["onshowcallbackresult",{"2":{"561":1}}],["onshow",{"2":{"561":2,"682":1,"863":1}}],["onshow事件和",{"2":{"500":1}}],["onclose",{"2":{"836":2}}],["onconnect",{"2":{"834":1}}],["onconfirm",{"2":{"491":4}}],["oncomplete",{"2":{"491":4}}],["oncompasschange",{"2":{"54":1}}],["onopen",{"2":{"836":2}}],["onfinishreceivedata",{"2":{"826":1}}],["ondump",{"2":{"823":1}}],["onhide",{"2":{"682":1,"863":1}}],["onmessage函数将分支",{"2":{"836":1}}],["onmessage表现与文档不一致",{"2":{"834":1,"838":1}}],["onmessage",{"2":{"556":3,"834":4,"836":2,"838":4}}],["onglobalvarchange",{"0":{"538":1}}],["onweaknetwork",{"0":{"534":1},"2":{"519":1,"524":1,"534":1}}],["onerror",{"2":{"834":1,"836":2,"858":2}}],["onerror增加回调信息",{"2":{"81":1}}],["onerr",{"0":{"532":1},"2":{"519":1,"530":1,"532":2}}],["onend",{"0":{"530":1,"545":1},"2":{"519":1,"530":1,"545":1}}],["onkeyboardcomplete",{"2":{"491":1,"863":1}}],["onkeyboardconfirm",{"2":{"491":1,"863":1}}],["onkeyboardinput",{"2":{"491":1,"863":1}}],["onkeyboardinputlistenerresult",{"2":{"87":1,"491":3}}],["onkeyboardinputcallbackresult",{"2":{"87":1}}],["oninput",{"2":{"491":4}}],["onpointerexit",{"2":{"491":2}}],["onpointerclick",{"2":{"491":2}}],["onpreprocessbuild",{"2":{"430":1}}],["ontouchstart",{"2":{"469":1}}],["onlaunchprogress",{"2":{"682":1}}],["onload",{"2":{"464":2,"858":2}}],["only",{"0":{"442":1},"2":{"401":1,"402":3,"754":1}}],["on",{"2":{"379":1,"519":1,"523":1,"545":1}}],["onusercapturescreen",{"2":{"5":1}}],["onbluetoothdevicefound",{"2":{"5":1}}],["重复收集与生成",{"0":{"879":1},"2":{"864":1}}],["重新打水印",{"2":{"961":1}}],["重新进入小游戏并打开调试",{"2":{"945":1}}],["重新计算缩放",{"2":{"932":1}}],["重新导出",{"2":{"777":1}}],["重新生成一轮即可",{"2":{"412":1}}],["重度slg品类",{"2":{"704":1}}],["重度mmo品类",{"2":{"703":1}}],["重度",{"2":{"618":1}}],["重度游戏",{"2":{"580":1}}],["重点关注",{"2":{"619":1}}],["重点关注指标",{"2":{"617":1}}],["重点关注兼容性问题",{"2":{"594":1}}],["重现条件",{"2":{"507":1}}],["重启unityprofiler监听",{"2":{"757":2}}],["重启unity后再点授权试试",{"2":{"498":1}}],["重启小游戏",{"2":{"410":1,"949":1}}],["重启",{"2":{"364":1}}],["重命名为",{"2":{"338":1}}],["重构fs",{"2":{"48":1}}],["重要",{"2":{"1":1,"9":1,"13":1,"16":1,"18":2,"20":2,"25":2,"32":1,"38":2,"797":1}}],["重要更新",{"0":{"0":1,"11":1,"14":1,"17":1,"19":1},"1":{"1":1,"12":1,"13":1,"15":1,"16":1,"18":1,"20":1,"21":1},"2":{"24":1,"36":1}}],["支持大部分第三方插件",{"2":{"964":1}}],["支持大部分插件",{"2":{"447":1}}],["支持格式",{"2":{"956":1}}],["支持如下形式的路径",{"2":{"847":1}}],["支持在",{"2":{"831":1}}],["支持本地图片和网络图片",{"2":{"814":1}}],["支持增强的profiler数据",{"2":{"757":1}}],["支持平台",{"0":{"740":1},"1":{"741":1,"742":1}}],["支持真机获取",{"2":{"592":1}}],["支持区分新老用户不同的播放内容",{"2":{"515":1}}],["支持fmod插件",{"2":{"447":1}}],["支持jit",{"2":{"447":1,"589":1}}],["支持标准lua与常见binding",{"2":{"447":1}}],["支持标准渲染管线",{"2":{"447":1}}],["支持动画",{"2":{"447":1}}],["支持的格式按需下载渲染",{"2":{"485":1}}],["支持的能力包括登陆",{"2":{"479":1}}],["支持的bundle命名",{"2":{"461":1}}],["支持的",{"2":{"384":1}}],["支持移动端",{"2":{"378":1}}],["支持说明",{"0":{"351":1}}],["支持情况",{"2":{"346":1}}],["支持",{"2":{"336":1,"342":1,"346":7,"429":1,"447":7,"685":1,"836":1}}],["支持一键全选",{"2":{"333":1}}],["支持游戏恢复到前台后自动播放",{"2":{"320":1}}],["支持文件二进制读写",{"2":{"306":1}}],["支持客服消息",{"2":{"289":1}}],["支持创建视频",{"2":{"287":1}}],["支持创建类时传入success等会回调",{"2":{"48":1}}],["支持导出时配置封面图",{"2":{"285":1}}],["支持配置key",{"2":{"282":1}}],["支持短音频的播放api",{"2":{"278":1}}],["支持以文件名全匹配的方式忽略缓存",{"2":{"237":1}}],["支持playerprefs优化",{"2":{"282":1}}],["支持pc端dxt5压缩纹理",{"2":{"226":1}}],["支持position和length参数",{"2":{"48":1}}],["支持自定义可缓存文件及可清理文件",{"2":{"177":1}}],["支持自定义启动封面样式",{"2":{"157":1}}],["支持小游戏inneraudio",{"2":{"125":1}}],["支持astc使用非4倍数尺寸",{"2":{"123":1}}],["支持指定node路径",{"2":{"115":1}}],["支持开通高性能模式的游戏禁止回退成普通模式运行",{"2":{"93":1}}],["支持webgl2",{"2":{"228":1}}],["支持wxassetbundle",{"2":{"86":1}}],["支持wasm生成external",{"2":{"80":1}}],["支持使用微信字体",{"2":{"86":1}}],["支持unity",{"2":{"80":1}}],["支持对首资源包进行brotli压缩",{"2":{"64":1}}],["支持通过接口在运行时动态修改预下载列表",{"2":{"848":1}}],["支持通过",{"2":{"48":1}}],["支持2022",{"0":{"490":1},"2":{"28":1}}],["ngnix",{"2":{"837":1}}],["nsize",{"2":{"828":3}}],["number",{"2":{"534":1,"645":5,"648":5,"651":4,"654":16,"657":6,"682":2}}],["null",{"0":{"537":1},"2":{"366":3,"368":2,"369":2,"402":3,"519":1,"561":1,"781":1,"782":1,"828":3}}],["needinfo",{"2":{"834":2,"838":2}}],["needcachetextures",{"2":{"453":1,"755":1}}],["newstate",{"2":{"828":4}}],["new",{"2":{"491":2,"499":1,"545":1,"556":1,"560":1,"561":3,"681":3,"697":1,"752":1,"757":1,"798":2,"832":1,"834":3,"836":1,"838":2,"858":2,"932":2}}],["networktime",{"2":{"654":1,"655":1}}],["network",{"2":{"500":1,"830":1,"834":1,"838":1}}],["net",{"2":{"422":1,"830":3}}],["net命名空间下的接口",{"0":{"421":1}}],["native内存",{"2":{"581":1}}],["nativeallocated",{"2":{"570":1}}],["nativeunused",{"2":{"570":1}}],["native",{"2":{"570":3,"577":1}}],["nativereserverd",{"2":{"570":2}}],["native产生",{"2":{"570":1}}],["narrow",{"2":{"377":1}}],["name",{"2":{"338":1,"384":1,"402":2,"832":1}}],["namespace",{"2":{"1":1,"48":1,"237":1,"460":1,"463":1,"570":1,"580":1,"641":1,"723":1,"820":1,"823":1}}],["npot纹理无法使用压缩纹理",{"2":{"334":1}}],["npot",{"2":{"333":1}}],["none",{"2":{"402":2,"534":2,"545":1,"797":1}}],["normalws",{"2":{"382":1}}],["normalreconstruction",{"2":{"381":1,"382":1}}],["noborder",{"2":{"377":1}}],["nodejs",{"2":{"661":2,"757":1}}],["node",{"0":{"344":1,"360":1},"2":{"338":1,"344":2,"360":5,"661":2,"744":1,"757":3}}],["now以提升性能",{"2":{"158":1}}],["now替换performence",{"2":{"158":1}}],["no",{"2":{"49":1,"377":1,"401":1}}],["not",{"0":{"432":1},"2":{"46":1,"54":1,"500":1,"556":1,"826":6,"828":1,"949":1}}],["不超过",{"2":{"956":1}}],["不超过30mb",{"2":{"726":1}}],["不优化内存",{"0":{"952":1},"2":{"934":1}}],["不绘制",{"2":{"928":1}}],["不绘制等问题",{"0":{"928":1}}],["不检查安全域名",{"2":{"840":1}}],["不检验合法域名",{"2":{"839":1,"840":1}}],["不包含wasm编译内存",{"2":{"822":1}}],["不应超过5m",{"2":{"779":1}}],["不应该缓存到本地",{"2":{"655":1}}],["不应该是负数",{"2":{"562":1}}],["不常用配置",{"0":{"755":1}}],["不自动缓存文件类型",{"2":{"748":1,"754":1}}],["不自动下载",{"2":{"313":1}}],["不限制",{"2":{"685":1}}],["不建议",{"2":{"952":1}}],["不建议在微信小游戏使用后处理",{"2":{"674":1}}],["不建议频率过高的调用",{"2":{"441":1}}],["不适用于小游戏",{"2":{"664":1}}],["不够精简",{"2":{"664":2}}],["不灵活",{"2":{"664":1}}],["不一定",{"2":{"663":1}}],["不要打包字体文件",{"2":{"779":1}}],["不要用额外的实时光",{"2":{"667":1}}],["不要初始化所有未使用的资源",{"2":{"637":1}}],["不要使用fmod播放长音频",{"2":{"582":1}}],["不用压缩纹理",{"2":{"669":1}}],["不用",{"2":{"667":1}}],["不用使用xml",{"2":{"596":1}}],["不用担心",{"2":{"379":1}}],["不必要的代码路径裁",{"2":{"588":1}}],["不过不管是什么屏幕适配模式",{"2":{"560":1}}],["不过值得注意的是",{"2":{"525":1}}],["不需要用户反馈行为",{"2":{"511":1}}],["不需要缓存的文件类型",{"2":{"453":1}}],["不会实际读写到磁盘",{"2":{"800":1}}],["不会自动缓存",{"2":{"465":1}}],["不会被自动清理的文件",{"2":{"460":1}}],["不同资源的缓存细节略有不同",{"2":{"454":1}}],["不同的游戏之间使用的场景",{"2":{"355":1}}],["不提供内嵌webview或跳转的能力",{"2":{"437":1}}],["不行",{"2":{"421":1,"437":1,"438":1}}],["不使用异常",{"2":{"402":1}}],["不在关键路径上",{"2":{"402":1}}],["不捕捉任何异常",{"2":{"402":1}}],["不希望被缓存的文件请添加到缓存忽略目录",{"2":{"392":1}}],["不希望被缓存的文件",{"2":{"392":1}}],["不满足渲染需要",{"2":{"384":1}}],["不能阻止线程等待",{"2":{"832":1}}],["不能直接拿来用",{"2":{"664":1}}],["不能直接用",{"2":{"384":1}}],["不能用wx",{"2":{"384":1}}],["不能拿微信定制的",{"2":{"384":1}}],["不影响",{"2":{"382":1}}],["不是真机调试",{"2":{"878":1}}],["不是很稳定",{"2":{"593":1}}],["不是",{"2":{"380":1,"534":1,"584":1,"762":1}}],["不留黑边",{"2":{"377":1}}],["不如摸一个",{"2":{"377":3}}],["不慎剔除将导致游戏的渲染异常",{"2":{"353":1}}],["不可存在多个警告消息",{"2":{"349":1}}],["不可混版本使用",{"2":{"348":1}}],["不支持astc",{"2":{"760":1}}],["不支持设置dpr分辨率",{"2":{"760":1}}],["不支持设备兼容处理",{"2":{"244":1}}],["不支持etc2",{"2":{"760":2}}],["不支持jit",{"2":{"589":1}}],["不支持开发者自建",{"2":{"502":1}}],["不支持system",{"2":{"447":1}}],["不支持luajit",{"2":{"447":1}}],["不支持",{"2":{"342":1,"346":3,"447":1,"685":1}}],["不支持对",{"2":{"340":1}}],["不支持webgl2时提示",{"2":{"205":1}}],["不支持webgl2的旧android微信版本提供升级指引",{"2":{"7":1}}],["不再直接崩溃",{"2":{"43":1}}],["agents",{"2":{"939":1}}],["avoid",{"2":{"828":1}}],["avgloadingcount",{"2":{"654":1,"655":1}}],["atpanic",{"2":{"828":1}}],["at",{"2":{"744":5,"823":1}}],["atlas",{"2":{"669":1}}],["adintervals",{"2":{"858":2}}],["adunitid",{"2":{"858":2}}],["adressable",{"2":{"717":1}}],["adtype",{"2":{"680":1}}],["adtype=1",{"2":{"680":1}}],["adspacetype",{"2":{"680":1}}],["adspacetype=1",{"2":{"680":1}}],["added",{"0":{"921":1,"923":1},"2":{"864":2}}],["address",{"2":{"834":1,"836":2,"838":1}}],["addressable也可使用",{"2":{"800":1}}],["addressable与assetbundle的对比",{"2":{"794":1}}],["addressable4",{"2":{"794":1}}],["addressable编译与部署",{"0":{"792":1}}],["addressable系统也能轻松做到",{"2":{"774":1}}],["addressable系统自动管理了所有复杂的依赖连接",{"2":{"774":1}}],["addressable系统不仅仅会帮你管理",{"2":{"774":1}}],["addressable不仅仅能记载资源",{"2":{"774":1}}],["addressable提供了以下能力",{"2":{"774":1}}],["addressable在小游戏中的应用",{"0":{"773":1},"1":{"774":1,"775":1,"776":1,"777":1}}],["addressable进行资源加载",{"2":{"635":1}}],["addressable进行按需加载",{"2":{"497":1,"746":1}}],["addressables的catalog",{"2":{"655":1}}],["addressables的settings",{"2":{"655":1}}],["addressables",{"2":{"450":1,"735":1,"781":1,"785":1,"786":2,"787":1,"788":1,"789":1,"792":1,"794":1}}],["addressable",{"0":{"735":1},"2":{"447":1,"474":1,"565":1,"685":1,"772":1,"789":1,"794":1,"967":1}}],["addfield",{"2":{"832":3}}],["additional",{"2":{"381":1,"382":1}}],["add",{"2":{"379":1,"384":1,"692":1}}],["a4",{"2":{"562":1}}],["a2",{"2":{"562":1}}],["a1",{"2":{"562":1}}],["a37m",{"2":{"468":1}}],["awakefromload",{"2":{"826":2}}],["awake阻塞",{"2":{"466":1,"727":1}}],["awake应足够少逻辑",{"2":{"466":1,"727":1}}],["await",{"2":{"338":1,"787":1}}],["aac",{"2":{"956":1}}],["aa包较大项目时生成的未压缩的",{"2":{"685":1}}],["aa包",{"0":{"685":1},"2":{"685":2,"777":1}}],["aa",{"0":{"687":1},"2":{"465":1,"474":1,"501":1,"502":1,"684":1,"685":4,"687":2,"689":2}}],["ai",{"2":{"447":1,"939":1}}],["ab内存文件释放",{"2":{"803":1}}],["ab内存文件",{"2":{"803":2}}],["abort",{"2":{"744":1}}],["abort相关逻辑",{"2":{"512":1}}],["ab分包方式载入",{"2":{"689":1}}],["ab",{"0":{"687":1},"2":{"474":1,"501":1,"502":1,"684":1,"685":4,"687":2,"689":1,"798":6}}],["ability",{"2":{"441":2,"500":1,"561":1}}],["ab包打包到",{"2":{"847":1}}],["ab包后",{"2":{"685":1}}],["ab包cdn地址",{"2":{"498":1}}],["ab包cdn地址为streamingassets目录的上一级注意末尾加",{"2":{"498":1}}],["ab包",{"0":{"685":1},"2":{"345":1,"685":2,"689":1}}],["archives",{"2":{"794":1}}],["article",{"2":{"443":1}}],["argumentexception",{"0":{"432":1}}],["arraybuffer",{"2":{"757":1}}],["array",{"0":{"432":1},"2":{"402":1,"669":1}}],["access",{"2":{"947":1}}],["accesses",{"2":{"402":1}}],["activity",{"2":{"568":1}}],["action=show",{"2":{"561":1}}],["action",{"0":{"545":1,"546":1},"2":{"105":1,"366":1,"368":1,"369":1,"371":1,"561":1,"834":1,"838":1}}],["ambientocclusionparam",{"2":{"382":1}}],["amp",{"0":{"356":1,"504":1},"1":{"357":1,"358":1,"359":1,"360":1,"361":1,"362":1,"363":1,"364":1,"505":1},"2":{"680":2,"923":1,"939":2,"949":1}}],["always",{"2":{"725":1}}],["alloc",{"2":{"823":2,"826":18,"828":2}}],["allowed",{"2":{"598":1}}],["all",{"2":{"377":1,"568":1}}],["alpha",{"2":{"346":1,"382":1}}],["after",{"2":{"374":1,"375":1,"376":1,"786":1,"813":1,"814":1}}],["animation",{"2":{"939":1}}],["animationclip",{"2":{"826":1}}],["anchormin",{"2":{"932":1}}],["analyze进行分析时",{"2":{"781":1}}],["analysis",{"2":{"661":1,"757":1}}],["and",{"2":{"757":1,"826":2}}],["android和ios收集完",{"2":{"879":1}}],["android收集",{"0":{"878":1},"2":{"864":1}}],["android位于data",{"2":{"823":1}}],["android使用",{"2":{"822":1}}],["android或ios启动之后将使用",{"2":{"661":1}}],["android性能评测标准",{"0":{"620":1}}],["android参考机型",{"2":{"610":1,"625":1}}],["android与windows",{"2":{"589":1}}],["android机型的内存更为宽松",{"2":{"564":1}}],["android版本必须",{"2":{"500":1}}],["android运行达到满帧较为流畅",{"0":{"436":1}}],["android",{"0":{"569":1,"628":1},"2":{"329":1,"477":1,"484":1,"564":1,"566":1,"567":1,"584":1,"586":1,"592":1,"597":1,"601":1,"883":1,"946":1,"949":1,"967":1}}],["android会生成一份xxx",{"2":{"329":1}}],["anydata",{"2":{"519":1}}],["an",{"0":{"362":1},"1":{"363":1,"364":1},"2":{"786":1}}],["a",{"0":{"356":1,"504":1},"1":{"357":1,"358":1,"359":1,"360":1,"361":1,"362":1,"363":1,"364":1,"505":1},"2":{"346":1,"347":1,"417":1,"556":1,"786":1}}],["as",{"2":{"798":1,"800":1}}],["assumeuniformscaling",{"2":{"928":1}}],["assume",{"2":{"382":1}}],["asset相关配置",{"0":{"846":1}}],["assetreference",{"2":{"782":2}}],["asset中的needcheckupdate",{"2":{"768":1}}],["assetloadtype",{"2":{"754":1,"816":1}}],["assetloadcost",{"2":{"645":1}}],["asset支持的配置",{"0":{"753":1},"1":{"754":1,"755":1}}],["assetcontentlength超过15",{"2":{"646":1}}],["assetcontentlength",{"2":{"645":1}}],["asset配置",{"2":{"499":1,"752":1}}],["assets目录下",{"2":{"858":1}}],["assetstore",{"2":{"733":1,"734":1,"836":1}}],["assetstudio",{"0":{"732":1},"2":{"732":1}}],["assetsbundle迁移",{"0":{"790":1}}],["assetsbundle生成的文件",{"2":{"717":1}}],["assetsbundle缓存适配插件已自动支持",{"2":{"447":1}}],["assets",{"0":{"389":1,"735":1,"771":1,"774":1,"776":1},"1":{"772":1,"773":1,"774":1,"775":1,"776":1,"777":1,"778":1,"779":1,"780":1,"781":1,"782":1,"783":1,"784":1,"785":1,"786":1,"787":1,"788":1,"789":1,"790":1,"791":1,"792":1,"793":1,"794":1},"2":{"350":1,"360":1,"386":1,"387":1,"453":1,"499":1,"519":1,"525":1,"695":1,"728":1,"730":1,"752":1,"772":1,"774":1,"781":1}}],["assetimporterbak读取选中资源的importer设置并还原后",{"2":{"333":1}}],["assetimporterbak",{"2":{"333":2}}],["asset增加不常用配置入口",{"2":{"196":1}}],["assetbundleloadfromstreamasyncoperation",{"2":{"826":1}}],["assetbundleloadfromstream",{"2":{"826":1}}],["assetbundle内存分析",{"0":{"801":1},"1":{"802":1,"803":1}}],["assetbundle目前只支持异步加载",{"2":{"800":1}}],["assetbundle下载",{"0":{"798":1}}],["assetbundle打包参数建议",{"0":{"797":1}}],["assetbundle使用方式",{"2":{"799":2}}],["assetbundle使用",{"0":{"796":1},"1":{"797":1,"798":1}}],["assetbundle使用时被解压占用unity",{"2":{"581":1}}],["assetbundle无需再使用本地文件系统缓存和版本更新",{"2":{"687":1}}],["assetbundle按需加载",{"2":{"581":1}}],["assetbundle",{"0":{"795":1},"1":{"796":1,"797":1,"798":1,"799":1,"800":1,"801":1,"802":1,"803":1,"804":1},"2":{"474":1,"635":1,"685":1,"687":2,"798":4,"800":3,"804":2,"826":9,"967":1}}],["assetbundle网络异步加载",{"2":{"447":1}}],["assetbundle和addressables资源目录",{"2":{"390":1}}],["assetbundles",{"2":{"386":1,"797":1}}],["assetbundle重试失败问题",{"2":{"252":1}}],["assetbundle以减少内存使用",{"2":{"86":1}}],["assetbundle返回null",{"2":{"43":1}}],["asset",{"0":{"734":1},"2":{"64":1,"115":1,"453":1,"734":1,"786":1,"790":1,"794":1,"804":2}}],["astc8",{"2":{"669":1}}],["astc88",{"2":{"669":1}}],["astc44",{"2":{"669":1}}],["astc压缩",{"2":{"669":1}}],["astc格式资源",{"2":{"349":1}}],["astc格式配置说明",{"0":{"347":1}}],["astc能支持最近3",{"2":{"341":1}}],["astc",{"2":{"340":1,"341":1,"342":1,"346":1,"347":3,"349":1,"359":3,"760":9}}],["asyncoperationstatus",{"2":{"785":1,"786":1,"789":1}}],["asyncoperationhandle",{"2":{"785":2,"786":1,"787":1}}],["async",{"2":{"338":1,"781":1,"787":1}}],["api示例",{"0":{"860":1}}],["api可以直接看wx",{"2":{"858":1}}],["api进行渲染",{"2":{"587":1}}],["api执行环境说明",{"0":{"525":1}}],["api描述",{"2":{"524":1}}],["api",{"0":{"526":1,"540":1},"1":{"527":1,"528":1,"529":1,"530":1,"531":1,"532":1,"533":1,"534":1,"535":1,"536":1,"537":1,"538":1,"539":1,"541":1,"542":1,"543":1,"544":1,"545":1,"546":1,"547":1,"548":1},"2":{"338":2,"365":1,"380":13,"479":2,"550":1,"558":1,"560":1,"565":1,"804":1,"828":2,"832":1,"834":1,"838":1,"848":1,"849":2,"850":1,"925":1}}],["api协议更新至3",{"2":{"40":1}}],["app包",{"2":{"670":1}}],["appendhashtocatalog=false",{"2":{"655":1}}],["appendhashtocatalog",{"2":{"654":1}}],["appendhashtoassetbundlename",{"2":{"458":1,"465":1,"797":2}}],["app的运行性能差异",{"0":{"587":1}}],["appid信息展示",{"2":{"921":1}}],["appid",{"2":{"498":1,"754":1}}],["application",{"2":{"439":1,"797":1}}],["applications",{"2":{"364":2,"661":2,"757":2}}],["app",{"0":{"407":1,"687":1,"688":1,"689":1},"2":{"337":1,"364":2,"384":1,"474":1,"482":1,"502":2,"661":1,"674":1,"684":1,"685":1,"687":1}}],["appbrand1",{"2":{"567":1}}],["appbrand",{"2":{"329":1}}],["authprivatemessage",{"2":{"863":1}}],["authorize",{"2":{"863":1}}],["autoconnec",{"2":{"757":1}}],["autoconnect",{"2":{"754":1}}],["autoconnection",{"2":{"661":1}}],["autoprofile",{"2":{"754":1}}],["autostreaming等功能",{"2":{"760":1}}],["autostreaming",{"0":{"501":1},"1":{"502":1,"503":1,"504":1,"505":1},"2":{"501":1,"505":1,"967":1}}],["autostreaming自动配置与上传",{"2":{"72":1}}],["audio音频是否需要使用小游戏音频适配",{"0":{"440":1}}],["audio",{"2":{"386":1}}],["audio能力适配",{"2":{"244":1,"246":1}}],["audio压缩纹理",{"2":{"125":1}}],["tmp",{"2":{"856":1}}],["tmptext",{"2":{"856":1}}],["t",{"2":{"828":2}}],["tutorial",{"2":{"804":1}}],["tuanjie",{"2":{"692":1}}],["tips",{"2":{"650":1,"682":1}}],["timestep控制计算频率",{"2":{"638":1}}],["timestep降低计算频率",{"2":{"598":1}}],["timestep与",{"2":{"598":1}}],["timeline",{"0":{"576":1}}],["tier2",{"2":{"579":1}}],["title",{"2":{"534":2,"545":1,"561":1}}],["typetree",{"2":{"826":4}}],["typeof",{"2":{"556":1}}],["type",{"2":{"554":1,"556":4,"560":1,"561":1,"682":7,"807":1}}],["that",{"2":{"786":1}}],["the",{"2":{"545":1,"565":1,"785":1,"786":4,"787":3,"788":1,"838":1}}],["thrown",{"2":{"401":1,"402":3}}],["threw",{"0":{"362":1},"1":{"363":1,"364":1}}],["task",{"2":{"787":2}}],["tab",{"2":{"467":1}}],["target=",{"2":{"364":1}}],["targetframerate限帧",{"2":{"600":1}}],["targetframerate默认使用timer控制帧率",{"2":{"439":1}}],["targetframerate无法限帧率",{"0":{"439":1}}],["targetframerate",{"2":{"37":1}}],["tw",{"2":{"464":1}}],["ttf",{"2":{"458":1,"460":1,"856":1}}],["ttc",{"2":{"46":1,"54":1}}],["tcptest",{"2":{"834":1}}],["tcpsocketconnectoption",{"2":{"834":1}}],["tcpsocketonmessagelistenerresult>",{"2":{"834":1}}],["tcpsocket",{"0":{"834":1},"2":{"834":3,"838":1}}],["tcp",{"0":{"833":1},"1":{"834":1,"835":1,"836":1,"837":1},"2":{"833":1,"834":11,"837":2}}],["tcp使用wx",{"2":{"447":1}}],["tcb",{"2":{"443":2}}],["too",{"0":{"891":1},"2":{"864":1}}],["tool",{"0":{"744":1},"2":{"733":1}}],["tools",{"2":{"467":2,"661":2,"733":1,"734":1,"744":1,"757":1}}],["tools里面",{"2":{"467":1}}],["totempfilepathsync",{"2":{"863":1}}],["totaljanktime",{"2":{"657":1,"658":1}}],["totalheapmemory",{"2":{"570":1}}],["total",{"2":{"383":2}}],["totallaunchtime",{"2":{"375":1,"377":1,"814":1}}],["top",{"2":{"858":2,"932":2}}],["toarray",{"2":{"850":1}}],["tostring",{"2":{"798":1}}],["tojson",{"2":{"556":1,"560":1,"561":1,"834":2,"838":1}}],["tolua等",{"2":{"447":1}}],["to",{"0":{"422":1},"2":{"739":1,"787":1,"788":1,"804":2,"828":1}}],["touchend",{"0":{"442":1}}],["touchend去json性能优化",{"2":{"15":1}}],["touch事件丢失或错误",{"0":{"427":1}}],["touch能力适配",{"2":{"246":1}}],["touch",{"2":{"100":1}}],["touchmove触摸性能优化",{"2":{"25":1}}],["touchstart",{"2":{"15":1}}],["txt上传至",{"2":{"498":1}}],["txt",{"2":{"350":1,"357":1,"386":1,"387":1,"388":1,"611":1,"625":1,"717":1,"725":1,"744":1}}],["tree",{"2":{"772":1}}],["true",{"2":{"375":1,"397":1,"410":1,"460":1,"463":2,"491":1,"519":1,"523":1,"527":2,"543":1,"560":2,"561":2,"641":2,"781":1,"834":2,"838":1,"940":1}}],["true时将强制生成",{"2":{"368":1}}],["true时仅生成astc格式纹理",{"2":{"368":1}}],["try",{"2":{"338":1,"402":3,"519":1,"556":1}}],["transition",{"2":{"382":1}}],["transformworldtoobjectnormal",{"2":{"382":1}}],["transformobjecttoworldnormal",{"2":{"382":1}}],["transform",{"2":{"105":1,"560":1,"692":1,"772":1}}],["trace",{"2":{"329":1,"828":1}}],["technology",{"2":{"804":1}}],["technologies",{"2":{"468":1,"794":1}}],["testudpsocket",{"2":{"838":3}}],["testtcpsocket",{"2":{"834":3}}],["testvalue2",{"2":{"681":1}}],["testvalue1",{"2":{"681":1}}],["testkey2",{"2":{"681":2}}],["testkey1",{"2":{"681":2}}],["test",{"2":{"382":1,"834":1,"838":1}}],["textasset>",{"2":{"789":2}}],["textasset",{"2":{"789":1}}],["text",{"2":{"491":1,"789":1,"832":2,"834":1,"838":1,"850":1,"856":1}}],["textduration",{"2":{"375":1,"377":1,"814":1}}],["textconfig",{"2":{"375":1,"377":1}}],["texturehandle",{"2":{"785":4}}],["texture2d>",{"2":{"785":3,"786":2,"787":2}}],["texture2d",{"2":{"669":1,"785":1,"786":1}}],["textureshashlength",{"2":{"453":1,"755":1}}],["texturespath",{"2":{"453":1,"755":1}}],["textures",{"2":{"386":1,"456":1,"461":8,"847":1,"851":1}}],["textureeditor",{"2":{"360":1}}],["textureeditor插件目录不参与编译",{"2":{"84":1}}],["texture",{"0":{"333":1},"2":{"333":1,"386":1,"552":1,"554":1,"560":1,"562":1,"785":1,"786":2}}],["tencentcloudapi",{"2":{"443":3}}],["tencent",{"2":{"329":1,"432":1,"443":1,"465":1,"823":1}}],["96",{"2":{"956":1}}],["960",{"2":{"956":1}}],["90",{"2":{"945":1}}],["90ms",{"2":{"468":1}}],["9866",{"2":{"744":1}}],["915",{"2":{"464":1}}],["92",{"2":{"383":1}}],["94s",{"2":{"468":1}}],["94",{"2":{"136":1}}],["954ms",{"2":{"468":1}}],["9551162e",{"2":{"464":2}}],["95",{"2":{"133":1}}],["97cd953f8494c3375312e75a29c34fc2",{"2":{"847":1,"851":2}}],["97",{"2":{"131":1}}],["9",{"0":{"36":1,"96":1,"124":1,"135":1,"138":1,"141":1,"143":1,"146":1,"415":1,"429":1,"442":1,"604":1,"908":1,"953":1},"1":{"37":1,"38":1,"97":1,"98":1,"125":1,"126":1,"136":1,"137":1,"139":1,"140":1,"142":1,"144":1,"145":1,"147":1,"909":1},"2":{"383":3,"864":1,"934":1,"956":2}}],["px",{"2":{"956":4}}],["physics",{"2":{"939":1}}],["pdf",{"2":{"857":36}}],["psygames",{"2":{"836":1}}],["ptr",{"2":{"828":3}}],["pbr光照",{"2":{"665":1,"667":1}}],["pbr渲染",{"2":{"665":1}}],["pbr需要在线性颜色空间进行",{"2":{"665":1}}],["p",{"2":{"560":3,"794":1}}],["pivot",{"2":{"560":1}}],["pixel",{"2":{"560":2,"670":3,"673":1}}],["pip",{"2":{"496":1}}],["pipeline",{"2":{"380":1}}],["pipelines",{"2":{"379":4,"384":1}}],["pipelins",{"2":{"380":1}}],["port是否可达",{"2":{"661":1}}],["port",{"2":{"661":3,"757":4,"834":1,"838":2}}],["postprocessing效果提升品质",{"2":{"925":1}}],["post",{"2":{"832":3}}],["postmessage",{"0":{"556":1},"2":{"554":1,"556":1,"560":1,"561":1,"562":1}}],["posix接口",{"2":{"565":1}}],["position",{"2":{"523":1,"528":1,"560":1}}],["pointereventdata",{"2":{"491":2}}],["pointer",{"2":{"218":1}}],["purets",{"2":{"447":1}}],["public",{"2":{"430":3,"491":7,"556":2,"782":6,"786":1,"787":1,"797":1,"834":2,"838":2,"850":2}}],["publish",{"2":{"402":1,"403":1}}],["print",{"2":{"828":1}}],["private",{"2":{"491":3,"782":3,"785":1}}],["pragma",{"2":{"668":3}}],["pragma指令删除",{"2":{"384":1}}],["prefab本身以及依赖的所有资源需要在场景加载前完成",{"2":{"782":1}}],["preloadmanager",{"2":{"852":1}}],["preloadlistdata>",{"2":{"850":1}}],["preloadlistdata",{"2":{"850":4}}],["preloadlist",{"2":{"848":1,"849":2,"850":1}}],["preloadlistlength=0",{"2":{"649":1}}],["preloadlistlength",{"2":{"648":1,"649":1}}],["preloaddatalist",{"2":{"847":1,"849":3}}],["preloadconcurrent",{"2":{"843":1}}],["preloadfiles",{"2":{"754":1,"846":1}}],["preparegame",{"2":{"682":1}}],["prebuildprocessing",{"2":{"430":1}}],["props的大小",{"2":{"928":1}}],["provider",{"2":{"807":1}}],["profier内存分析",{"2":{"760":1}}],["profile版在高性能模式下卡与内存不足的问题",{"2":{"917":1}}],["profile窗口",{"2":{"661":1,"757":1}}],["profile分析",{"0":{"469":1}}],["profile文件的使用可以参考google的开发文档",{"2":{"467":1}}],["profile之后",{"2":{"467":1}}],["profile能力",{"2":{"467":1}}],["profiler内存分析能力",{"2":{"762":1}}],["profilerwindow",{"2":{"661":1,"757":1}}],["profiler窗口使用说明",{"2":{"661":1,"757":1}}],["profiler发现问题",{"2":{"638":1}}],["profiler在小游戏真机环境profie计算瓶颈",{"2":{"638":1}}],["profiler的运行原理是在unity",{"2":{"593":1}}],["profiler仅能看到",{"2":{"584":1}}],["profiler看到内存才200mb+",{"2":{"584":1}}],["profiler",{"0":{"572":1,"592":1,"593":1},"2":{"484":2,"572":1,"592":1,"597":1,"661":4,"754":1,"757":4,"967":2}}],["profiler默认隐藏",{"2":{"329":1}}],["profiler性能调优分析每一帧的耗时部分",{"2":{"727":1}}],["profiler性能调优",{"0":{"329":1,"661":1,"757":1},"2":{"638":2,"658":2}}],["profile",{"2":{"329":2,"467":3,"469":2,"868":1,"956":1}}],["profilestats性能面板增加frametime",{"2":{"80":1}}],["profilingfuncs",{"2":{"754":1}}],["profilingmem等模式",{"2":{"584":1}}],["profilingmemory功能需要额外的内存记录堆栈与相关统计",{"2":{"829":1}}],["profilingmemory在真机上更容易出现内存崩溃",{"0":{"829":1}}],["profilingmemory可以分析unityheap底层分配器的分配细节",{"2":{"571":1}}],["profilingmemory",{"0":{"571":1},"2":{"566":1,"570":1,"823":1}}],["profiling",{"2":{"280":1,"329":1,"584":1,"754":1,"823":2}}],["pro",{"2":{"734":1}}],["protocol",{"2":{"654":1}}],["processes",{"2":{"568":1}}],["promax占用约80mb",{"2":{"565":1}}],["progressstyle",{"2":{"523":1,"528":1}}],["probesocclusion",{"2":{"382":1}}],["probe",{"2":{"381":2}}],["product",{"2":{"338":2}}],["projectname",{"2":{"498":1,"717":1,"754":1}}],["project",{"2":{"338":1,"379":2,"380":1}}],["panic",{"2":{"828":1}}],["paniniprojection",{"2":{"381":1,"382":1}}],["patch编译后未生效",{"2":{"903":1}}],["patch",{"2":{"807":1}}],["path1",{"2":{"847":1}}],["path为对应unity版本的安装目录",{"2":{"757":1}}],["path",{"2":{"360":1,"363":1,"460":2,"461":1,"661":2,"757":2}}],["part",{"2":{"804":2}}],["parser",{"2":{"826":2}}],["parse",{"2":{"556":1}}],["pass",{"2":{"382":1,"665":1}}],["package下",{"2":{"817":1}}],["package这个分包下",{"2":{"815":1}}],["packagemanager",{"2":{"694":1,"695":1}}],["packagecache",{"2":{"379":1}}],["packages",{"2":{"379":9,"733":1,"734":1,"735":1}}],["package",{"0":{"691":1},"1":{"692":1},"2":{"379":10,"384":2,"691":1,"692":2,"760":1}}],["padding",{"2":{"375":1,"377":1}}],["png",{"2":{"359":2,"375":1,"377":1}}],["percentcomplete进行进度展示",{"2":{"781":1}}],["percentage",{"2":{"523":1}}],["permission",{"0":{"417":1}}],["permissions",{"2":{"338":1}}],["perfare",{"2":{"732":1}}],["perfdog记录性能数据并上传",{"2":{"615":1,"626":1}}],["perfdog",{"0":{"569":1},"2":{"566":1}}],["perfog",{"2":{"383":2}}],["performance",{"2":{"105":1,"380":17,"381":1,"382":2,"384":1,"587":1,"660":1}}],["perf",{"2":{"105":1}}],["py",{"2":{"329":1,"932":1}}],["python3",{"2":{"496":2}}],["python2",{"2":{"430":3}}],["python",{"2":{"329":1,"430":5}}],["platform",{"2":{"601":1}}],["playbackengines",{"2":{"661":2,"757":3}}],["playpath",{"2":{"519":2,"528":1}}],["play",{"2":{"519":3}}],["playerloadfirstscene",{"2":{"468":1}}],["playerloadfirstscene函数调用",{"2":{"468":1}}],["playerinitenginegraphics",{"2":{"468":1}}],["playerinitenginenographics",{"2":{"468":1}}],["playerinitenginenographics和playerinitenginegraphics等函数调用",{"2":{"468":1}}],["playerpref或用户数据存储失效",{"0":{"441":1}}],["playersettings导出选项中使用",{"0":{"411":1}}],["playersettings默认去除",{"2":{"224":1}}],["player页选择",{"2":{"380":1}}],["player项",{"2":{"380":1}}],["player",{"2":{"35":1,"402":1,"403":1}}],["plugins",{"2":{"807":1}}],["plugins目录增加link",{"2":{"75":1}}],["plugin",{"2":{"464":3}}],["pc端dxt",{"2":{"760":1}}],["pc端和开发者工具支持unity",{"2":{"28":1}}],["pc使用v8作为wasm虚拟机内核",{"2":{"589":1}}],["pc",{"0":{"575":1,"576":1},"2":{"359":2,"378":1,"477":1,"586":1}}],["pc小游戏兼容",{"2":{"237":1}}],["pc小游戏首包资源通过分包加载时读取失败",{"2":{"191":1}}],["pc小游戏下载路径处理",{"2":{"144":1}}],["pc微信",{"2":{"341":1}}],["pc微信支持启动封面",{"2":{"157":1}}],["pc微信因loadsubpackage无回调的容错处理",{"2":{"57":1}}],["pc增加是否支持brotli压缩条件判断",{"2":{"56":1}}],["pc下载资源出现",{"2":{"49":1}}],["mysite",{"2":{"832":2}}],["myconfig",{"2":{"789":2}}],["mytexture",{"2":{"785":1,"786":1,"787":1}}],["multi",{"2":{"668":2}}],["ms",{"2":{"645":2,"651":4,"657":4}}],["msgdata",{"2":{"556":3,"560":3,"561":4}}],["msg",{"2":{"368":2,"556":2,"560":2,"561":2}}],["msgseccheck",{"2":{"338":9}}],["m",{"2":{"496":1}}],["mp4",{"2":{"956":2}}],["mp管理后台提供了漏斗图的数据可视化看板",{"2":{"521":1}}],["mp平台",{"2":{"510":1,"511":1,"512":1}}],["mp",{"2":{"443":1,"476":2,"488":1,"840":1}}],["moved",{"2":{"789":1}}],["mozilla",{"2":{"739":1}}],["monitorduration",{"2":{"641":1}}],["monitorconfig",{"2":{"641":1}}],["monitor",{"2":{"568":1}}],["mono内存",{"2":{"577":1}}],["monoheapreserved",{"2":{"570":1}}],["monoheap",{"2":{"570":2}}],["monobehaviour",{"2":{"491":1,"782":3,"834":1,"838":1}}],["monobehaviour脚本的首帧start",{"2":{"466":1,"727":1}}],["monobleedingedge",{"2":{"364":2}}],["mono",{"2":{"362":1,"363":5,"364":1}}],["more",{"2":{"467":1}}],["motionvector",{"2":{"382":1}}],["motion",{"2":{"381":1}}],["mobile宏",{"2":{"380":1}}],["mobile",{"2":{"380":6}}],["mode为",{"2":{"560":2}}],["mode宏来控制",{"2":{"384":1}}],["mode宏",{"2":{"380":1}}],["mode来定制代码",{"2":{"380":1}}],["mode",{"2":{"380":15,"381":1,"382":2}}],["metadatacache",{"2":{"826":2}}],["metric",{"2":{"681":1}}],["memprofiler",{"2":{"823":1}}],["mem更精确分析内存",{"2":{"584":1}}],["memoryprofiler分析",{"2":{"584":1}}],["memory",{"0":{"575":1},"2":{"565":2,"804":4,"823":1,"826":2}}],["memorysize",{"2":{"324":1}}],["memory查看dynamicmemory",{"2":{"120":1}}],["message",{"2":{"338":2,"834":1,"838":2}}],["mismatch问题",{"2":{"917":1}}],["mixrealtimeandbakedshadows",{"2":{"382":1}}],["minor",{"2":{"807":1}}],["min",{"2":{"350":1,"476":1}}],["miniprogram",{"2":{"105":1,"692":1,"772":1}}],["minigame为小游戏项目",{"2":{"749":1}}],["minigame文件夹而不是导出的根目录",{"2":{"408":1}}],["minigame目录为转化后的小游戏代码",{"2":{"386":1,"498":1}}],["minigamedevop08",{"2":{"382":1,"927":1,"950":1}}],["minigameconfig",{"0":{"753":1,"846":1},"1":{"754":1,"755":1},"2":{"115":1,"196":1,"453":1,"499":1,"752":1}}],["minigame",{"2":{"48":1,"105":2,"338":1,"386":1,"441":2,"463":1,"476":1,"500":1,"525":4,"554":1,"557":1,"561":3,"611":1,"625":1,"692":1,"744":1,"749":1,"772":1,"834":1,"838":1,"966":1}}],["mipmap",{"2":{"334":1,"826":2}}],["micromsg",{"2":{"329":1,"465":1,"823":1}}],["mmo游戏进入创角时",{"2":{"681":1}}],["mmo",{"2":{"580":1,"618":1,"965":1}}],["mmgame",{"2":{"561":1}}],["mm",{"2":{"329":1,"465":1,"823":1}}],["md5",{"2":{"611":2,"625":2}}],["md",{"2":{"105":1}}],["mat4x4",{"2":{"928":1}}],["materialtype",{"2":{"680":1}}],["materialtype=1",{"2":{"680":1}}],["materialconfig",{"2":{"375":1,"377":1}}],["mafanwei",{"2":{"832":1}}],["malloc",{"2":{"825":1}}],["major",{"2":{"807":1}}],["mask",{"2":{"668":3}}],["map的",{"2":{"667":1}}],["manual",{"2":{"661":1,"735":1,"739":1,"757":1}}],["managed",{"0":{"431":1},"2":{"726":1}}],["managerconfig",{"2":{"817":1,"847":1,"849":3}}],["manager",{"2":{"145":2,"329":1,"379":5,"384":1,"469":1,"692":1,"811":1,"843":1,"849":5}}],["maxloadingcount",{"2":{"654":1}}],["maxlength",{"2":{"491":1}}],["maxfetchpendingtime",{"2":{"651":1,"652":1}}],["maximum",{"2":{"598":1}}],["maximun",{"2":{"500":1}}],["max",{"2":{"560":1,"577":2}}],["maxstorage",{"2":{"453":1,"461":1,"754":1}}],["maxsize大于512",{"2":{"333":1}}],["mac上授权",{"2":{"498":1}}],["mac",{"0":{"430":1},"2":{"329":1,"566":1,"661":1,"757":1}}],["macos脚本授权",{"2":{"498":1}}],["macos系统执行报错",{"0":{"362":1},"1":{"363":1,"364":1}}],["macos",{"2":{"33":1}}],["markdownviewer可能出现guiskin引用丢失",{"2":{"269":1}}],["mainlightshadowparams",{"2":{"382":1}}],["mainlightshadowcasterpass",{"2":{"382":1}}],["mainlightlayermask",{"2":{"382":1}}],["mainlightocclusionprobes",{"2":{"382":1}}],["main",{"2":{"105":1,"338":1,"772":1,"956":1}}],["m1系列芯片执行异常问题",{"2":{"33":1}}],["brt显示了编译时包括的每个资源占用的存储空间以及未使用资源情况",{"2":{"733":1}}],["browser",{"2":{"424":1,"823":1}}],["brotli或gzip",{"2":{"779":1}}],["brotli",{"0":{"411":1},"2":{"496":1,"866":1}}],["br",{"0":{"947":1},"2":{"411":1,"611":1,"625":1,"716":1,"934":1,"947":1}}],["br压缩后",{"2":{"612":1,"627":1}}],["br压缩",{"2":{"57":1,"725":1}}],["byte",{"2":{"836":1}}],["bytes",{"2":{"648":1,"654":2,"836":1}}],["by",{"2":{"384":1}}],["bleed",{"2":{"382":1}}],["blog",{"2":{"794":1,"804":2,"832":1}}],["bloom",{"2":{"382":1}}],["block",{"2":{"347":3}}],["blob",{"2":{"105":1,"836":1}}],["bounds",{"2":{"402":1}}],["boxprojection",{"2":{"382":1}}],["border",{"2":{"377":1}}],["bottom",{"2":{"375":3,"377":2}}],["boolean",{"2":{"645":2,"648":2,"651":1,"654":12,"682":4}}],["bool",{"0":{"543":1,"545":1,"546":1},"2":{"366":3,"368":3,"491":1,"834":1,"838":1}}],["bgimagesrc",{"2":{"374":1,"754":1,"813":1}}],["big",{"0":{"891":1},"2":{"864":1}}],["bind",{"2":{"838":1}}],["binarytype",{"2":{"757":1}}],["bin",{"2":{"350":1,"363":1,"386":1,"387":1,"388":1,"430":1,"498":1,"611":1,"625":1,"661":1,"717":1}}],["bits",{"2":{"346":3}}],["bit",{"2":{"329":1,"346":2,"861":1}}],["bc7",{"2":{"346":1}}],["bug",{"2":{"949":2}}],["but",{"2":{"786":1}}],["built资源是以文本形式存在",{"2":{"779":1}}],["builtin",{"2":{"388":1,"668":1,"725":1}}],["buildtarget",{"2":{"797":1}}],["buildtools",{"2":{"661":2,"757":3}}],["buildassetbundles",{"2":{"797":1}}],["buildassetbundleoptions",{"2":{"465":1,"797":6}}],["buildpipeline",{"2":{"797":1}}],["buildsetting",{"2":{"757":1}}],["buildsettings中所有active的场景",{"2":{"725":1}}],["buildsettings",{"2":{"402":1,"403":1}}],["build目录下的code文件",{"2":{"726":1}}],["build目录下的data文件",{"2":{"725":1}}],["buildreporttool",{"0":{"733":1}}],["buildreport",{"2":{"430":1}}],["build会在异常产生时直接附带完整的函数名",{"2":{"404":1}}],["build报错",{"2":{"261":1}}],["build",{"0":{"404":1},"2":{"95":1,"386":1,"400":1,"401":1,"430":2,"577":1,"661":1,"733":1,"751":1,"754":2,"757":2,"797":1,"823":1,"966":1}}],["build的导出支持",{"2":{"32":1}}],["bundle还是assetbundle类型",{"2":{"800":1}}],["bundlereq",{"2":{"800":5}}],["bundle带上hash",{"2":{"797":1}}],["bundle名中hash长度",{"2":{"748":1,"754":1}}],["bundle使用缓存",{"2":{"464":1}}],["bundle成功",{"2":{"464":1}}],["bundle中hash的长度",{"2":{"461":1}}],["bundle中hash占多少长度",{"2":{"453":1}}],["bundleexcludeextensions",{"2":{"453":1,"455":1,"754":1}}],["bundlehashlength",{"2":{"453":2,"461":2,"754":1}}],["bundles",{"2":{"453":1,"804":2}}],["bundlepathidentifier",{"2":{"453":1,"455":1,"461":1,"755":1}}],["bundle的配置文件",{"2":{"392":1}}],["bundledir",{"2":{"366":1,"368":1,"369":1,"371":1}}],["bundle",{"0":{"345":1},"1":{"346":1,"347":1},"2":{"340":3,"342":1,"345":2,"464":1,"485":2,"684":1,"781":1,"800":2}}],["buffer",{"2":{"329":1,"663":1,"836":1,"861":1}}],["before",{"2":{"787":1,"838":1}}],["benchmark",{"2":{"468":1,"939":2}}],["benchmark项目链接",{"2":{"468":1}}],["benchmark项目在不同设备上的callmain耗时分析",{"2":{"468":1}}],["beyond",{"2":{"382":1}}],["be",{"2":{"264":1,"787":1}}],["beta期间请联系研发助手设计剧情期间咨询异步干预能力",{"2":{"520":1}}],["beta",{"0":{"339":1,"351":1,"513":1},"1":{"340":1,"341":1,"342":1,"343":1,"344":1,"345":1,"346":1,"347":1,"348":1,"349":1,"350":1,"351":1,"352":1,"353":1,"354":1,"355":1,"356":1,"357":1,"358":1,"359":1,"360":1,"361":1,"362":1,"363":1,"364":1,"365":1,"366":1,"367":1,"368":1,"369":1,"370":1,"371":1,"514":1,"515":1,"516":1,"517":1,"518":1,"519":1,"520":1,"521":1,"522":1,"523":1,"524":1,"525":1,"526":1,"527":1,"528":1,"529":1,"530":1,"531":1,"532":1,"533":1,"534":1,"535":1,"536":1,"537":1,"538":1,"539":1,"540":1,"541":1,"542":1,"543":1,"544":1,"545":1,"546":1,"547":1,"548":1},"2":{"18":1,"20":1,"97":1}}],["bannerad",{"2":{"858":8}}],["batchsize",{"2":{"928":1}}],["batch以减少dc",{"2":{"604":1}}],["batcher提高渲染性能",{"2":{"925":1}}],["batcher的收益情况",{"2":{"671":1}}],["batcher需要两个先决条件",{"2":{"605":1}}],["batcher需要webgl2",{"2":{"587":1}}],["batcher",{"0":{"605":1},"2":{"382":1,"671":2}}],["bash",{"2":{"386":2,"387":1,"749":1,"802":1}}],["base",{"2":{"108":1,"441":2,"500":1}}],["bakedlitinput",{"2":{"382":1}}],["barwidth",{"2":{"814":1}}],["bar",{"2":{"376":1,"813":1,"814":1}}],["barconfig",{"2":{"375":1,"377":1}}],["backend",{"2":{"338":1}}],["backgroundvideo",{"2":{"375":1,"814":1}}],["backgroundimage需要注意图片宽高不可超过2048",{"2":{"814":1}}],["backgroundimage",{"2":{"375":1,"377":1,"814":1}}],["backgroundcolor",{"2":{"375":1,"377":1,"523":1,"528":1}}],["background",{"2":{"224":1,"377":1}}],["drive",{"2":{"794":1}}],["draw",{"2":{"671":5}}],["drawcall",{"0":{"671":1}}],["drawelements",{"2":{"550":1}}],["drawwireoverlay",{"2":{"381":1,"382":1}}],["drawgizmos",{"2":{"381":1,"382":1}}],["drawing",{"0":{"362":1},"1":{"363":1,"364":1}}],["d4fcv0h2cqbep1zo6ma",{"2":{"775":1,"794":1}}],["dst",{"2":{"754":1,"797":4}}],["dump",{"2":{"823":1}}],["dump功能",{"2":{"105":1}}],["duplicate",{"2":{"781":1}}],["duration",{"2":{"654":2,"655":1}}],["dlrealloc",{"2":{"828":1}}],["dlfree",{"2":{"828":1}}],["dlmalloc",{"2":{"828":4}}],["dldir1",{"2":{"443":1}}],["dll",{"0":{"422":1,"430":1}}],["dmg",{"2":{"430":1}}],["dimension",{"2":{"681":1}}],["dictionary",{"2":{"561":1,"681":2}}],["dispose",{"2":{"798":2}}],["display",{"2":{"382":1}}],["disablewritetypetree",{"2":{"797":1}}],["disk",{"2":{"379":2}}],["dithering",{"2":{"382":1}}],["directbrdfspecular",{"2":{"382":1}}],["directional",{"2":{"382":1}}],["directx",{"2":{"380":1}}],["directory",{"2":{"49":1,"797":2}}],["d",{"2":{"379":3,"775":1,"794":2}}],["dylib",{"2":{"362":1,"364":3}}],["dynamicmemory",{"2":{"570":2,"822":1}}],["dynamic",{"2":{"338":1,"382":1}}],["dxt等纹理格式将导致巨大的内存开销与运行时解压消耗",{"2":{"579":1}}],["dxt1|bc1",{"2":{"346":2}}],["dxt5|bc3",{"2":{"346":2}}],["dxt",{"2":{"340":1,"341":1,"342":1,"359":4,"760":1}}],["datarate",{"2":{"956":1}}],["datafilesubprefix",{"2":{"755":1,"810":1}}],["data",{"2":{"329":1,"338":1,"350":1,"386":2,"387":1,"388":1,"449":1,"461":3,"465":1,"498":1,"554":2,"556":7,"557":1,"559":1,"560":1,"561":1,"611":1,"625":1,"661":2,"682":1,"716":1,"717":2,"757":2,"815":1,"816":1,"817":2,"836":1,"849":2}}],["deux",{"2":{"804":2}}],["dependencies",{"2":{"781":1}}],["depthoffield",{"2":{"382":1}}],["deletestreamingassets",{"2":{"754":2}}],["demo",{"0":{"860":1},"2":{"434":1,"438":1,"491":1,"503":1,"772":1,"836":1,"939":1}}],["destroy",{"2":{"939":1}}],["destination",{"0":{"432":1}}],["designheight",{"2":{"375":1,"377":1}}],["designwidth",{"2":{"375":1,"377":1}}],["design",{"2":{"105":1}}],["deny字样错误",{"0":{"417":1}}],["detail",{"2":{"382":1}}],["decal",{"2":{"381":1,"382":1}}],["deferred",{"2":{"381":1,"382":1}}],["defined",{"2":{"380":3}}],["define",{"2":{"380":5}}],["defaultvalue",{"2":{"491":1}}],["defaultreleasesize",{"2":{"453":1,"461":1,"755":1}}],["default",{"2":{"375":1,"382":1,"519":3,"525":1,"725":1,"828":1}}],["debuginfo",{"2":{"606":3}}],["debugsymbols",{"2":{"403":1}}],["debug代码",{"2":{"381":1}}],["debugdisplaysettingsui",{"2":{"381":1,"382":1}}],["debughandler",{"2":{"381":1,"382":1}}],["debug",{"0":{"403":1},"2":{"366":1,"368":3,"381":1,"382":1,"401":1,"402":6,"403":1,"419":2,"491":8,"493":1,"606":1,"681":3,"781":1,"798":2,"800":1,"832":4,"834":5,"838":4,"850":1,"858":1}}],["device",{"2":{"673":1}}],["devicepixelratio",{"2":{"554":2,"601":1}}],["devtools",{"2":{"467":1}}],["dev",{"2":{"105":1,"252":1,"259":1,"261":1,"338":1,"441":2,"500":1,"561":1,"834":1,"838":1}}],["developbuild",{"2":{"754":1}}],["developer",{"2":{"739":1}}],["developers",{"2":{"105":1,"338":1,"441":2,"443":1,"467":1,"500":1,"561":1,"739":1,"834":1,"838":1}}],["develop",{"2":{"443":1}}],["development模式会对性能有一定影响",{"2":{"468":1}}],["development模式下",{"2":{"53":1}}],["development",{"0":{"404":1},"2":{"32":1,"401":1,"404":1,"661":1,"754":1,"757":1,"823":1}}],["dev版本不处理symbols数据",{"2":{"78":1}}],["download合法域名",{"2":{"840":1}}],["downloadhandlerwxassetbundle",{"2":{"800":2}}],["downloadhandlerassetbundle",{"2":{"798":3,"800":1}}],["downloadhandler",{"2":{"798":2,"800":1,"832":2,"850":1}}],["downloadingtext",{"2":{"375":1,"377":1,"814":1}}],["downloading",{"2":{"49":1}}],["done",{"2":{"786":1}}],["double",{"0":{"542":1}}],["documentation",{"2":{"804":1}}],["document",{"2":{"775":1,"794":1}}],["doc",{"2":{"443":1}}],["docs",{"2":{"375":2,"377":2,"503":1,"661":1,"735":1,"739":2,"757":1,"775":1,"794":1,"804":1}}],["doexport方法导出小游戏",{"2":{"499":1,"752":1}}],["doexport",{"2":{"419":2,"499":1,"752":1}}],["doexport增加返回值方便第三方工具集成",{"2":{"81":1}}],["dpr选项",{"2":{"12":1}}],["its",{"2":{"786":1}}],["ienumerator",{"2":{"781":1,"782":1,"786":1,"832":2,"850":1}}],["iwrongframe",{"2":{"657":1}}],["ibaserequestinfo",{"2":{"654":2}}],["implemented",{"2":{"949":1}}],["impletemented",{"2":{"500":1}}],["import包失败错误",{"2":{"907":1}}],["impport",{"0":{"891":1},"2":{"864":1}}],["image1",{"2":{"802":1}}],["imageurl",{"2":{"561":1}}],["images",{"2":{"375":1,"377":2}}],["image",{"2":{"374":1,"375":1,"376":1,"561":1,"813":1,"814":1}}],["il2cpp",{"2":{"826":2}}],["il2cppmetadata",{"2":{"725":1}}],["il2cppcore",{"0":{"430":2}}],["il2cpp默认选项更改为size减少代码包体",{"2":{"142":1}}],["identifier",{"2":{"460":2}}],["identifier始终返回正整数",{"2":{"100":1}}],["id",{"2":{"402":1,"744":2}}],["ip",{"2":{"661":1,"757":2,"830":1,"838":1}}],["ipointerexithandler",{"2":{"491":1}}],["ipointerclickhandler",{"2":{"491":1}}],["ipreprocessbuildwithreport",{"2":{"430":1}}],["iphone7",{"2":{"610":1,"625":1}}],["iphone11",{"2":{"610":1,"625":1}}],["iphone11等ram",{"2":{"564":1}}],["iphone13",{"2":{"610":1,"625":1}}],["iphonex",{"2":{"564":1,"942":1}}],["iphone",{"2":{"383":2,"560":1}}],["ip链路",{"2":{"361":1}}],["icon",{"2":{"534":2,"545":1}}],["icon图片",{"2":{"375":1}}],["iconimage",{"2":{"375":1,"377":1}}],["iconconfig",{"2":{"375":1}}],["if语句比较短小",{"2":{"668":1}}],["ifndef",{"2":{"380":2}}],["if",{"2":{"338":1,"363":1,"368":1,"380":4,"430":1,"460":2,"491":4,"519":1,"534":1,"556":2,"561":1,"601":1,"668":3,"682":6,"757":1,"785":1,"786":3,"789":2,"797":1,"798":2,"800":1,"828":2,"832":2,"836":1,"849":2,"850":1}}],["istrusted",{"2":{"934":1}}],["isnetworkerror",{"2":{"832":2}}],["isnullorempty",{"2":{"561":1}}],["isolatedcontext",{"2":{"807":1}}],["ishttperror||webrequest",{"2":{"832":2}}],["ishttperror",{"2":{"798":2,"800":1}}],["ishighperformance",{"2":{"682":1}}],["isdone",{"2":{"781":1,"782":1,"786":2,"789":1,"832":1}}],["isvisible",{"2":{"682":1}}],["isprivatemessage",{"2":{"561":1}}],["is",{"0":{"891":1},"2":{"556":1,"785":1,"786":2,"787":2,"838":1,"864":1}}],["isfocused",{"2":{"491":2}}],["iserasablefile",{"2":{"460":1}}],["issue",{"0":{"507":1},"2":{"507":1}}],["issue和",{"2":{"506":1}}],["issues",{"2":{"432":1}}],["isshowkeyboard",{"2":{"491":5}}],["isstopped",{"2":{"102":1}}],["iscontentok",{"2":{"338":3}}],["isreadfromcache",{"2":{"654":1}}],["isreadable",{"2":{"333":1}}],["isreportablehttperror",{"2":{"48":1}}],["include",{"2":{"828":1}}],["include的shader",{"2":{"725":1}}],["includes",{"2":{"460":1}}],["instntiate",{"2":{"939":1}}],["instead",{"2":{"828":1}}],["instrument查看webcontent进程内存是否在安全范围",{"2":{"584":1}}],["instruments",{"0":{"568":1},"2":{"584":1}}],["instrument",{"2":{"566":1}}],["install",{"2":{"496":1}}],["instance特性或合批处理",{"2":{"928":1}}],["instanceof",{"2":{"836":1}}],["instance",{"0":{"928":1},"2":{"836":1,"928":1}}],["instancing提高渲染性能",{"2":{"925":1}}],["instancing等",{"2":{"663":1}}],["instancing",{"2":{"382":1,"663":1,"671":1}}],["instantiateasync",{"2":{"782":2}}],["instantiate",{"2":{"782":2}}],["instantcing",{"2":{"587":1,"604":1}}],["instantgame增强了unity",{"2":{"762":1}}],["instantgame增加了压缩纹理",{"2":{"762":1}}],["instantgame相对于普通版本有特别之处",{"2":{"762":1}}],["instantgame版本获取",{"0":{"761":1}}],["instantgame版本目前是在2019",{"2":{"760":1}}],["instantgame版本增强的profiler功能",{"2":{"572":1}}],["instantgame",{"2":{"503":1,"760":3}}],["instant",{"0":{"685":1},"2":{"474":1,"502":3,"684":1,"685":5,"687":1,"688":1}}],["inerasableidentifier",{"2":{"460":2}}],["info",{"2":{"460":3,"519":1,"534":4,"606":1,"826":2,"932":7}}],["initsdk",{"2":{"823":1,"834":2,"838":2,"858":1,"863":1,"933":1}}],["initwebglplayer主要函数",{"2":{"468":1}}],["initializeil2cppfrommain",{"2":{"468":2}}],["inittext",{"2":{"375":1,"377":1,"814":1}}],["init",{"2":{"338":2}}],["introduction",{"2":{"804":2}}],["interface",{"2":{"534":1,"654":1,"682":1}}],["interaction",{"0":{"442":1}}],["interpolated",{"2":{"264":1}}],["int",{"2":{"338":1,"430":1,"560":6,"681":2,"834":1,"838":1,"858":1,"933":1}}],["index",{"2":{"338":1,"386":1,"735":1}}],["inneraudio支持持久化文件存储",{"2":{"136":1}}],["inneraudio播放音频中文文件名修复",{"2":{"109":1}}],["inneraudio",{"2":{"81":1}}],["in",{"0":{"442":1,"568":1},"2":{"46":1,"54":1,"224":1,"379":2,"565":1,"584":1,"587":1,"804":2}}],["inputfield",{"2":{"491":1}}],["inputs",{"2":{"491":1}}],["input",{"0":{"490":1},"2":{"28":1,"246":1,"380":1,"491":4}}],["ios浏览器webkit",{"2":{"949":1}}],["ioshighperformance",{"2":{"940":1}}],["ios降低drawmeshinstanced的参数matrices",{"2":{"929":1}}],["ios普通模式无法进入游戏",{"2":{"915":1}}],["ios收集",{"0":{"878":1},"2":{"864":1,"871":1}}],["ios微信客户端版本",{"2":{"855":1}}],["ios为例",{"2":{"673":1}}],["ios包",{"2":{"670":1}}],["ios平台callmaincost",{"2":{"646":1}}],["ios使用高性能模式",{"2":{"638":1}}],["ios性能评测标准",{"0":{"619":1}}],["ios性能差",{"0":{"436":1}}],["ios参考机型",{"2":{"610":1,"625":1}}],["ios默认为普通模式",{"2":{"589":1}}],["ios测试内存务必使用代码分包",{"2":{"584":1}}],["ios测试内存务必不要开启development",{"2":{"584":1}}],["ios设备应以紫色的xcodememory为准",{"2":{"569":1}}],["ios低档机为iphone",{"2":{"564":1}}],["ios版本必须",{"2":{"500":1}}],["ios系统需14",{"2":{"447":1}}],["ios不支持webgl2时提示",{"2":{"214":1}}],["ios高性能",{"2":{"967":1}}],["ios高性能使用webgl2会存在较多问题",{"2":{"927":1}}],["ios高性能内存优化",{"2":{"921":1}}],["ios高性能加载子包代码时会卡顿",{"2":{"651":1}}],["ios高性能模式drawmeshinstanced显示错乱",{"0":{"929":1}}],["ios高性能模式开启gpu",{"0":{"928":1}}],["ios高性能模式收集",{"2":{"652":1}}],["ios高性能模式",{"2":{"476":1,"638":1}}],["ios高性能模式2",{"2":{"108":1}}],["ios高性能模式下",{"2":{"100":1}}],["ios高性能模式自动gc策略",{"2":{"64":1}}],["ios高性能最低支持版本调整",{"2":{"73":1}}],["iosautogcinterval调整间隔",{"2":{"64":1}}],["ios",{"0":{"568":1,"569":1,"576":2,"629":1,"889":1,"890":1,"891":1,"934":1,"947":1,"953":1},"1":{"935":1,"936":1,"937":1,"938":1,"939":1,"940":1,"941":1,"942":1,"943":1,"944":1,"945":1,"946":1,"947":1,"948":1,"949":1,"950":1,"951":1,"952":1,"953":1},"2":{"21":1,"35":1,"476":2,"477":1,"564":1,"565":1,"567":1,"584":2,"586":1,"601":1,"617":1,"668":1,"760":1,"864":3,"867":2,"883":3,"889":1,"890":1,"928":1,"929":1,"934":2,"935":1,"939":1,"940":2,"942":1,"945":1,"949":1,"952":1}}],["iosperformanceplus",{"2":{"9":1}}],["严重卡顿",{"2":{"524":1}}],["严重",{"2":{"21":2}}],["ssl证书",{"0":{"841":1},"2":{"839":1,"840":1}}],["ssl等问题请参考文档网络通信适配",{"2":{"391":1}}],["sql统计分析",{"0":{"826":1}}],["sqlite",{"2":{"823":1}}],["safearea",{"2":{"932":3}}],["safari",{"0":{"576":1}}],["sample",{"2":{"794":1}}],["skip",{"2":{"786":1}}],["skinning",{"2":{"939":1}}],["skin",{"2":{"670":4}}],["split",{"2":{"895":1}}],["spawnsomathing",{"2":{"782":1}}],["spec",{"2":{"676":2}}],["speccube1",{"2":{"382":2}}],["speccube0",{"2":{"382":2}}],["speedtree8passes",{"2":{"382":1}}],["speedtree7passes",{"2":{"382":1}}],["s的低网速玩家",{"2":{"725":1}}],["s",{"0":{"891":1},"2":{"725":1,"864":1,"956":1}}],["s条件",{"2":{"614":1,"626":1}}],["s7",{"2":{"610":1,"625":1}}],["slg品类等",{"2":{"618":1}}],["slg",{"2":{"580":1,"965":1}}],["slg等",{"2":{"341":1}}],["sockets",{"2":{"830":1}}],["socket",{"2":{"475":1,"836":9,"840":1}}],["someprefab",{"2":{"782":6}}],["some",{"2":{"460":1}}],["sounds",{"2":{"847":1,"851":2}}],["sound",{"2":{"102":1}}],["summary>",{"2":{"834":2,"838":2}}],["sum",{"2":{"826":18}}],["subpackage",{"2":{"816":1,"817":1}}],["subtractiveshadowcolor",{"2":{"382":1}}],["subtractdirectmainlightfromlightmap",{"2":{"382":1}}],["sure",{"2":{"787":1}}],["sur版本的mac系统",{"2":{"496":1}}],["surface",{"2":{"382":1}}],["succeeded",{"2":{"785":1,"786":1,"789":1}}],["succeed",{"2":{"419":1}}],["successful",{"2":{"787":1}}],["success",{"2":{"338":2,"681":2,"849":2,"850":1}}],["such",{"2":{"49":1}}],["signature",{"2":{"917":1}}],["simple",{"2":{"828":2}}],["simpledlmalloc",{"2":{"828":1}}],["simplelit",{"2":{"383":1,"667":1}}],["simplelitinput",{"2":{"382":1}}],["single",{"2":{"781":1}}],["size的情况下设置的",{"2":{"560":2}}],["size",{"2":{"347":2,"464":1,"500":1,"560":1,"726":1,"825":1,"826":18,"828":2}}],["srp定制管线",{"2":{"664":1}}],["srp管线",{"2":{"664":1}}],["srp",{"2":{"382":1,"587":1,"664":3,"671":3}}],["shareticket",{"2":{"561":5}}],["shareappmessageoption",{"2":{"561":1}}],["shareappmessage",{"2":{"561":1,"863":1}}],["share",{"2":{"561":2}}],["sharedcanvas",{"2":{"550":7,"554":1,"562":2}}],["shading",{"2":{"670":6}}],["shadowreceiverdepth",{"2":{"464":2}}],["shadowfade",{"2":{"382":1}}],["shadowbias",{"2":{"382":1}}],["shadow",{"2":{"381":1,"382":1,"667":1}}],["shader中添加instancing",{"2":{"928":1}}],["shader中注释掉",{"2":{"668":1}}],["shaderfromserializedshader",{"2":{"826":1}}],["shaderlab",{"2":{"826":1}}],["shaderlibrary",{"2":{"380":2}}],["shader代码的",{"2":{"668":1}}],["shader代码",{"2":{"668":1}}],["shaders",{"2":{"668":1}}],["shader半精度的利用率也有所提高",{"2":{"383":2}}],["shader",{"2":{"378":1,"379":5,"380":16,"381":1,"382":6,"383":2,"384":4,"663":1,"667":2,"668":2,"670":1,"826":2}}],["showsharemenu",{"2":{"863":2}}],["showmodaloption",{"2":{"834":2,"838":1}}],["showmodal",{"2":{"834":2,"838":1}}],["showresultafterlaunch",{"2":{"641":1}}],["showgroupfriendsrank",{"2":{"561":1}}],["showfriendsrank",{"2":{"556":2,"560":1}}],["showopendata",{"0":{"554":1},"2":{"554":2,"560":2,"561":1,"562":3,"863":1}}],["showtoastoption",{"2":{"545":1}}],["showtoast",{"2":{"534":2,"545":1}}],["showkeyboardoption",{"2":{"491":1}}],["showkeyboard",{"2":{"491":3,"863":1}}],["show",{"2":{"377":1,"561":1,"858":2}}],["showall",{"2":{"377":1}}],["shortaudioplayer",{"2":{"278":1}}],["symbol",{"0":{"743":1},"1":{"744":1},"2":{"744":5,"893":1}}],["symbols不会对程序性能造成影响",{"2":{"493":1}}],["symbols将产生函数id与函数名之间的映射关系",{"2":{"403":1}}],["symbols分离",{"2":{"258":1}}],["symbols",{"0":{"403":1,"418":1},"2":{"224":1,"380":1,"386":1,"400":1,"401":1,"744":1}}],["symbols优化",{"2":{"80":1}}],["system进行资源的按需加载",{"2":{"772":1}}],["system进行资源按需加载",{"0":{"771":1},"1":{"772":1,"773":1,"774":1,"775":1,"776":1,"777":1,"778":1,"779":1,"780":1,"781":1,"782":1,"783":1,"784":1,"785":1,"786":1,"787":1,"788":1,"789":1,"790":1,"791":1,"792":1,"793":1,"794":1},"2":{"730":1}}],["system或assetbundle进行资源按需加载",{"2":{"728":1}}],["system",{"0":{"362":1,"735":1,"774":1,"776":1},"1":{"363":1,"364":1},"2":{"430":1,"441":1,"491":1,"556":1,"774":1,"788":1,"794":1,"830":2,"834":1,"838":1,"850":1}}],["sendasync",{"2":{"836":2}}],["send",{"2":{"798":1,"838":2}}],["sendwebrequest",{"2":{"798":1,"800":1,"832":2,"850":1}}],["serializable",{"2":{"556":1,"850":1}}],["servicewechat",{"2":{"443":2}}],["server",{"2":{"338":2}}],["selected",{"2":{"781":1}}],["select",{"2":{"379":1,"826":18}}],["section",{"0":{"891":1},"2":{"864":1}}],["security",{"2":{"338":4}}],["sec",{"2":{"338":1,"956":1}}],["setusercloudstorage",{"2":{"863":1}}],["setmessagetofriendquery",{"2":{"863":1}}],["set",{"2":{"823":1}}],["setactive",{"2":{"560":2}}],["setpass",{"2":{"671":3}}],["setpercentage",{"0":{"542":1}}],["setpreferredframespersecond限制小游戏",{"2":{"439":1}}],["setpreloadlist",{"2":{"145":1,"849":3,"850":2}}],["setglobalvar",{"0":{"536":1,"547":1}}],["setstoragesync",{"2":{"519":1}}],["setenvironmentvariable",{"2":{"430":1}}],["setenabledebug",{"2":{"397":1,"410":1,"463":1}}],["setemptymainlightcascadeshadowmap",{"2":{"382":1}}],["settings",{"2":{"346":1,"347":1,"380":4,"402":2,"403":2,"654":1}}],["settimeout",{"2":{"329":1}}],["setconcurrent",{"2":{"301":1,"843":1}}],["setdatacdn",{"2":{"145":1,"811":2}}],["svn",{"2":{"118":1}}],["snapshot支持",{"2":{"108":1}}],["sdk方式提供给开发者",{"2":{"964":1}}],["sdk会自动对页面做一个兼容适配",{"2":{"933":1}}],["sdk修改unity工程",{"2":{"861":1}}],["sdk以便开发者使用",{"2":{"800":1}}],["sdk功能",{"2":{"754":1}}],["sdk功能选项",{"2":{"748":1}}],["sdk帮助开发者快速对接平台能力",{"2":{"737":1}}],["sdk接口让开发者上报自定义启动阶段",{"2":{"678":1}}],["sdk的logmanagerxxx系列函数进行埋点上报",{"2":{"510":1}}],["sdk的文件api进行自行本地存储",{"2":{"441":1}}],["sdk中的wx",{"2":{"681":1}}],["sdk中的小游戏存储接口",{"2":{"423":1}}],["sdk中提供的方法来唤起输入法",{"2":{"491":1}}],["sdk实现文件存储",{"2":{"447":1}}],["sdk适配",{"2":{"447":1}}],["sdk适配或websocket通信替代",{"2":{"447":1}}],["sdk提供的playerpref进行存储",{"2":{"441":1}}],["sdk写法",{"2":{"424":1}}],["sdk支持api",{"2":{"108":1}}],["sdk支持文档注释",{"2":{"12":1}}],["sdkv1",{"2":{"86":1}}],["sdk",{"0":{"424":1,"858":1},"1":{"859":1,"860":1,"861":1,"862":1,"863":1},"2":{"86":3,"338":2,"340":1,"343":1,"348":1,"360":1,"453":1,"479":1,"499":1,"519":1,"525":1,"554":1,"560":1,"692":1,"695":1,"752":1,"777":2,"858":1,"967":1}}],["stencil",{"2":{"668":3}}],["step",{"2":{"668":1}}],["step4",{"2":{"660":1}}],["step3",{"2":{"660":1}}],["step2",{"2":{"660":1}}],["step1",{"2":{"660":1}}],["studio",{"2":{"566":1}}],["storing",{"2":{"787":1}}],["storagehaskeysync",{"2":{"863":1}}],["storagedeletekeysync",{"2":{"863":1}}],["storagedeleteallsync",{"2":{"863":1}}],["storagegetfloatsync",{"2":{"863":1}}],["storagegetstringsync",{"2":{"863":1}}],["storagegetintsync",{"2":{"863":1}}],["storagesetfloatsync",{"2":{"863":1}}],["storagesetstringsync",{"2":{"863":1}}],["storagesetintsync",{"2":{"863":1}}],["storage",{"2":{"441":1,"826":2}}],["stop",{"2":{"467":1}}],["style",{"2":{"375":3,"377":2,"858":3}}],["streamassets目录找资源并填充到game",{"2":{"846":1}}],["streaming",{"2":{"847":1}}],["streamingassetpath=",{"2":{"748":1}}],["streamingassetspath",{"2":{"797":1}}],["streamingassets目录",{"2":{"350":1}}],["streamingassets查找资源并填充到game",{"2":{"304":1}}],["streamingassets",{"0":{"390":1},"2":{"212":1,"386":1,"387":1,"453":1,"461":3,"748":1,"847":2,"851":2}}],["streamingurlsubpath支持传自定义拼接到streamingcdn后面的路径",{"2":{"214":1}}],["str",{"2":{"836":1}}],["stripping",{"2":{"726":1}}],["strip",{"2":{"726":1}}],["striping",{"0":{"431":1}}],["string>",{"2":{"561":1,"681":2,"850":1}}],["string",{"0":{"536":2,"537":2,"538":1,"539":1,"547":2,"548":2},"2":{"338":1,"366":3,"368":3,"369":2,"371":2,"534":1,"556":3,"560":1,"561":4,"648":1,"654":3,"657":2,"681":4,"797":1,"836":2,"850":1}}],["strings",{"2":{"264":1}}],["stringify导致的浏览器告警",{"2":{"218":1}}],["stable",{"2":{"751":1}}],["stacktrace",{"2":{"402":4,"404":1,"493":2}}],["stack",{"2":{"108":2,"500":1}}],["started",{"2":{"739":1}}],["starttime",{"2":{"654":2}}],["startgame",{"2":{"329":1,"469":2,"849":2}}],["start",{"2":{"105":1,"467":1,"469":1,"634":1,"782":2,"785":1,"786":1,"787":1,"834":1,"838":3,"945":1}}],["state",{"2":{"828":4}}],["static",{"2":{"797":1,"828":1}}],["stats性能面板",{"2":{"570":1}}],["statuscode",{"2":{"654":1,"849":2}}],["status",{"2":{"545":1,"781":1,"785":1,"786":1,"787":1,"789":1}}],["stat支持isdirectory和isfile",{"2":{"25":1}}],["stat",{"2":{"5":1}}],["still",{"2":{"49":1,"786":1}}],["scf",{"2":{"443":1}}],["scaler",{"2":{"560":2}}],["scale",{"2":{"560":2}}],["scaledscreenparams",{"2":{"382":1}}],["scalemode取值",{"2":{"377":1}}],["scalemode",{"2":{"375":1,"377":3}}],["scaling",{"2":{"382":1}}],["scriptreference",{"2":{"804":1}}],["scripts",{"2":{"754":1}}],["scriptonly",{"2":{"754":1}}],["scriptable",{"2":{"664":1}}],["scripting",{"2":{"380":1,"424":1}}],["screen",{"2":{"560":4}}],["screenspaceocclusion",{"2":{"381":1,"382":1}}],["screenspaceshadows",{"2":{"381":1,"382":1}}],["screenadaptation",{"2":{"375":1,"377":1}}],["sceneid同启动场景上报分析",{"2":{"681":1}}],["sceneid",{"2":{"681":2}}],["scene999",{"2":{"464":1}}],["scene",{"2":{"379":2,"689":1,"781":3}}],["sc",{"2":{"46":1,"54":1}}],["cjk特殊符号",{"2":{"857":1}}],["cjk兼容符号",{"2":{"857":1}}],["cjk字母及月份",{"2":{"857":1}}],["c同一目录",{"2":{"828":1}}],["c添加到xlua虚拟机源码目录下参与编译",{"2":{"828":1}}],["c原生代码内存",{"2":{"577":1}}],["ccd",{"2":{"502":1}}],["cdb8b726f0afb1e8d265a9dfd6cb7669",{"2":{"461":2}}],["cdn是以path1为根路径上传到服务器的cdn地址",{"2":{"847":1}}],["cdn字段",{"2":{"817":1}}],["cdn地址",{"2":{"810":1}}],["cdn管理后端针对首资源包",{"2":{"725":1}}],["cdn配置",{"2":{"653":1,"811":1}}],["cdn必须开启brotli或gzip压缩",{"2":{"634":1}}],["cdn使用gzip压缩",{"2":{"611":2,"625":2}}],["cdn视频资源播放失败等",{"2":{"532":1}}],["cdn=https",{"2":{"461":1}}],["cdn部分后作为缓存路径",{"2":{"461":1}}],["cdn",{"2":{"350":1,"388":1,"461":1,"476":1,"485":1,"502":1,"684":1,"748":2,"754":1,"779":1,"810":1,"847":1,"848":3,"851":2}}],["cdn的c",{"2":{"145":1}}],["cdn加载",{"2":{"53":1}}],["cn",{"2":{"443":1,"503":1,"561":1,"661":1,"733":1,"739":2,"757":1}}],["cs这个文件",{"2":{"858":1}}],["csv",{"2":{"823":1}}],["cs缺依赖的报错",{"2":{"777":1}}],["cs的接口判定当前云测环境让游戏自动运行特定逻辑",{"2":{"594":1}}],["css",{"2":{"558":1}}],["csharpvar",{"2":{"856":1}}],["csharpvoid",{"2":{"560":1}}],["csharpprivate",{"2":{"850":1}}],["csharpopendatamessage",{"2":{"560":1}}],["csharp",{"2":{"556":1,"561":1}}],["csharpwx",{"2":{"554":1,"561":2}}],["csharpif",{"2":{"419":1}}],["cs附加到eventsystem对象上",{"2":{"427":1}}],["csm",{"2":{"382":2}}],["cs",{"2":{"360":1,"382":1,"419":1,"430":1,"681":1,"777":1,"932":3}}],["createcustomad",{"2":{"863":1}}],["creategridad",{"2":{"863":1}}],["createinterstitialad",{"2":{"863":1}}],["createrewardedvideoad",{"2":{"863":1}}],["createuserinfobutton",{"2":{"863":1}}],["createudpsocket",{"2":{"838":1}}],["createbannerad",{"2":{"858":2,"863":1}}],["createfixedbottommiddlebannerad",{"2":{"863":1}}],["createfontasset",{"2":{"856":1}}],["createfeedbackbutton主动创建反馈入口",{"2":{"510":1}}],["createfeedbackbutton",{"2":{"80":1}}],["createtcpsocket",{"2":{"834":1}}],["createdirectory",{"2":{"797":1}}],["crash",{"2":{"402":1,"883":1}}],["crunched",{"2":{"346":2}}],["crc",{"2":{"345":1}}],["cf",{"2":{"338":1}}],["cuo",{"2":{"775":1,"794":1}}],["cubes",{"2":{"939":1}}],["cube",{"2":{"443":1}}],["currentruntime",{"2":{"657":1}}],["current",{"2":{"338":1}}],["custom",{"2":{"379":3}}],["customnodepath指定自定义node安装目录",{"2":{"115":1}}],["customad增加onhide",{"2":{"80":1}}],["closeasync",{"2":{"836":1}}],["cloud",{"2":{"338":6,"443":1}}],["cloudfunctionroot",{"2":{"338":1}}],["class",{"2":{"430":1,"491":1,"500":1,"556":1,"782":3,"834":1,"838":1,"850":1,"949":1}}],["clusteredrendering",{"2":{"382":1}}],["clustered",{"2":{"381":1}}],["clearcoatsmoothness",{"2":{"382":1}}],["clearcoatmask",{"2":{"382":1}}],["clear",{"2":{"329":1,"861":1}}],["cleanallfilecache",{"2":{"208":1}}],["cpu利用率和内存使用",{"2":{"671":1}}],["cpu繁忙",{"2":{"655":1}}],["cpu占用",{"2":{"623":1}}],["cpu型号",{"2":{"606":1}}],["cputype获取设备内存",{"2":{"606":1}}],["cpu性能差异",{"2":{"587":1}}],["cpu主内存",{"2":{"566":1,"822":1,"829":1}}],["cpuprofiler",{"2":{"329":1}}],["cpuprofile",{"2":{"329":1}}],["cpu",{"0":{"329":1,"592":1,"938":1},"2":{"329":1,"383":2,"467":3,"469":1,"484":1,"592":1,"597":1,"638":2,"658":1,"670":2,"727":1,"934":1,"935":2,"938":5,"967":1}}],["chunkbasedcompression",{"2":{"797":2}}],["chrome",{"2":{"467":1}}],["chrome导入profile文件",{"2":{"467":1}}],["chrome加载数据",{"2":{"329":1}}],["chromaticaberration",{"2":{"381":1}}],["checksession",{"2":{"863":1}}],["check",{"2":{"338":1,"781":1,"786":1,"787":1}}],["changelog",{"0":{"899":1},"1":{"900":1,"901":1,"902":1,"903":1,"904":1,"905":1,"906":1,"907":1,"908":1,"909":1,"910":1,"911":1,"912":1,"913":1,"914":1,"915":1,"916":1,"917":1,"918":1,"919":1,"920":1,"921":1,"922":1,"923":1},"2":{"864":1}}],["change",{"2":{"333":1}}],["changed",{"0":{"89":1,"193":1,"212":1,"214":1,"216":1,"218":1,"220":1,"222":1,"237":1,"242":1,"263":1,"270":1,"291":1,"299":1,"302":1,"310":1,"313":1,"325":1,"911":1,"913":1,"919":1},"2":{"864":3}}],["charts",{"2":{"857":18}}],["chart",{"2":{"329":1}}],["choosemedia",{"2":{"108":1}}],["cascade",{"2":{"667":2}}],["cascades",{"2":{"381":1}}],["cavas",{"2":{"584":1}}],["cavnas",{"2":{"577":2}}],["catalog",{"2":{"465":1,"654":2,"655":3,"685":1,"687":1}}],["catch",{"2":{"338":1,"402":5,"519":1,"556":1}}],["cacheable",{"2":{"654":1}}],["cacheablecount",{"2":{"654":1,"655":1}}],["cachecatalog=true",{"2":{"655":1}}],["cachecatalog=false",{"2":{"655":1}}],["cachecatalog",{"2":{"654":1}}],["cachesettings=true",{"2":{"655":1}}],["cachesettings",{"2":{"654":1}}],["cache进行文件缓存",{"2":{"573":1}}],["cache机制",{"2":{"565":1}}],["cachexmlhttprequest",{"2":{"464":2}}],["cache",{"2":{"392":1}}],["camera",{"0":{"672":1},"2":{"382":1,"672":3}}],["cameramotionblur",{"2":{"382":1}}],["called",{"2":{"838":1}}],["call的instance数量",{"2":{"928":1}}],["call的数量",{"2":{"671":1}}],["call的概念",{"2":{"671":1}}],["call指的切换渲染状态的次数",{"2":{"671":1}}],["callmain完成时预下载信息",{"2":{"647":1}}],["callmaincost",{"2":{"645":1}}],["callmain耗时较长",{"2":{"646":1}}],["callmain耗时",{"2":{"611":1,"625":1}}],["callmain的主要是initwebglplayer调用",{"2":{"468":1}}],["callmain",{"0":{"468":1,"469":1},"2":{"374":1,"375":1,"376":1,"611":1,"625":1,"628":1,"629":1,"641":1,"647":1,"682":1,"813":1,"814":1,"883":1}}],["call",{"2":{"338":2,"500":1,"671":5}}],["callfunction",{"2":{"338":1}}],["callback=replace",{"2":{"823":1}}],["callbackorder",{"2":{"430":1}}],["callback",{"0":{"530":1,"531":1,"532":1,"533":1,"534":1,"535":1,"538":1,"539":1,"545":1,"546":1},"2":{"87":1,"369":1,"371":1,"545":1,"823":1,"825":1,"826":27}}],["can",{"2":{"786":1}}],["canvas画布等",{"2":{"565":1}}],["canvasscaler>",{"2":{"560":1}}],["canvasscaler",{"2":{"560":1}}],["canvas2d",{"2":{"558":1}}],["canvas",{"2":{"329":1,"550":2,"565":1,"861":1}}],["cannot",{"2":{"264":1}}],["caniuse",{"2":{"18":1}}],["count为32或更小的值",{"2":{"929":1}}],["count的大小",{"2":{"928":1}}],["count",{"0":{"891":1},"2":{"825":1,"864":1,"928":1}}],["costtimems",{"2":{"682":1}}],["costtime",{"2":{"681":1}}],["costtimeaftercallmain",{"2":{"651":1,"652":1}}],["cocos",{"2":{"558":1}}],["collections",{"2":{"491":1}}],["colorgradinglutpass",{"2":{"381":1,"382":1}}],["color",{"2":{"329":1,"375":1,"377":1,"523":1,"528":1,"861":1}}],["cookie",{"2":{"381":1,"382":1,"946":2}}],["core",{"2":{"379":10,"380":1}}],["codes",{"2":{"523":1}}],["code",{"2":{"338":4,"386":1,"449":1,"534":1,"577":1,"611":1,"625":1,"716":1,"726":1,"834":3,"838":3,"858":1,"895":1,"933":1}}],["control",{"2":{"947":1}}],["contexts",{"2":{"807":1}}],["context",{"2":{"338":1}}],["contextmenu适配",{"2":{"10":1}}],["contents",{"2":{"364":2,"661":1}}],["content",{"2":{"338":5,"834":2,"838":1,"947":4}}],["connectasync",{"2":{"836":1}}],["connect",{"2":{"834":1}}],["confirmtype",{"2":{"491":1}}],["config",{"0":{"528":1},"2":{"338":3,"364":1,"386":1,"519":1,"523":1,"528":1}}],["console打印检测报告",{"2":{"642":1}}],["console打印详细信息",{"2":{"642":1}}],["console",{"2":{"338":1,"397":2,"463":1,"469":1,"519":2,"556":2,"606":2,"744":1,"858":1}}],["constant",{"2":{"560":2}}],["const",{"2":{"329":1,"338":1,"377":1,"460":1,"606":3,"857":1,"861":1}}],["community",{"2":{"443":1}}],["common",{"2":{"380":1}}],["compilewasm",{"2":{"682":1}}],["compile",{"2":{"668":2}}],["compileoption",{"2":{"64":1,"115":1}}],["compilingtext",{"2":{"375":1,"377":1,"814":1}}],["completed",{"2":{"781":1,"782":1,"785":3}}],["completetext",{"2":{"375":1,"377":1,"814":1}}],["complete",{"2":{"366":1,"368":1,"681":2,"781":1,"787":1,"849":2}}],["compresstext",{"0":{"366":1},"1":{"367":1,"368":1},"2":{"366":1,"368":1}}],["compressed",{"2":{"346":6,"347":1}}],["com",{"2":{"105":2,"329":1,"338":1,"375":1,"377":1,"379":4,"380":2,"432":1,"441":2,"443":17,"461":3,"465":1,"467":1,"468":1,"500":1,"561":1,"661":1,"692":1,"732":1,"733":1,"734":1,"735":2,"739":2,"757":1,"772":1,"775":1,"792":1,"794":5,"804":4,"823":1,"832":2,"834":2,"838":2,"840":1,"848":4,"849":2,"850":1,"856":1,"857":1}}],["c",{"0":{"540":1},"1":{"541":1,"542":1,"543":1,"544":1,"545":1,"546":1,"547":1,"548":1},"2":{"12":1,"108":1,"363":1,"368":1,"378":1,"380":7,"382":1,"402":1,"430":1,"441":2,"447":1,"515":1,"519":1,"523":1,"525":4,"541":1,"545":3,"570":1,"664":2,"681":3,"697":1,"725":1,"739":1,"782":1,"785":1,"786":1,"787":1,"789":2,"797":1,"798":2,"800":1,"828":2,"832":2,"834":2,"836":1,"838":2}}],["陀螺仪去json性能优化",{"2":{"9":1,"12":1}}],["float",{"2":{"932":7}}],["float3",{"2":{"382":1}}],["flex布局",{"2":{"558":1}}],["flexdb",{"2":{"443":1}}],["fmod音频插件是否支持",{"0":{"429":1}}],["fmod转换适配develop",{"2":{"95":1}}],["fuwu",{"2":{"443":1}}],["full",{"2":{"402":4,"404":1,"493":2}}],["func的日志",{"2":{"881":1}}],["func导致的包体增大",{"2":{"876":1}}],["func",{"2":{"876":1}}],["function",{"0":{"530":1,"531":1,"532":1,"533":1,"534":1,"535":1,"538":1,"539":1},"2":{"338":3,"460":1,"744":3,"834":1,"838":1,"917":2}}],["funcs选项后",{"2":{"592":1}}],["funcs会导致代码包过大",{"2":{"329":1}}],["funcs",{"0":{"399":1},"2":{"280":1,"329":2,"399":2,"754":1,"823":1}}],["free",{"2":{"825":1}}],["frameinfo",{"2":{"657":1}}],["framecost",{"2":{"657":1,"658":1}}],["framecount",{"2":{"657":1}}],["frame",{"2":{"657":1,"786":1,"838":1}}],["frames",{"2":{"657":1}}],["frameworks",{"2":{"430":1}}],["framework",{"2":{"386":1,"430":1,"757":1}}],["fromjson",{"2":{"850":1}}],["fromil2cpptype",{"2":{"500":1,"949":1}}],["from",{"2":{"379":1,"692":1,"816":1,"817":1,"826":18}}],["fps均值",{"2":{"617":1}}],["fps等游戏需根据实际情况评估",{"2":{"445":1}}],["fps",{"2":{"383":2,"641":1,"956":1}}],["ffffff",{"2":{"375":1,"377":1,"523":1,"528":1}}],["faq",{"0":{"882":1},"1":{"883":1,"884":1,"885":1,"886":1,"887":1,"888":1,"889":1,"890":1,"891":1,"892":1,"893":1,"894":1,"895":1,"896":1,"897":1,"898":1},"2":{"864":1}}],["fallbackfont",{"2":{"856":2}}],["false",{"2":{"366":2,"368":4,"460":2,"491":2,"519":1,"523":1,"527":2,"528":2,"543":1,"798":2,"800":1,"803":1,"834":2,"838":2}}],["fairgui可正常工作",{"2":{"427":1}}],["failure",{"2":{"949":1}}],["fail",{"0":{"442":1},"2":{"49":1,"338":2,"681":2}}],["far",{"2":{"382":1}}],["fog雾效不会用到",{"2":{"384":1}}],["fog",{"2":{"381":1,"382":1}}],["form",{"2":{"832":5}}],["format",{"2":{"333":1,"346":2,"347":1}}],["forums",{"2":{"739":1}}],["forum",{"2":{"739":1}}],["for",{"2":{"668":2,"785":1,"786":1,"794":1,"823":1,"881":1}}],["forcemaxcount",{"2":{"928":1}}],["force",{"2":{"366":1,"368":1}}],["found",{"2":{"46":1,"54":1}}],["fontasset",{"2":{"856":1}}],["font文件不希望自动清理",{"2":{"460":1}}],["fontsize",{"2":{"375":1,"377":1}}],["font",{"2":{"46":1,"54":1,"458":3,"460":1,"856":5}}],["first",{"2":{"838":1}}],["firststarttext",{"2":{"375":1,"377":1,"814":1}}],["firefox",{"0":{"575":1}}],["field组件自动适配",{"0":{"490":1}}],["field组件适配微信输入法",{"2":{"28":1}}],["filmgrain",{"2":{"381":1,"382":1}}],["file3",{"2":{"848":1}}],["file2",{"2":{"848":1}}],["file1",{"2":{"848":1}}],["file接口",{"2":{"447":1}}],["file相关接口做文件存储",{"0":{"423":1}}],["file",{"2":{"46":1,"49":1,"54":1,"441":1,"794":1}}],["filesystemmanager异步读取文件",{"2":{"140":1}}],["filesystemmanager增加stat接口",{"2":{"139":1}}],["filesystem",{"2":{"25":1}}],["fit",{"2":{"377":1}}],["fixedwide",{"2":{"377":1}}],["fixedwidth",{"2":{"377":1}}],["fixednarrow",{"2":{"377":1}}],["fixedheight",{"2":{"377":2}}],["fixed",{"0":{"1":1,"3":1,"5":1,"7":1,"10":1,"13":1,"16":1,"21":1,"23":1,"26":1,"30":1,"33":1,"38":1,"43":1,"46":1,"49":1,"54":1,"57":1,"60":1,"65":1,"68":1,"70":1,"73":1,"75":1,"78":1,"81":1,"84":1,"87":1,"95":1,"98":1,"100":1,"103":1,"106":1,"109":1,"111":1,"116":1,"121":1,"126":1,"129":1,"134":1,"137":1,"140":1,"144":1,"147":1,"149":1,"155":1,"158":1,"163":1,"166":1,"168":1,"170":1,"173":1,"175":1,"178":1,"180":1,"183":1,"191":1,"194":1,"198":1,"200":1,"203":1,"205":1,"224":1,"232":1,"241":1,"244":1,"246":1,"248":1,"250":1,"252":1,"256":1,"259":1,"261":1,"264":1,"266":1,"269":1,"276":1,"283":1,"295":1,"297":1,"308":1,"312":1,"315":1,"317":1,"319":1,"322":1,"328":1,"901":1,"903":1,"905":1,"907":1,"915":1,"917":1},"2":{"377":4,"781":1,"864":6}}],["feature和shader",{"2":{"668":1}}],["feature",{"0":{"9":1,"12":1,"15":1,"18":1,"20":1,"25":1,"28":1,"32":1,"35":1,"37":1,"40":1,"42":1,"45":1,"48":1,"51":1,"53":1,"56":1,"59":1,"62":1,"64":1,"67":1,"72":1,"77":1,"80":1,"83":1,"86":1,"91":1,"93":1,"97":1,"102":1,"105":1,"108":1,"113":1,"115":1,"118":1,"120":1,"123":1,"125":1,"128":1,"131":1,"133":1,"136":1,"139":1,"142":1,"145":1,"151":1,"153":1,"157":1,"160":1,"162":1,"164":1,"172":1,"177":1,"182":1,"185":1,"187":1,"189":1,"196":1,"201":1,"206":1,"208":1,"210":1,"226":1,"228":1,"230":1,"234":1,"236":1,"239":1,"254":1,"258":1,"268":1,"272":1,"274":1,"278":1,"279":1,"280":1,"282":1,"285":1,"287":1,"289":1,"293":1,"301":1,"304":1,"306":1,"320":1,"323":1,"909":1},"2":{"668":1,"864":1}}],["1已fix",{"2":{"949":1}}],["1w",{"2":{"794":1}}],["1hplnldrf0qavjejtpkf",{"2":{"775":1,"794":1}}],["1~2020",{"2":{"760":1}}],["1~2",{"2":{"667":1}}],["1s",{"2":{"658":1}}],["1g",{"2":{"564":1,"628":1,"942":1}}],["1级能满足要求是最好的",{"2":{"667":1}}],["1级",{"2":{"524":1}}],["1mb",{"2":{"461":1,"648":1,"649":1,"654":1}}],["1334",{"2":{"956":1}}],["135296",{"2":{"734":1}}],["130mb",{"2":{"577":1}}],["139ms",{"2":{"468":1}}],["13",{"0":{"141":1,"179":1,"243":1,"311":1,"419":1,"900":1},"1":{"142":1,"180":1,"244":1,"312":1,"313":1,"901":1},"2":{"315":1,"864":1}}],["1支持bufferurl",{"2":{"108":1}}],["17",{"0":{"99":1,"101":1,"122":1,"152":1,"221":1,"240":1},"1":{"100":1,"102":1,"103":1,"123":1,"153":1,"222":1,"241":1,"242":1},"2":{"610":1,"616":1,"949":1}}],["14",{"0":{"71":1,"165":1,"209":1,"225":1,"281":1},"1":{"72":1,"73":1,"166":1,"210":1,"226":1,"282":1,"283":1},"2":{"312":1,"496":1,"500":1,"742":1,"760":1}}],["1600",{"2":{"377":2}}],["16安卓worker写文件报错",{"2":{"180":1}}],["16",{"0":{"69":1,"176":1,"253":1},"1":{"70":1,"177":1,"178":1,"254":1},"2":{"308":1,"346":1,"735":1,"802":1,"814":1,"949":1,"956":2}}],["19m",{"2":{"826":1}}],["19",{"0":{"265":1,"309":1},"1":{"266":1,"310":1},"2":{"59":1,"89":1,"379":1,"382":1,"384":2,"500":1}}],["1版本",{"2":{"40":1}}],["1基础库且只支持播放一个视频",{"2":{"35":1}}],["10w+函数的包可以减少约100m",{"2":{"897":1}}],["108",{"2":{"744":1}}],["10s",{"2":{"628":1,"629":2}}],["10mb",{"2":{"580":1,"956":1}}],["107",{"2":{"560":1}}],["1001",{"2":{"681":1}}],["1000才可以开通广告主",{"2":{"862":1}}],["1000",{"2":{"658":1}}],["10000",{"2":{"329":1,"681":1}}],["100mb内存",{"2":{"601":1}}],["100mb",{"2":{"577":1,"580":1}}],["100",{"2":{"542":1,"681":1,"760":4}}],["1024bytes",{"2":{"461":1}}],["1024",{"2":{"461":1,"646":2,"649":6}}],["1024kb",{"2":{"461":1}}],["1045",{"2":{"377":2}}],["10f1c1",{"2":{"342":1}}],["10",{"0":{"27":1,"31":1,"34":1,"50":1,"127":1,"130":1,"132":1,"156":1,"255":1,"271":1,"273":1,"290":1,"327":1,"416":1,"430":1,"605":1,"906":1},"1":{"28":1,"32":1,"33":1,"35":1,"51":1,"128":1,"129":1,"131":1,"133":1,"134":1,"157":1,"158":1,"256":1,"272":1,"274":1,"291":1,"328":1,"907":1},"2":{"328":1,"379":5,"380":2,"382":1,"384":1,"464":2,"468":1,"641":1,"648":1,"654":1,"864":1}}],["11~2021",{"2":{"760":1}}],["113ms",{"2":{"468":1}}],["115",{"2":{"377":1}}],["11以上",{"2":{"224":1}}],["11以后版本已支持",{"2":{"218":1}}],["11",{"0":{"22":1,"24":1,"27":1,"29":1,"34":1,"117":1,"119":1,"122":1,"124":1,"154":1,"211":1,"227":1,"262":1,"265":1,"267":1,"417":1,"431":1,"606":1,"904":1},"1":{"23":1,"25":1,"26":1,"28":1,"30":1,"35":1,"118":1,"120":1,"121":1,"123":1,"125":1,"126":1,"155":1,"212":1,"228":1,"263":1,"264":1,"266":1,"268":1,"269":1,"270":1,"905":1},"2":{"80":1,"326":1,"383":1,"565":1,"864":1,"942":1}}],["12无法安装",{"2":{"901":1}}],["127",{"2":{"757":1}}],["1264",{"2":{"744":1}}],["126ms",{"2":{"468":1}}],["12s",{"2":{"468":1,"628":2,"629":1}}],["12",{"0":{"14":1,"17":2,"19":1,"61":1,"74":1,"107":1,"110":1,"112":1,"114":1,"132":1,"247":1,"249":1,"251":1,"253":1,"255":1,"257":1,"260":1,"288":1,"418":1,"432":1,"902":1},"1":{"15":1,"16":1,"18":2,"20":1,"21":1,"62":1,"75":1,"108":1,"109":1,"111":1,"113":1,"115":1,"116":1,"133":1,"134":1,"248":1,"250":1,"252":1,"254":1,"256":1,"258":1,"259":1,"261":1,"289":1,"903":1},"2":{"13":1,"102":1,"375":1,"379":5,"380":2,"382":1,"384":1,"430":1,"864":1,"926":2,"942":1}}],["15s",{"2":{"628":1,"629":1}}],["154ms",{"2":{"468":1}}],["15032",{"2":{"386":1}}],["1500或安卓平台callmaincost",{"2":{"646":1}}],["1500",{"2":{"375":1,"377":1,"814":1}}],["15000",{"2":{"375":1,"377":1,"814":1}}],["15",{"0":{"8":1,"94":1,"223":1},"1":{"9":1,"10":1,"95":1,"224":1},"2":{"21":1,"377":1,"649":1,"668":1,"949":2,"950":1}}],["18f1c1",{"2":{"342":1}}],["18",{"0":{"6":1,"14":1,"47":1,"174":1,"207":1,"267":1},"1":{"7":1,"15":1,"16":1,"48":1,"49":1,"175":1,"208":1,"268":1,"269":1,"270":1},"2":{"62":1,"464":1,"500":1}}],["1",{"0":{"6":1,"8":1,"11":1,"79":1,"167":1,"186":1,"229":1,"231":1,"233":1,"235":1,"238":1,"240":1,"243":1,"245":1,"344":1,"357":1,"407":1,"421":1,"434":1,"445":1,"505":1,"552":1,"554":1,"560":1,"567":1,"578":1,"592":1,"596":1,"634":1,"697":1,"720":2,"721":1,"723":1,"725":1,"732":1,"748":1,"766":1,"768":1,"774":1,"779":1,"781":1,"785":1,"789":1,"792":1,"797":2,"798":1,"802":1,"809":1,"828":1,"900":1,"902":1,"904":1,"906":1,"908":1,"910":1,"912":1,"914":1,"916":1,"918":1,"920":1,"945":1},"1":{"7":1,"9":1,"10":1,"12":1,"13":1,"80":1,"81":1,"168":1,"187":1,"230":1,"232":1,"234":1,"236":1,"237":1,"239":1,"241":1,"242":1,"244":1,"246":1,"568":1,"569":1,"810":1,"811":1,"901":1,"903":1,"905":1,"907":1,"909":1,"911":1,"913":1,"915":1,"917":1,"919":1,"921":1},"2":{"13":1,"35":1,"89":1,"102":1,"111":1,"113":1,"115":1,"125":1,"203":1,"326":1,"328":1,"329":1,"336":1,"338":2,"379":5,"380":4,"382":1,"383":3,"384":1,"402":2,"430":3,"461":1,"464":1,"467":1,"468":2,"469":1,"523":2,"528":2,"534":2,"542":1,"564":3,"584":1,"617":3,"628":2,"629":2,"649":1,"654":1,"663":1,"680":1,"681":2,"683":2,"735":1,"757":1,"781":1,"802":1,"814":1,"833":2,"864":11,"868":2,"888":1,"901":2,"925":1,"932":1,"934":1,"942":1,"943":1,"945":1,"956":1,"959":1}}],["gfx显存",{"2":{"577":3,"584":1}}],["groups的功能",{"2":{"790":1}}],["groups时",{"2":{"790":1}}],["group",{"2":{"561":2}}],["graphicssetting",{"2":{"579":1}}],["graph包也会同时被移除",{"2":{"379":1}}],["graph",{"2":{"379":3,"668":1}}],["gzip压缩后",{"2":{"612":1,"627":1}}],["gzip",{"0":{"411":1,"947":1},"2":{"411":1,"934":1,"947":1}}],["google",{"2":{"467":1,"775":1,"794":2}}],["go2",{"2":{"402":2}}],["go",{"2":{"402":2,"491":1}}],["gbuffer",{"2":{"381":1,"382":1}}],["gdiplus",{"0":{"362":1},"1":{"363":1,"364":1}}],["gpu等选取性能相当的机型",{"2":{"610":1}}],["gpu性能差异",{"2":{"587":1}}],["gpu之后的显存占用",{"2":{"565":1}}],["gpu内存有较大帮助",{"2":{"584":1}}],["gpu内存",{"0":{"579":1},"2":{"565":1}}],["gpu硬解纹理渲染更快",{"2":{"485":1}}],["gpu利用率从",{"2":{"383":2}}],["gpu",{"2":{"340":3,"382":1,"383":2,"485":1,"663":2,"670":2,"671":1}}],["glgetstring",{"2":{"949":1}}],["globalname",{"0":{"536":1,"537":1,"538":1,"539":1}}],["globalvar",{"2":{"534":1}}],["globalmipbias",{"2":{"382":1}}],["glossyenvironmentcubemap",{"2":{"382":2}}],["glossyenvironmentcolor",{"2":{"382":1}}],["gles3",{"2":{"380":1}}],["gles30",{"2":{"380":1}}],["gles",{"2":{"380":5}}],["gl",{"2":{"329":3,"606":3,"861":3,"949":1}}],["git",{"0":{"507":1},"2":{"692":2}}],["git目录忽略",{"2":{"118":1}}],["github",{"2":{"105":1,"432":1,"468":1,"692":1,"732":1,"772":1,"794":1,"836":1}}],["guided",{"2":{"868":1}}],["guide",{"2":{"105":1,"441":2,"500":1,"561":1,"739":1}}],["gamma矫正的",{"2":{"665":1}}],["gamma",{"0":{"665":1},"2":{"97":1,"665":2}}],["gameobject",{"2":{"402":2,"560":1,"782":2,"789":1}}],["game版本",{"2":{"351":1}}],["gamemanager",{"2":{"329":2,"469":3}}],["gameglobal",{"2":{"329":2,"469":1,"519":1,"526":1,"527":1,"811":1,"823":1,"843":1,"849":5,"861":1}}],["game",{"0":{"375":1,"685":1,"814":1,"817":1},"2":{"72":1,"375":1,"379":2,"397":1,"410":1,"463":1,"474":1,"502":5,"519":2,"525":1,"557":1,"684":1,"685":6,"687":1,"688":1,"744":2,"940":1,"945":1}}],["gc后内存峰值",{"2":{"619":1}}],["gc",{"2":{"64":1}}],["getfilesystemmanager",{"2":{"863":1}}],["getuserinfo",{"2":{"863":1}}],["getwxfont",{"2":{"855":1,"856":1}}],["getwxfont获取使用系统字体",{"2":{"86":1}}],["getpreloadlist",{"2":{"850":1}}],["getparameter",{"2":{"606":2}}],["gettype",{"2":{"798":2,"800":1}}],["getting",{"2":{"739":1}}],["gettingstarted",{"2":{"739":1}}],["getextension",{"2":{"606":1}}],["getdeviceinfo获取硬件信息",{"2":{"606":1}}],["getdata",{"2":{"45":1}}],["getshareinfo",{"2":{"863":1}}],["getsystemlanguage",{"2":{"863":1}}],["getsysteminfooption",{"2":{"697":1}}],["getsysteminfo",{"2":{"697":1,"863":1}}],["getsysteminfosync得到其中的安全区域",{"2":{"932":1}}],["getsysteminfosync",{"2":{"601":1,"863":1,"932":1}}],["getstring",{"2":{"834":1,"838":1}}],["getstoragesync",{"2":{"519":2}}],["getcomponent",{"2":{"560":1}}],["getcontext",{"2":{"329":1,"861":1}}],["getopendatacontext",{"2":{"554":1,"556":2,"560":1,"561":1,"863":1}}],["getrunning",{"0":{"543":1}}],["getrealtimelogmanager",{"2":{"72":1}}],["getlaunchoptionssync",{"2":{"863":1}}],["getlaunchoperahandler",{"2":{"541":1,"545":1}}],["getlogmanager",{"2":{"72":1}}],["getglobalvar",{"0":{"537":1,"548":1}}],["getgameclubdata",{"2":{"139":1}}],["getgameclubdataoption",{"2":{"87":2}}],["getassetbundle",{"2":{"798":2,"800":1,"802":1}}],["getassetbundles",{"0":{"369":1},"1":{"370":1,"371":1},"2":{"369":1}}],["getappauthorizesetting",{"2":{"5":1}}],["get",{"2":{"108":2,"826":2,"832":3,"850":1}}],["gt",{"0":{"545":1,"546":1},"2":{"4":1,"53":1,"366":1,"369":1,"397":3,"402":3,"403":3,"463":3,"467":4,"469":2,"498":2,"500":3,"514":1,"580":2,"628":3,"629":3,"641":1,"646":2,"649":2,"652":1,"658":3,"692":4,"748":1,"781":1,"799":4,"803":2,"814":1,"815":1,"837":1,"855":3,"862":1,"926":4,"940":3,"945":2}}],["0系统出现",{"2":{"949":1}}],["0系统bigunit64array兼容性问题",{"2":{"21":1}}],["0f+py",{"2":{"932":1}}],["0用户使用webgl2",{"2":{"926":1}}],["0以上的shader难以降低",{"2":{"925":1}}],["0a",{"2":{"823":1}}],["0xffef",{"2":{"857":1}}],["0xff00",{"2":{"857":1}}],["0xfe4f",{"2":{"857":1}}],["0xfe30",{"2":{"857":1}}],["0xfe1f",{"2":{"857":1}}],["0xfe10",{"2":{"857":1}}],["0x22ff",{"2":{"857":1}}],["0x2200",{"2":{"857":1}}],["0x25ff",{"2":{"857":1}}],["0x25a0",{"2":{"857":1}}],["0x24ff",{"2":{"857":1}}],["0x2460",{"2":{"857":1}}],["0x21ff",{"2":{"857":1}}],["0x2190",{"2":{"857":1}}],["0x218f",{"2":{"857":1}}],["0x2150",{"2":{"857":1}}],["0x214f",{"2":{"857":1}}],["0x2100",{"2":{"857":1}}],["0x27bf",{"2":{"857":1}}],["0x2700",{"2":{"857":1}}],["0x26ff",{"2":{"857":1}}],["0x2600",{"2":{"857":1}}],["0x20cf",{"2":{"857":1}}],["0x20a0",{"2":{"857":1}}],["0x206f",{"2":{"857":1}}],["0x2000",{"2":{"857":1}}],["0x33ff",{"2":{"857":1}}],["0x3300",{"2":{"857":1}}],["0x32ff",{"2":{"857":1}}],["0x3200",{"2":{"857":1}}],["0x303f",{"2":{"857":1}}],["0x3000",{"2":{"857":1}}],["0x7f",{"2":{"857":1}}],["0x0",{"2":{"857":1}}],["0x9fff",{"2":{"857":1}}],["0x4e00",{"2":{"857":1}}],["0x432503",{"2":{"744":1}}],["0x801bd1",{"2":{"744":1}}],["0x13a062b",{"2":{"744":1}}],["0开始支持unity",{"2":{"742":1}}],["0时使用gpu",{"2":{"604":1}}],["0时则会进一步拉大差距",{"2":{"587":1}}],["0渲染支持说明",{"0":{"924":1},"1":{"925":1,"926":1,"927":1,"928":1,"929":1,"930":1},"2":{"603":1,"663":1,"967":1}}],["0说明",{"0":{"603":1}}],["0相当于opengles3",{"2":{"587":1}}],["0相当于opengles2",{"2":{"587":1}}],["0级",{"2":{"524":1}}],["0~1",{"2":{"523":1}}],["000000",{"2":{"523":1,"528":1}}],["000e426d34c788ac39ad82e1756813",{"2":{"443":1}}],["0支持处于beta测试阶段",{"2":{"447":1}}],["0的特性处于beta测试",{"2":{"447":1}}],["0的压缩纹理",{"2":{"228":1}}],["0模式下的gamma与linear颜色空间渲染",{"2":{"351":1}}],["0模式下",{"2":{"98":1,"103":2}}],["03",{"0":{"90":1},"1":{"91":1}}],["04",{"0":{"88":1,"104":1,"294":1},"1":{"89":1,"105":1,"106":1,"295":1}}],["06",{"0":{"66":1,"69":1,"71":1,"74":1,"76":1,"79":1,"257":1,"284":1,"318":1,"321":1,"327":1},"1":{"67":1,"68":1,"70":1,"72":1,"73":1,"75":1,"77":1,"78":1,"80":1,"81":1,"258":1,"259":1,"285":1,"319":1,"320":1,"322":1,"323":1,"324":1,"325":1,"326":1,"328":1}}],["05",{"0":{"63":1,"82":1,"85":1,"292":1},"1":{"64":1,"65":1,"83":1,"84":1,"86":1,"87":1,"293":1},"2":{"610":1,"616":1,"868":2,"959":2}}],["073",{"2":{"464":1}}],["07c160",{"2":{"375":1}}],["07",{"0":{"55":1,"58":1,"61":1,"63":1,"300":1,"303":1,"305":1,"307":1,"309":1,"311":1,"314":1,"316":1},"1":{"56":1,"57":1,"59":1,"60":1,"62":1,"64":1,"65":1,"301":1,"302":1,"304":1,"306":1,"308":1,"310":1,"312":1,"313":1,"315":1,"317":1},"2":{"802":1}}],["0检测",{"2":{"54":1}}],["01367b188873c923",{"2":{"386":1,"387":1}}],["01",{"0":{"41":1,"99":1,"101":1,"104":1,"298":1},"1":{"42":1,"43":1,"100":1,"102":1,"103":1,"105":1,"106":1,"299":1}}],["09",{"0":{"39":1,"41":1,"273":1,"275":1,"277":1,"281":1,"284":1,"314":1},"1":{"40":1,"42":1,"43":1,"274":1,"276":1,"278":1,"279":1,"280":1,"282":1,"283":1,"285":1,"315":1}}],["0基础库",{"2":{"35":1}}],["02",{"0":{"29":1,"92":1,"94":1,"96":1,"260":1,"296":1,"316":1},"1":{"30":1,"93":1,"95":1,"97":1,"98":1,"261":1,"297":1,"317":1}}],["02版本",{"2":{"3":1}}],["08",{"0":{"19":1,"44":1,"47":1,"50":1,"52":1,"292":1,"294":1,"296":1,"298":1},"1":{"20":1,"21":1,"45":1,"46":1,"48":1,"49":1,"51":1,"53":1,"54":1,"293":1,"295":1,"297":1,"299":1}}],["0",{"0":{"339":1,"351":1,"663":2,"920":1,"922":1},"1":{"340":1,"341":1,"342":1,"343":1,"344":1,"345":1,"346":1,"347":1,"348":1,"349":1,"350":1,"351":1,"352":1,"353":1,"354":1,"355":1,"356":1,"357":1,"358":1,"359":1,"360":1,"361":1,"362":1,"363":1,"364":1,"365":1,"366":1,"367":1,"368":1,"369":1,"370":1,"371":1,"921":1,"923":1},"2":{"4":1,"35":1,"40":1,"97":1,"109":1,"118":1,"131":1,"133":1,"136":1,"158":1,"180":1,"203":2,"205":1,"214":1,"218":1,"220":1,"237":1,"258":1,"291":1,"295":1,"297":1,"308":1,"312":1,"315":1,"326":1,"328":1,"338":3,"375":2,"380":1,"428":1,"447":2,"500":3,"519":1,"523":3,"528":1,"542":2,"554":2,"560":2,"561":1,"587":3,"605":1,"649":2,"654":1,"655":2,"658":1,"661":8,"663":15,"665":3,"669":1,"671":2,"673":2,"676":2,"681":1,"754":1,"757":10,"781":1,"798":1,"828":1,"855":2,"858":4,"864":2,"915":1,"925":4,"926":3,"932":2,"945":1}}],["0不再限制需要ios",{"2":{"4":1}}],["where",{"2":{"826":17}}],["while",{"2":{"781":1,"782":1,"832":1}}],["ws协议进行开发",{"2":{"841":1}}],["ws等不带ssl证书的协议",{"2":{"839":1}}],["ws",{"2":{"661":1,"757":4,"836":2}}],["wss必然需要ssl证书",{"2":{"841":1}}],["wss等带ssl证书的协议",{"2":{"839":1}}],["wss协议",{"2":{"839":1}}],["wss",{"2":{"443":1,"837":1}}],["wwwform",{"2":{"832":2}}],["www",{"2":{"450":1,"565":1,"794":1,"798":7,"802":2,"832":1,"834":1,"838":1,"850":5,"856":1,"857":18}}],["worldtransformparams",{"2":{"382":1}}],["wait",{"2":{"786":1}}],["was",{"0":{"432":1}}],["wasm水印插件",{"0":{"957":1},"1":{"958":1,"959":1,"960":1,"961":1,"962":1}}],["wasm分包的大小会直接影响代码下载时长以及程序初始化编译的时间",{"2":{"726":1}}],["wasm分包检测",{"0":{"650":1},"1":{"651":1,"652":1},"2":{"639":1}}],["wasm子包加载时机过早",{"2":{"652":1}}],["wasm子包在callmain期间加载",{"2":{"652":1}}],["wasmcontentlength",{"2":{"645":1}}],["wasmcode下的wasm文件名里的md5",{"2":{"871":1}}],["wasmcodesplit",{"2":{"869":1}}],["wasmcode",{"2":{"611":1,"625":1,"866":2,"886":1}}],["wasm包下载耗时",{"2":{"645":1}}],["wasmloadcost",{"2":{"645":1}}],["wasm~=1",{"2":{"588":1}}],["wasm是强类型语言",{"2":{"588":1}}],["wasm编译需要cpu资源",{"2":{"726":1}}],["wasm编译",{"2":{"565":1,"682":1}}],["wasm代码回到初始状态",{"2":{"961":1}}],["wasm代码已是通过代码分包加载",{"2":{"815":1}}],["wasm代码下载与首包资源并行下载",{"2":{"726":1}}],["wasm代码下载和编译",{"0":{"726":1},"2":{"723":1}}],["wasm代码包下载",{"2":{"682":1}}],["wasm代码编译内存",{"0":{"578":1}}],["wasm代码分包",{"0":{"486":1}}],["wasm代码和首资源包框架会强制缓存",{"2":{"449":1}}],["wasm代码",{"2":{"449":1,"611":1,"612":1,"625":1,"627":1}}],["wasm代码未发生变化时不在进行压缩",{"2":{"153":1}}],["wasm",{"0":{"418":1,"588":1,"952":1},"2":{"86":3,"329":1,"360":1,"386":3,"402":2,"453":1,"486":4,"499":1,"519":1,"525":3,"545":1,"577":1,"586":1,"611":2,"625":2,"695":1,"716":1,"739":1,"744":5,"752":1,"777":2,"858":1,"866":3,"868":1,"883":1,"934":1,"935":1,"943":1,"949":1,"952":1,"953":1}}],["wav",{"2":{"386":1}}],["warning",{"2":{"379":1}}],["will",{"2":{"786":1}}],["win",{"2":{"499":2,"752":2}}],["windowwidth",{"2":{"932":1}}],["windowheight",{"2":{"932":2}}],["window",{"2":{"379":1,"554":1,"601":1,"661":1,"757":1}}],["windows",{"2":{"329":1,"477":1,"586":1,"661":1,"757":1}}],["withshareticket",{"2":{"561":1}}],["with",{"2":{"402":2,"404":1,"424":1,"493":1,"560":1,"786":1}}],["without",{"2":{"402":2,"493":1}}],["wide",{"2":{"377":1}}],["width是在canvas的ui",{"2":{"560":2}}],["width",{"2":{"375":3,"376":1,"377":3,"554":4,"560":6,"562":1,"813":1,"814":1,"858":2}}],["write",{"2":{"334":1,"834":2}}],["we",{"2":{"786":1}}],["webkit对webgl2的支持存在问题",{"2":{"928":1,"929":1}}],["webrequest",{"2":{"832":10}}],["webrequest设置请求头",{"2":{"183":1}}],["webassembly代码分包加载与编译",{"2":{"806":1}}],["webassembly",{"2":{"739":2,"938":1}}],["webassembly编译以及容器其他内存",{"2":{"584":1}}],["websockify做反向代理",{"2":{"837":1}}],["websockify",{"2":{"661":4,"757":4,"837":1}}],["websocketsend函数中",{"2":{"836":1}}],["websocketconstructor",{"2":{"757":1}}],["websocket",{"0":{"835":1},"1":{"836":1,"837":1},"2":{"336":1,"337":1,"475":1,"833":1,"836":4,"840":1}}],["webcontent进程内存压力会很大",{"2":{"822":1}}],["webcontent",{"2":{"567":1}}],["web",{"2":{"467":1,"552":1,"558":1,"925":1}}],["webgl较多渲染优化特性依赖webgl2",{"2":{"926":1}}],["webgl这个目录下",{"2":{"847":1}}],["webgl这部分开销是额外的",{"2":{"803":1}}],["webgl微信小游戏适配方案是以webassembly为基础",{"2":{"759":1}}],["webgl微信小游戏转换指南",{"2":{"738":1,"967":1}}],["webgl为unity导出为webgl后的资源和代码目录",{"2":{"749":1}}],["webgl胶水层适配",{"2":{"737":1}}],["webgl包自动进行br压缩",{"2":{"726":1}}],["webgl转换适配",{"2":{"742":1}}],["webgl转换的小游戏普遍存在首包资源较大的情况",{"2":{"783":1}}],["webgl转换的小游戏启动耗时",{"2":{"772":1}}],["webgl转换的小游戏兼容性与性能在不同平台的表现会有所差异",{"2":{"741":1}}],["webgl转换的小游戏主要依靠unity",{"2":{"715":1}}],["webgl转换方案的游戏通常会有这几种错误会产生",{"2":{"512":1}}],["webgl适配小游戏方案的部分上线游戏",{"2":{"698":1}}],["webgl适配小游戏的内存结构",{"0":{"565":1}}],["webgl1",{"0":{"663":1},"2":{"663":6,"665":1,"676":1}}],["webglsupport",{"2":{"661":2,"757":3}}],["webgl内存原理详解",{"2":{"637":1}}],["webgl内存结构可先参考",{"2":{"565":1}}],["webgl小游戏适配方案概述",{"0":{"736":1},"1":{"737":1,"738":1,"739":1}}],["webgl小游戏适配方案性能标准",{"0":{"607":1,"621":1},"1":{"608":1,"609":1,"610":1,"611":1,"612":1,"613":1,"614":1,"615":1,"616":1,"617":1,"618":1,"619":1,"620":1,"622":1,"623":1,"624":1,"625":1,"626":1,"627":1,"628":1,"629":1}}],["webgl小游戏可以参照的的性能评估标准",{"2":{"632":1}}],["webgl底层基于webassembly",{"2":{"631":1}}],["webgl环境的lua不支持jit",{"2":{"597":1}}],["webgl环境下的中文显示需要自定义字体",{"2":{"425":1}}],["webgl在原生的渲染api进行封装存在少量负荷带来的开销",{"2":{"587":1}}],["webgl在单首帧内无法gc",{"2":{"580":1}}],["webgl了解unity不同模块与手游app的性能差异",{"2":{"587":1}}],["webgl与app存在性能差距的最主要因素",{"2":{"587":1}}],["webgl与基于js引擎的普通h5游戏",{"2":{"586":1}}],["webgl目前不支持多线程",{"2":{"587":1}}],["webgl目录如下三个文件和目录是可能需要远程部署的资源",{"2":{"387":1}}],["webgl目录为游戏对应的webgl版本",{"2":{"386":1,"498":1}}],["webgl使用tier2",{"2":{"579":1}}],["webgl将所有代码",{"2":{"578":1}}],["webgl是单线程模型",{"2":{"599":1}}],["webgl是app手游性能的1",{"2":{"587":1}}],["webgl是以wasm虚拟机的形式运行在类浏览器环境中",{"2":{"587":1}}],["webgl是以webassebly",{"2":{"586":1}}],["webgl是以webassembly+webgl技术为基础的应用",{"2":{"565":1}}],["webgl是托管在浏览器环境中",{"2":{"573":1}}],["webgl的渲染性能",{"2":{"950":1,"967":1}}],["webgl的srp",{"2":{"605":1}}],["webgl的性能无法完全达到原生app的性能水平",{"2":{"590":1}}],["webgl的内存",{"0":{"563":1},"1":{"564":1,"565":1,"566":1,"567":1,"568":1,"569":1,"570":1,"571":1,"572":1,"573":1,"574":1,"575":1,"576":1,"577":1,"578":1,"579":1,"580":1,"581":1,"582":1,"583":1,"584":1},"2":{"593":1,"611":1,"625":1,"637":1,"967":1}}],["webgl的运行性能",{"0":{"585":1},"1":{"586":1,"587":1,"588":1,"589":1,"590":1,"591":1,"592":1,"593":1,"594":1,"595":1,"596":1,"597":1,"598":1,"599":1,"600":1,"601":1,"602":1,"603":1,"604":1,"605":1,"606":1},"2":{"484":1,"967":1}}],["webglobject",{"2":{"550":3}}],["webgl运行时是基于webassembly",{"2":{"494":1}}],["webgl游戏的加载与适配器",{"2":{"806":1}}],["webgl游戏启动会是该时间的2",{"2":{"721":1}}],["webgl游戏启动速度",{"0":{"718":1},"1":{"719":1,"720":1,"721":1,"722":1,"723":1,"724":1,"725":1,"726":1,"727":1,"728":1,"729":1,"730":1,"731":1,"732":1,"733":1,"734":1,"735":1},"2":{"482":1,"634":1}}],["webgl游戏启动速度章节我们提到过",{"2":{"466":1}}],["webgl游戏运行时以websocket连接并定期发送性能数据",{"2":{"593":1}}],["webgl游戏运行过程中",{"2":{"492":1}}],["webgl游戏通常比普通h5",{"2":{"564":1}}],["webgl模式下将会使用js模拟文件系统带来额外内存消耗",{"2":{"798":1}}],["webgl模式",{"2":{"475":1}}],["webgl模式不允许加载非源码编译的插件",{"2":{"422":1}}],["webgl导出包是基于webassembly技术运行在浏览器环境",{"2":{"737":1}}],["webgl导出形式相对于原生app应用",{"2":{"631":1}}],["webgl导出时网络需要进行改造适配",{"2":{"421":1}}],["webgl导出失败时不进行小游戏转换",{"2":{"166":1}}],["webgl启动加载需要一定时间",{"2":{"372":1,"812":1}}],["webgl",{"0":{"420":1,"430":1,"587":1,"963":1},"1":{"421":1,"422":1,"423":1,"424":1,"425":1,"426":1,"427":1,"428":1,"429":1,"430":1,"431":1,"432":1,"964":1,"965":1,"966":1,"967":1},"2":{"105":1,"324":1,"329":1,"346":1,"347":1,"350":2,"378":1,"379":1,"380":8,"386":7,"387":1,"388":1,"400":1,"430":1,"461":3,"465":1,"476":2,"484":1,"487":1,"500":1,"550":1,"565":4,"577":1,"606":3,"611":3,"625":3,"662":1,"670":1,"674":1,"717":1,"725":1,"726":1,"739":2,"744":2,"749":1,"772":1,"797":1,"804":4,"830":2,"831":1,"832":2,"833":1,"847":2,"851":3,"861":1,"925":3,"930":1,"942":1,"949":1,"963":1,"967":1}}],["webgl2",{"0":{"351":1,"603":1,"663":1,"924":1},"1":{"925":1,"926":1,"927":1,"928":1,"929":1,"930":1},"2":{"4":1,"98":1,"103":2,"258":1,"587":1,"605":1,"663":9,"665":2,"669":1,"671":2,"676":1,"754":2,"967":1}}],["wechatminigame",{"2":{"503":1}}],["wechatwasm",{"2":{"491":1,"800":1,"834":1,"838":1,"856":1}}],["wechat",{"2":{"105":1,"519":3,"525":1,"567":1,"692":1,"772":1}}],["weixinbridge",{"2":{"443":1}}],["weixin",{"2":{"105":1,"338":1,"441":2,"443":8,"461":3,"500":1,"561":1,"834":1,"838":1,"840":1}}],["wxcanvas",{"2":{"863":1}}],["wxcreatebanneradparam",{"2":{"858":1}}],["wxconvertcore",{"2":{"419":3}}],["wxtcpsocket",{"2":{"834":1}}],["wxunload",{"2":{"800":1}}],["wxunload后再次load同个assetbundle可能出现的异常",{"2":{"43":1}}],["wxuncaughtexception",{"2":{"744":1}}],["wxsdk",{"2":{"693":1}}],["wxshowopendata",{"2":{"554":1}}],["wxrender",{"2":{"554":2,"562":3}}],["wxe5a48f1ed5f544b7",{"2":{"807":1}}],["wxeditorwindow",{"2":{"499":1,"752":1}}],["wxexporterror",{"2":{"419":1}}],["wxaderrorresponse",{"2":{"858":1}}],["wxanewfiles",{"2":{"465":1,"823":1}}],["wxagame",{"2":{"443":2}}],["wxassetstexttools",{"0":{"366":1,"369":1},"1":{"367":1,"368":1,"370":1,"371":1},"2":{"360":1,"363":1,"366":1,"368":1,"369":1}}],["wxassetbundle可以减轻ios的内存压力",{"2":{"777":1}}],["wxassetbundles",{"2":{"460":1}}],["wxassetbundle兼容webgl浏览器环境",{"2":{"51":1}}],["wxassetbundle",{"2":{"49":1,"800":2}}],["wxassetbundle支持切换cdn",{"2":{"4":1}}],["wx7a727ff7d940bb3f",{"0":{"417":1}}],["wx",{"0":{"554":1,"555":1},"2":{"86":2,"278":1,"338":3,"360":1,"380":12,"381":1,"382":2,"397":1,"410":1,"443":1,"453":1,"461":1,"463":1,"469":1,"479":1,"491":8,"499":1,"500":2,"519":3,"525":1,"534":2,"541":1,"545":2,"554":2,"555":1,"556":3,"560":2,"561":4,"562":5,"601":1,"681":5,"695":1,"697":1,"752":1,"811":1,"823":1,"834":4,"838":3,"843":1,"850":2,"855":1,"856":1,"858":4,"863":1,"932":2,"933":1,"967":1}}],["540",{"2":{"956":1}}],["5403162",{"2":{"802":1}}],["54998",{"2":{"757":2}}],["5基础上",{"2":{"760":1}}],["5s",{"2":{"628":2,"629":2,"658":1}}],["5m",{"2":{"627":2}}],["5mb",{"2":{"612":2,"649":1}}],["5g上限还有较大差距就突然崩溃",{"2":{"584":1}}],["5g",{"2":{"564":1,"628":1,"942":1}}],["5f9144af9f0e32d50fb878e5256d669fa1ae6fdec77550849bfee137be995d18",{"2":{"561":1}}],["5b9ef7d7",{"2":{"464":1}}],["525ms",{"2":{"468":1}}],["52",{"2":{"464":1}}],["5以上",{"2":{"447":1}}],["593",{"2":{"744":1}}],["59",{"2":{"383":5}}],["5x5",{"2":{"347":1}}],["50万面",{"2":{"670":1}}],["5000",{"2":{"658":1}}],["50",{"2":{"220":1,"383":2,"468":1,"628":1,"629":1,"884":2,"888":2,"889":1}}],["512",{"2":{"669":1}}],["51",{"2":{"218":1,"383":2}}],["53",{"2":{"214":1,"464":1}}],["58",{"2":{"205":1}}],["58版本插件ios报错",{"2":{"203":1}}],["5导致特性开关和分包patch逻辑失效",{"2":{"111":1}}],["5",{"0":{"4":1,"188":1,"190":1,"192":1,"195":1,"350":1,"361":1,"411":1,"425":1,"438":1,"559":1,"560":1,"561":1,"573":1,"582":1,"600":1,"638":1,"789":1,"790":1,"819":1,"914":1,"949":1},"1":{"5":1,"189":1,"191":1,"193":1,"194":1,"196":1,"560":1,"561":1,"574":1,"575":1,"576":1,"915":1},"2":{"83":1,"113":1,"383":2,"588":1,"617":1,"649":1,"655":1,"669":1,"673":1,"685":1,"760":1,"864":1,"934":1}}],["兼容性问题",{"2":{"617":1}}],["兼容性",{"2":{"594":1}}],["兼容性评估",{"0":{"471":1},"2":{"470":1,"471":1,"967":1}}],["兼容浏览器环境",{"2":{"234":1}}],["兼容ios",{"2":{"109":1}}],["兼容fmod2",{"2":{"3":1}}],["兼容playdelayed播放",{"2":{"3":1}}],["2之间",{"2":{"886":1}}],["2个的camera",{"2":{"672":1}}],["2s",{"2":{"629":1}}],["2g~1",{"2":{"942":1}}],["2g机型为主",{"2":{"564":1}}],["2g",{"2":{"564":1,"628":1,"629":1,"942":1}}],["2级弱网情况时发生的回调事件",{"2":{"534":1}}],["2级",{"2":{"524":1}}],["2ms",{"2":{"468":1}}],["2105100",{"2":{"868":1,"959":1}}],["2104251",{"2":{"868":1,"959":1}}],["213ms",{"2":{"468":1}}],["21",{"0":{"112":1,"138":1,"235":1},"1":{"113":1,"139":1,"140":1,"236":1,"237":1},"2":{"168":1,"178":1,"183":1}}],["222ms",{"2":{"464":1}}],["22",{"0":{"85":1,"92":1,"110":1,"204":1,"215":1,"277":1},"1":{"86":1,"87":1,"93":1,"111":1,"205":1,"206":1,"216":1,"278":1,"279":1,"280":1},"2":{"383":1,"802":1}}],["275",{"2":{"464":1}}],["27",{"0":{"55":1,"127":1},"1":{"56":1,"57":1,"128":1,"129":1},"2":{"291":1,"383":1}}],["23",{"0":{"119":1,"275":1},"1":{"120":1,"121":1,"276":1},"2":{"53":1,"375":1,"383":4,"384":1,"665":1,"945":1}}],["25无法进入游戏",{"2":{"915":1}}],["25~2018",{"2":{"760":1}}],["25启动异常",{"2":{"158":1}}],["25",{"0":{"231":1},"1":{"232":1},"2":{"45":1}}],["247583",{"2":{"744":1}}],["24s",{"2":{"468":1}}],["24f1版本",{"2":{"468":1}}],["240",{"2":{"375":2}}],["24",{"0":{"44":1,"82":1,"195":1,"202":1,"233":1},"1":{"45":1,"46":1,"83":1,"84":1,"196":1,"203":1,"234":1},"2":{"295":1,"375":3,"383":1,"766":1,"926":1,"956":1}}],["264",{"2":{"956":1}}],["26",{"0":{"36":1,"88":1,"150":1,"192":1,"199":1,"229":1,"271":1,"303":1,"305":1},"1":{"37":1,"38":1,"89":1,"151":1,"193":1,"194":1,"200":1,"201":1,"230":1,"272":1,"304":1,"306":1},"2":{"43":1}}],["20m时",{"2":{"815":1}}],["20mb",{"2":{"649":1}}],["20s",{"2":{"628":1}}],["200个以内",{"2":{"671":1}}],["2000",{"2":{"652":1}}],["200",{"2":{"560":4,"680":1,"849":2,"858":2}}],["2019及以后版本推荐使用",{"2":{"691":1}}],["2019支持dxt等",{"2":{"342":1}}],["2019支持部分",{"2":{"342":1}}],["2019",{"2":{"342":3,"496":3,"661":1,"664":1,"757":1,"759":1,"760":4,"762":1,"804":1,"933":2}}],["2019开始已不支持设置playersettings",{"2":{"324":1}}],["2018~2020",{"2":{"826":1}}],["2018版本不支持修改dpr",{"2":{"762":1}}],["2018",{"2":{"340":1,"341":1,"468":1,"496":2,"693":1,"759":1,"760":2}}],["20",{"0":{"31":1,"39":1,"58":1,"130":1,"161":1,"238":1,"251":1,"286":1,"307":1},"1":{"32":1,"33":1,"40":1,"59":1,"60":1,"131":1,"162":1,"163":1,"164":1,"239":1,"252":1,"287":1,"308":1},"2":{"297":1,"375":1,"464":1,"491":1,"649":1}}],["2020版本",{"2":{"762":1}}],["2020版本导出的",{"2":{"102":1}}],["2020及以前",{"2":{"430":1}}],["2020支持dxt",{"2":{"342":1}}],["2020支持部分格式",{"2":{"342":1}}],["2020",{"2":{"340":1,"341":1,"342":4,"351":1,"759":1,"760":2}}],["2021以上",{"2":{"605":1}}],["2021以上可使用引擎astc",{"2":{"584":1}}],["2021才开始支持移动平台的压缩纹理",{"2":{"579":1}}],["2021均有版本支持",{"2":{"342":1}}],["2021支持多数",{"2":{"342":1}}],["2021支持",{"2":{"342":1}}],["2021增加embedded",{"2":{"258":1}}],["2021版本",{"2":{"347":1}}],["2021版本支持",{"2":{"274":1}}],["2021版本修改为默认使用external",{"2":{"224":1}}],["2021版本调整为需要手动分离symbols",{"2":{"212":1}}],["2021",{"0":{"247":1,"249":1,"251":1,"253":1,"255":1,"257":1,"260":1,"262":1,"265":1,"267":1,"271":1,"273":1,"275":1,"277":1,"281":1,"284":1,"286":1,"288":1,"290":1,"292":1,"294":1,"296":1,"298":1,"300":1,"303":1,"305":1,"307":1,"309":1,"311":1,"314":1,"316":1,"318":1,"321":1,"327":1},"1":{"248":1,"250":1,"252":1,"254":1,"256":1,"258":1,"259":1,"261":1,"263":1,"264":1,"266":1,"268":1,"269":1,"270":1,"272":1,"274":1,"276":1,"278":1,"279":1,"280":1,"282":1,"283":1,"285":1,"287":1,"289":1,"291":1,"293":1,"295":1,"297":1,"299":1,"301":1,"302":1,"304":1,"306":1,"308":1,"310":1,"312":1,"313":1,"315":1,"317":1,"319":1,"320":1,"322":1,"323":1,"324":1,"325":1,"326":1,"328":1},"2":{"218":1,"252":1,"259":1,"342":3,"351":1,"379":1,"380":1,"382":1,"384":2,"685":1,"744":1,"759":1,"760":5,"762":1,"826":1}}],["2021无需profiling",{"2":{"120":1}}],["2021编译参数增加",{"2":{"108":1}}],["2022年中版本",{"2":{"926":1}}],["202211101011",{"2":{"683":1}}],["2022",{"0":{"107":1,"110":1,"112":1,"114":1,"117":1,"119":1,"122":1,"124":1,"127":1,"130":1,"132":1,"135":1,"138":1,"141":1,"143":1,"146":1,"148":1,"150":1,"152":1,"154":1,"156":1,"159":1,"161":1,"165":1,"167":1,"169":1,"171":1,"174":1,"176":1,"179":1,"181":1,"184":1,"186":1,"188":1,"190":1,"192":1,"195":1,"197":1,"199":1,"202":1,"204":1,"207":1,"209":1,"211":1,"213":1,"215":1,"217":1,"219":1,"221":1,"223":1,"225":1,"227":1,"229":1,"231":1,"233":1,"235":1,"238":1,"240":1,"243":1,"245":1},"1":{"108":1,"109":1,"111":1,"113":1,"115":1,"116":1,"118":1,"120":1,"121":1,"123":1,"125":1,"126":1,"128":1,"129":1,"131":1,"133":1,"134":1,"136":1,"137":1,"139":1,"140":1,"142":1,"144":1,"145":1,"147":1,"149":1,"151":1,"153":1,"155":1,"157":1,"158":1,"160":1,"162":1,"163":1,"164":1,"166":1,"168":1,"170":1,"172":1,"173":1,"175":1,"177":1,"178":1,"180":1,"182":1,"183":1,"185":1,"187":1,"189":1,"191":1,"193":1,"194":1,"196":1,"198":1,"200":1,"201":1,"203":1,"205":1,"206":1,"208":1,"210":1,"212":1,"214":1,"216":1,"218":1,"220":1,"222":1,"224":1,"226":1,"228":1,"230":1,"232":1,"234":1,"236":1,"237":1,"239":1,"241":1,"242":1,"244":1,"246":1},"2":{"759":1,"760":2,"926":2}}],["2022引擎版本导出微信小游戏",{"2":{"80":1}}],["2022引擎版本导出web版本的模板",{"2":{"78":1}}],["202306292010",{"2":{"855":1}}],["202305230000",{"2":{"641":1}}],["2023年度热门休闲小程序",{"2":{"705":1}}],["2023",{"0":{"14":1,"17":1,"19":1,"22":1,"24":1,"27":1,"29":1,"31":1,"34":1,"36":1,"39":1,"41":1,"44":1,"47":1,"50":1,"52":1,"55":1,"58":1,"61":1,"63":1,"66":1,"69":1,"71":1,"74":1,"76":1,"79":1,"82":1,"85":1,"88":1,"90":1,"92":1,"94":1,"96":1,"99":1,"101":1,"104":1},"1":{"15":1,"16":1,"18":1,"20":1,"21":1,"23":1,"25":1,"26":1,"28":1,"30":1,"32":1,"33":1,"35":1,"37":1,"38":1,"40":1,"42":1,"43":1,"45":1,"46":1,"48":1,"49":1,"51":1,"53":1,"54":1,"56":1,"57":1,"59":1,"60":1,"62":1,"64":1,"65":1,"67":1,"68":1,"70":1,"72":1,"73":1,"75":1,"77":1,"78":1,"80":1,"81":1,"83":1,"84":1,"86":1,"87":1,"89":1,"91":1,"93":1,"95":1,"97":1,"98":1,"100":1,"102":1,"103":1,"105":1,"106":1},"2":{"610":1,"616":1}}],["2024",{"0":{"0":1,"2":1,"4":1,"6":1,"8":1,"11":1},"1":{"1":1,"3":1,"5":1,"7":1,"9":1,"10":1,"12":1,"13":1}}],["29",{"0":{"22":1,"66":1,"197":1,"213":1,"321":1},"1":{"23":1,"67":1,"68":1,"198":1,"214":1,"322":1,"323":1,"324":1,"325":1,"326":1},"2":{"40":1,"53":1,"108":1,"760":2}}],["2",{"0":{"11":1,"221":1,"223":1,"225":1,"227":1,"345":1,"358":1,"408":1,"422":1,"435":1,"446":1,"553":1,"554":1,"555":2,"556":1,"561":1,"570":1,"579":1,"593":1,"597":1,"635":1,"721":1,"723":1,"724":2,"725":2,"726":3,"727":2,"728":2,"729":1,"733":1,"748":1,"749":2,"750":1,"751":1,"767":1,"768":1,"769":2,"774":1,"775":2,"776":1,"777":1,"780":1,"781":1,"782":2,"786":1,"790":1,"793":1,"798":1,"803":1,"812":1,"829":1,"918":1,"922":1,"946":1},"1":{"12":1,"13":1,"222":1,"224":1,"226":1,"228":1,"346":1,"347":1,"554":1,"555":1,"556":1,"768":1,"769":1,"781":1,"813":1,"814":1,"919":1,"923":1},"2":{"6":1,"20":1,"38":1,"40":1,"43":1,"45":1,"53":3,"59":1,"62":1,"80":1,"83":1,"86":1,"125":1,"218":1,"224":1,"329":3,"336":1,"342":1,"375":1,"377":1,"380":1,"382":1,"383":3,"402":1,"430":2,"447":1,"461":1,"467":1,"468":3,"469":1,"486":1,"496":1,"534":1,"567":1,"584":1,"601":1,"617":3,"655":1,"673":2,"681":2,"683":1,"685":1,"760":3,"864":2,"925":2,"934":1}}],["28~2019",{"2":{"760":1}}],["28f1c1",{"2":{"342":1}}],["28",{"0":{"2":1,"24":1,"107":1,"135":1,"159":1,"171":1},"1":{"3":1,"25":1,"26":1,"108":1,"109":1,"136":1,"137":1,"160":1,"172":1,"173":1},"2":{"377":1}}],["普通模式与高性能模式可以无缝切换",{"2":{"946":1}}],["普通模式",{"2":{"883":1}}],["普通模式wechat",{"2":{"567":1}}],["普通更新",{"0":{"2":1,"4":1,"6":1,"8":1,"22":1,"34":1},"1":{"3":1,"5":1,"7":1,"9":1,"10":1,"23":1,"35":1},"2":{"27":1,"29":1,"31":1}}],["普通",{"2":{"1":1,"2":1,"3":3,"4":4,"5":6,"6":1,"7":1,"9":1,"10":4,"12":4,"13":1,"15":1,"18":2,"20":1,"23":1,"25":2,"26":2,"28":2,"32":1,"33":2}}],["3之后的版本来构建你的游戏",{"2":{"933":1}}],["3之前的版本对高分辨屏适配不是很好",{"2":{"933":1}}],["3到1",{"2":{"886":1}}],["3m",{"2":{"854":1}}],["3m左右最佳",{"2":{"779":1}}],["3倍以上",{"2":{"721":1}}],["3d恐龙自由捕捉",{"2":{"704":1}}],["3d游戏进行转换",{"2":{"445":1}}],["3开始支持",{"2":{"664":1}}],["3s",{"2":{"628":2,"629":1}}],["3g",{"2":{"942":2}}],["3g左右",{"2":{"584":1}}],["3g或以上机型",{"2":{"564":1}}],["37ms",{"2":{"464":1}}],["375",{"2":{"375":1}}],["3版本起已经不再内置",{"2":{"430":1}}],["3版本unity支持",{"2":{"196":1}}],["3版本unity",{"2":{"183":1}}],["39",{"2":{"383":1,"468":1,"855":1}}],["35",{"2":{"383":2,"760":1}}],["3个年限中部分版本",{"2":{"351":1}}],["36",{"2":{"342":1,"760":1}}],["3内存",{"2":{"334":1}}],["3替换规则",{"2":{"194":1}}],["3unity在ios上网络报错",{"2":{"178":1}}],["3unity服务器错误且无跨域头导致报错",{"2":{"168":1}}],["30m",{"2":{"866":1}}],["30mb",{"2":{"612":1,"627":1}}],["30mb未压缩代码需300mb运行时编译内存",{"2":{"578":1}}],["30s",{"2":{"652":1,"883":1}}],["300kb",{"2":{"725":1}}],["3000",{"2":{"646":1}}],["30000",{"2":{"641":1,"652":1}}],["300mb",{"2":{"577":1}}],["30",{"0":{"117":1,"169":1,"190":1,"249":1,"262":1,"318":1},"1":{"118":1,"170":1,"191":1,"250":1,"263":1,"264":1,"319":1,"320":1},"2":{"87":1,"523":1,"600":1,"628":1,"629":1,"858":2}}],["32位微信",{"2":{"580":1}}],["32",{"2":{"53":1,"346":1,"461":1,"464":2}}],["31普通模式unityaudio短音频适配问题",{"2":{"109":1}}],["31",{"0":{"90":1,"148":1,"188":1,"247":1,"300":1},"1":{"91":1,"149":1,"189":1,"248":1,"301":1,"302":1},"2":{"38":1}}],["34999",{"2":{"661":2,"757":2}}],["348",{"2":{"560":1}}],["34",{"2":{"20":1,"760":1,"855":1}}],["33ms",{"2":{"468":1}}],["33",{"2":{"10":1,"760":1,"884":1,"888":1}}],["38",{"2":{"6":1,"383":2,"464":1}}],["3网络超时时间设置",{"2":{"5":1}}],["3",{"0":{"0":1,"2":1,"4":1,"52":1,"213":1,"215":1,"217":1,"219":1,"348":1,"359":1,"409":1,"423":1,"436":1,"447":1,"556":1,"557":1,"567":1,"570":1,"571":2,"572":1,"573":1,"580":1,"592":1,"593":1,"594":2,"598":1,"634":1,"635":1,"636":2,"637":1,"638":1,"727":1,"729":1,"734":1,"750":1,"776":1,"779":1,"780":1,"781":1,"782":1,"783":2,"787":1,"809":1,"812":1,"815":2,"818":1,"819":1,"820":1,"947":1},"1":{"1":1,"3":1,"5":1,"53":1,"54":1,"214":1,"216":1,"218":1,"220":1,"568":1,"569":1,"574":1,"575":1,"576":1,"781":1,"810":1,"811":1,"813":1,"814":1,"816":2,"817":2},"2":{"10":1,"35":1,"53":1,"86":1,"115":1,"342":3,"379":1,"380":2,"382":1,"384":2,"461":1,"467":1,"496":1,"523":1,"528":1,"550":1,"587":1,"617":2,"658":1,"665":1,"726":1,"760":4,"925":2,"934":1}}],["44",{"2":{"956":1}}],["44572",{"2":{"744":1}}],["4出现若干渲染bug",{"2":{"950":1}}],["40",{"2":{"628":1,"629":1}}],["403ms",{"2":{"468":1}}],["496",{"2":{"580":1}}],["4g",{"2":{"564":1,"629":1}}],["414",{"2":{"560":1}}],["4lts",{"2":{"496":2}}],["4s",{"2":{"468":1,"628":1,"629":2}}],["43",{"2":{"383":1}}],["45",{"2":{"377":2,"383":1}}],["4x4",{"2":{"347":2}}],["4年大部分机型",{"2":{"341":1}}],["46ms",{"2":{"468":1}}],["463",{"2":{"468":1}}],["46",{"2":{"237":1}}],["4协议",{"2":{"87":1}}],["4",{"0":{"0":1,"197":1,"199":1,"202":1,"204":1,"207":1,"209":1,"211":1,"349":1,"360":1,"410":1,"424":1,"437":1,"558":1,"572":1,"578":1,"579":1,"580":1,"581":2,"582":1,"583":1,"599":1,"637":1,"728":1,"732":1,"733":1,"734":1,"735":2,"751":1,"777":1,"785":1,"786":1,"787":1,"802":1,"803":1,"818":1,"916":1,"948":1},"1":{"1":1,"198":1,"200":1,"201":1,"203":1,"205":1,"206":1,"208":1,"210":1,"212":1,"917":1},"2":{"342":1,"346":2,"359":2,"382":1,"468":1,"496":1,"617":1,"661":1,"668":1,"757":1,"760":6,"804":1,"864":1,"934":1,"949":2}}]],"serializationVersion":2}`;export{t as default}; diff --git a/assets/chunks/VPLocalSearchBox.Cd8eYaFt.js b/assets/chunks/VPLocalSearchBox.Cd8eYaFt.js new file mode 100644 index 00000000..9a7417e8 --- /dev/null +++ b/assets/chunks/VPLocalSearchBox.Cd8eYaFt.js @@ -0,0 +1,7 @@ +var It=Object.defineProperty;var Dt=(o,e,t)=>e in o?It(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t;var Oe=(o,e,t)=>(Dt(o,typeof e!="symbol"?e+"":e,t),t);import{Y as yt,j as oe,x as $e,aj as kt,ak as Ot,d as Rt,G as xe,al as tt,h as Fe,am as _t,an as Mt,y as Lt,ao as Pt,k as Re,S as de,R as Ee,ap as zt,aq as Vt,Z as Bt,V as $t,ar as Wt,o as ee,b as Kt,l as k,a2 as Jt,m as U,as as jt,at as Ut,au as Gt,c as re,n as rt,e as Se,E as at,F as nt,a as ve,t as pe,av as qt,p as Ht,q as Qt,aw as it,ax as Yt,a8 as Zt,ae as Xt,ay as er,_ as tr}from"./framework.CzhHXMZi.js";import{u as rr,c as ar}from"./theme.C-vFUWHO.js";const nr={root:()=>yt(()=>import("./@localSearchIndexroot.BvLnGg0E.js"),[])};/*! +* tabbable 6.2.0 +* @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE +*/var mt=["input:not([inert])","select:not([inert])","textarea:not([inert])","a[href]:not([inert])","button:not([inert])","[tabindex]:not(slot):not([inert])","audio[controls]:not([inert])","video[controls]:not([inert])",'[contenteditable]:not([contenteditable="false"]):not([inert])',"details>summary:first-of-type:not([inert])","details:not([inert])"],Ne=mt.join(","),gt=typeof Element>"u",ue=gt?function(){}:Element.prototype.matches||Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector,Ce=!gt&&Element.prototype.getRootNode?function(o){var e;return o==null||(e=o.getRootNode)===null||e===void 0?void 0:e.call(o)}:function(o){return o==null?void 0:o.ownerDocument},Ie=function o(e,t){var r;t===void 0&&(t=!0);var n=e==null||(r=e.getAttribute)===null||r===void 0?void 0:r.call(e,"inert"),a=n===""||n==="true",i=a||t&&e&&o(e.parentNode);return i},ir=function(e){var t,r=e==null||(t=e.getAttribute)===null||t===void 0?void 0:t.call(e,"contenteditable");return r===""||r==="true"},bt=function(e,t,r){if(Ie(e))return[];var n=Array.prototype.slice.apply(e.querySelectorAll(Ne));return t&&ue.call(e,Ne)&&n.unshift(e),n=n.filter(r),n},wt=function o(e,t,r){for(var n=[],a=Array.from(e);a.length;){var i=a.shift();if(!Ie(i,!1))if(i.tagName==="SLOT"){var s=i.assignedElements(),u=s.length?s:i.children,l=o(u,!0,r);r.flatten?n.push.apply(n,l):n.push({scopeParent:i,candidates:l})}else{var h=ue.call(i,Ne);h&&r.filter(i)&&(t||!e.includes(i))&&n.push(i);var d=i.shadowRoot||typeof r.getShadowRoot=="function"&&r.getShadowRoot(i),v=!Ie(d,!1)&&(!r.shadowRootFilter||r.shadowRootFilter(i));if(d&&v){var y=o(d===!0?i.children:d.children,!0,r);r.flatten?n.push.apply(n,y):n.push({scopeParent:i,candidates:y})}else a.unshift.apply(a,i.children)}}return n},xt=function(e){return!isNaN(parseInt(e.getAttribute("tabindex"),10))},se=function(e){if(!e)throw new Error("No node provided");return e.tabIndex<0&&(/^(AUDIO|VIDEO|DETAILS)$/.test(e.tagName)||ir(e))&&!xt(e)?0:e.tabIndex},or=function(e,t){var r=se(e);return r<0&&t&&!xt(e)?0:r},sr=function(e,t){return e.tabIndex===t.tabIndex?e.documentOrder-t.documentOrder:e.tabIndex-t.tabIndex},Ft=function(e){return e.tagName==="INPUT"},ur=function(e){return Ft(e)&&e.type==="hidden"},lr=function(e){var t=e.tagName==="DETAILS"&&Array.prototype.slice.apply(e.children).some(function(r){return r.tagName==="SUMMARY"});return t},cr=function(e,t){for(var r=0;r=0)c=r.activeElement;else{var f=i.tabbableGroups[0],p=f&&f.firstTabbableNode;c=p||h("fallbackFocus")}if(!c)throw new Error("Your focus-trap needs to have at least one focusable element");return c},v=function(){if(i.containerGroups=i.containers.map(function(c){var f=br(c,a.tabbableOptions),p=wr(c,a.tabbableOptions),C=f.length>0?f[0]:void 0,I=f.length>0?f[f.length-1]:void 0,M=p.find(function(m){return le(m)}),P=p.slice().reverse().find(function(m){return le(m)}),z=!!f.find(function(m){return se(m)>0});return{container:c,tabbableNodes:f,focusableNodes:p,posTabIndexesFound:z,firstTabbableNode:C,lastTabbableNode:I,firstDomTabbableNode:M,lastDomTabbableNode:P,nextTabbableNode:function(x){var $=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,K=f.indexOf(x);return K<0?$?p.slice(p.indexOf(x)+1).find(function(q){return le(q)}):p.slice(0,p.indexOf(x)).reverse().find(function(q){return le(q)}):f[K+($?1:-1)]}}}),i.tabbableGroups=i.containerGroups.filter(function(c){return c.tabbableNodes.length>0}),i.tabbableGroups.length<=0&&!h("fallbackFocus"))throw new Error("Your focus-trap must have at least one container with at least one tabbable node in it at all times");if(i.containerGroups.find(function(c){return c.posTabIndexesFound})&&i.containerGroups.length>1)throw new Error("At least one node with a positive tabindex was found in one of your focus-trap's multiple containers. Positive tabindexes are only supported in single-container focus-traps.")},y=function w(c){var f=c.activeElement;if(f)return f.shadowRoot&&f.shadowRoot.activeElement!==null?w(f.shadowRoot):f},b=function w(c){if(c!==!1&&c!==y(document)){if(!c||!c.focus){w(d());return}c.focus({preventScroll:!!a.preventScroll}),i.mostRecentlyFocusedNode=c,Ar(c)&&c.select()}},E=function(c){var f=h("setReturnFocus",c);return f||(f===!1?!1:c)},g=function(c){var f=c.target,p=c.event,C=c.isBackward,I=C===void 0?!1:C;f=f||Ae(p),v();var M=null;if(i.tabbableGroups.length>0){var P=l(f,p),z=P>=0?i.containerGroups[P]:void 0;if(P<0)I?M=i.tabbableGroups[i.tabbableGroups.length-1].lastTabbableNode:M=i.tabbableGroups[0].firstTabbableNode;else if(I){var m=ft(i.tabbableGroups,function(V){var j=V.firstTabbableNode;return f===j});if(m<0&&(z.container===f||_e(f,a.tabbableOptions)&&!le(f,a.tabbableOptions)&&!z.nextTabbableNode(f,!1))&&(m=P),m>=0){var x=m===0?i.tabbableGroups.length-1:m-1,$=i.tabbableGroups[x];M=se(f)>=0?$.lastTabbableNode:$.lastDomTabbableNode}else ge(p)||(M=z.nextTabbableNode(f,!1))}else{var K=ft(i.tabbableGroups,function(V){var j=V.lastTabbableNode;return f===j});if(K<0&&(z.container===f||_e(f,a.tabbableOptions)&&!le(f,a.tabbableOptions)&&!z.nextTabbableNode(f))&&(K=P),K>=0){var q=K===i.tabbableGroups.length-1?0:K+1,H=i.tabbableGroups[q];M=se(f)>=0?H.firstTabbableNode:H.firstDomTabbableNode}else ge(p)||(M=z.nextTabbableNode(f))}}else M=h("fallbackFocus");return M},S=function(c){var f=Ae(c);if(!(l(f,c)>=0)){if(ye(a.clickOutsideDeactivates,c)){s.deactivate({returnFocus:a.returnFocusOnDeactivate});return}ye(a.allowOutsideClick,c)||c.preventDefault()}},T=function(c){var f=Ae(c),p=l(f,c)>=0;if(p||f instanceof Document)p&&(i.mostRecentlyFocusedNode=f);else{c.stopImmediatePropagation();var C,I=!0;if(i.mostRecentlyFocusedNode)if(se(i.mostRecentlyFocusedNode)>0){var M=l(i.mostRecentlyFocusedNode),P=i.containerGroups[M].tabbableNodes;if(P.length>0){var z=P.findIndex(function(m){return m===i.mostRecentlyFocusedNode});z>=0&&(a.isKeyForward(i.recentNavEvent)?z+1