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

2024-06-13 1202阅读

文档

参考链接: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 :0 

屏幕适配

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

关键是获取到之后如何使用。

适配相关的有3个参数,

SystemInfo.screenWidth

SystemInfo.screenHeight

SystemInfo.safeArea

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

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

问题

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转微信小游戏 HybridCLR + YooAsset 实践

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

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

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

6、关于日志查看

官方日志

如何在真机上进行调试和错误日志排查

方式1:game.js增加代码"wx.setEnableDebug({enableDebug: true})"

方式2:真机环境中,右上角"…“-打开调试-重启小游戏-vconsole

上述方法之后,若启动封面无法打开vconsole, 请点三次下方的"unity logo”

错误日志中的业务代码堆栈分析可参考文档 开发错误调试与排查

VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]