[Unity] Unity WebGL 转微信小游戏开发配置与各种坑 | 您所在的位置:网站首页 › assets文件夹和static文件夹有什么区别 › [Unity] Unity WebGL 转微信小游戏开发配置与各种坑 |
官方资料
官方流程: github.com/wechat-mini… 官方指南: github.com/wechat-mini… 个人总结 1. 注册微信公众平台账号,在其中申请小游戏类目注意不是微信开放平台而是微信公众平台! 如果先注册错成了微信开放平台就会浪费一个邮箱 微信公众平台: mp.weixin.qq.com/ 快速上手 注册一个小游戏帐号: developers.weixin.qq.com/minigame/de… 即使基础信息没填完整,最终也可以拿到一个 appid 2. 在微信公众平台开启 成长-能力地图-生产提效包-快适配 3. 下载 Unity, Unity WebGL Support, Unity 微信小游戏插件,Node.js,微信开发者工具(稳定版 Stable Build)都在官方指南中下载安装 Unity, Unity WebGL Support 使用它推荐的版本: github.com/wechat-mini… Unity 微信小游戏插件,Node.js: github.com/wechat-mini… 微信开发者工具: developers.weixin.qq.com/miniprogram… 4. 将 Unity 项目 Build Setting 转换成 WebGL 5. 中文字体不能使用 Unity 默认字体,需要改成自己的字体github.com/wechat-mini… WebGL环境下的中文显示需要自定义字体,打包在首资源包或Bundle;请尽量使用2~3MB以内的精简字体以免影响游戏启动速度 6. 在 Build Setting 中只保留第一个场景其他场景用 AA 或者 AB 加载 7. 如果手动管理 AB 包 1. AB 包打包时需要带 hashgithub.com/wechat-mini… 文件名需要带上hash BuildAssetBundleOptions.AppendHashToAssetBundleName,以便清理掉该文件的旧缓存。默认32位长度,可通过导出选项中Bundle名中Hash长度来自定义。比如游戏自己计算了crc,可将Bundle名中Hash长度设置为crc长度。 2. 将 AB 包移动到项目转换后的文件夹的 webgl/StreamingAssetsgithub.com/wechat-mini… AssetBundle和Addressables资源目录。 如果是用的AA,构建时默认打包到StreamingAssets目录下。但如果是用的AB,或者自定义了bundle的生成目录,需要将bundle移动到StreamingAssets目录 8. 如果使用 Addressable 1. Addressable 配合 WebGL 可能出现 Shader 丢失的问题我之前在构建的时候遇到了 Shader 丢失的问题,做了记录: juejin.cn/post/722737… 解决方法就是像我这篇记录中写的那样,用 Shader.Find() 再把 Shader 找回来,赋给材质 9. Unity 导出小游戏设置中的首包资源加载方式改为“小游戏包内”首包比较小的话可以不用 cdn 10. 使用微信云托管作为 CDN如果有自己的 CDN 的话可以忽略这步了…… 像我这种啥也不懂,没碰过服务器的,就用微信提供的简单的把 首先登录到微信云托管,用小程序账号登陆,选一个环境配置 要拖动什么文件到微信云托管中,参看: github.com/wechat-mini… 微信云托管官方关于存储能力的教程: developers.weixin.qq.com/community/b… 假设你现在想知道 Unity 导出小游戏设置中的 CDN 填什么 你可以先点一个文件,看他的下载地址 比如我这里就是创建了一个 version_test 文件夹,然后把导出的小游戏的资源包放在这里 https://70...56.tcb.qcloud.la/version_test/StreamingAssets/aa/catalog.json?sign=... 复制代码那么 Unity 导出小游戏设置中的 CDN 填 https://70...56.tcb.qcloud.la/version_test 前面是跟你的 环境 prod 相关的,后面加上了 tcb.qcloud.la 11. 修改 Unity 微信小游戏插件对 Node.js 路径的引用如果现在用微信小游戏插件转换的话,会有报错说找不到 Node.js 点开报错,点击 Assets/WX-WASM-SDK/Editor/UnityUtil.cs:300 打开该脚本 这时会弹到 Assets/WX-WASM-SDK/Editor/UnityUtil.cs public static System.Diagnostics.Process CreateCmdProcess(string cmd, string args, string workdir = null) 复制代码查找这个函数的引用,在相同文件中找到 public static string RunCmd(string cmd, string args, string workdir = null, Action progressUpdate = null) 复制代码查找这个函数的引用,在 Assets/WX-WASM-SDK/Editor/WXEditorWindow.cs #if UNITY_2021_2_OR_NEWER // 如果是2021版本,官方symbols产生有BUG,这里需要用工具将embedded的函数名提取出来 var nodePath = WeChatWASM.UnityUtil.GetNodePath(customNodePath); var path = "Assets/WX-WASM-SDK/Editor/Node"; WeChatWASM.UnityUtil.RunCmd(nodePath, string.Format($"--experimental-modules dump_wasm_symbol.mjs "{dst}""), path); UnityEngine.Debug.LogError($"Unity 2021版本使用Embeded Symbols, 代码包中含有函数名体积较大, 发布前使用代码分包工具进行优化"); #endif 复制代码将这里的 nodePath 的值改为自己的 Node.js 的可执行文件的路径, 例如: var path = @"D:\Work\NodeJs\node.exe"; 复制代码然后再点击“导出 WEBGL 并转换为小游戏(常用)”,应该就可以了 如果还是报错的话,如果是刚刚下载安装 Node.js,可以重启电脑,然后再开工程,转换,应该就可以了 之后我更新了微信小游戏插件,发现我不用再改一次 node.js 的路径依然可以运行 果然我觉得还是因为我第一次装 node.js 没有重启电脑的锅,一般来说这个插件是可以根据环境变量找到 node.js 的 12. 如果要使用开放数据域功能,需要开通权限如果在转换小游戏插件里面勾选了好友关系链的功能,在微信开发者工具的预览界面里就会报错 类似的帖子 developers.weixin.qq.com/community/d… 具体解决方法就是开通开放数据与渲染的权限 mp.weixin.qq.com/wxopen/plug… 13. 在微信开发者工具中能够请求到数据包,在调试模式下请求不到的原因需要在小程序的菜单界面打开开发调试 |
CopyRight 2018-2019 实验室设备网 版权所有 |