Unity转微信小游戏 HybridCLR + YooAsset 实践

文档

参考链接:https://github.com/wechat-miniprogram/minigame-unity-webgl-transform?tab=readme-ov-file

环境

Unity 2021.3.15f1c1
Unity 2021.2.5f1c302 wxSDK

HybridCLR 5.0.0
YooAsset 1.5.7

CDN环境配置:

后台配置白名单

这里有一个很重要的点,白名单配置一定要是 https 不能是 http
无论是 微信开发工具、UnityEditor、模拟器和真机调试 都不会进行 域名校验,但是一但到了体验版和正式发布版就会进行。如果没有正确配置 https 域名,在体验版中就会出现
downloadFile:fail url not in domain list 报错
打开 vConsole 工具之后则会成功进入,原因是微信认为你在调试所以又去掉了校验步骤。

YooAssets

微信小游戏注意事项:
不支持同步加载。
不支持资源加密。
不支持多Package
关闭WebGL本地缓存
参考地址
因为微信小游戏平台的特殊性,需要关闭WebGL的缓存系统,使用微信自带的缓存系统。
YooAssets.SetCacheSystemDisableCacheOnWebGL();
注意:一定要禁止微信对资源清单版本文件进行缓存(文件名称样例:PackageManifest_xxx.version)
注意:如果未调用该方法,微信小游戏有内存崩溃的风险!

针对微信对于文件缓存的设置方法看这里:资源缓存
我当前使用YooAssets 所以设置忽略 .version

初始化不能使用 单机运行模式,联机运行模式

只能使用 WebGL运行模式
具体请看:https://www.yooasset.com/docs/guide-runtime/CodeTutorial1

不然会提示:

xception: HostPlayMode can not support WebGL plateform ! Please use WebPlayMode
  at YooAsset.ResourcePackage.CheckInitializeParameters (YooAsset.InitializeParameters parameters) [0x00000] in <00000000000000000000000000000000>:0 

屏幕适配

屏幕信息可以通过 WX.GetSystemInfo(option); 接口获取到

关键是获取到之后如何使用。
适配相关的有3个参数,
SystemInfo.screenWidth
SystemInfo.screenHeight
SystemInfo.safeArea

如下图所示,屏幕坐标和 unity 不同,unity 中 ScreenHeight 是从下到山是 y 正方向,而微信中是 从上到下是 y 正方向。适配时候需要注意换算
请添加图片描述

问题

1、引擎选择
2、导出设置

转换插件不能勾选 IL2CPP Optimize Size,勾选会导致 自动设置为 Faster (smaller) builds,导致报错。

3、StreamingAssets

Unity 转微信小游戏,使用的事 WebGL 平台,此平台下的StreamingAssets 目录不会随着打包自动进入包体。需要使用动态资源加载 aa、ab、yoo 等等方式加载。

AOT 补充元数据的过程不能再使用离线模式,只能使用正式模式或者直接放入 Resources 中加载,但是要注意放入 Resources 中会增加首包大小。

4、代码里不能使用Thread类,Task.Delay 之类的方法需要换成其他方法,我这里有自己写的 job.make 使用携程替换。

注意:
YooAsset 的同步加载方法LoadAssetSync 也不能用,因为其内部使用了Thread 的方式。

使用后报错:
WaitForAsyncComplete failed ! WebGL platform not support sync load method !

至此所有程序代码在微信开发者工具中正常启动运行,可以上传成功。

5、出现报错,程序遇到错误
在这里插入图片描述

打开日志查看:点三次下方的"unity logo"

如果在开发环境下都正常运行,到了体验版本则出现上述错误,则注意检查上传过程,如果上传以后出现提示,xxx.webgl.wasm.code.xxx 未上传

则有可能和博主出现了同样的原因,这个时候重启开发工具再次上传,之前未上传提示消失,则问题解决。

6、关于日志查看
官方日志

如何在真机上进行调试和错误日志排查
方式1:game.js增加代码"wx.setEnableDebug({enableDebug: true})"
方式2:真机环境中,右上角"…“-打开调试-重启小游戏-vconsole
上述方法之后,若启动封面无法打开vconsole, 请点三次下方的"unity logo”
错误日志中的业务代码堆栈分析可参考文档 开发错误调试与排查

  • 21
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值