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 包打包时需要带 hash
github.com/wechat-mini…
文件名需要带上hash
BuildAssetBundleOptions.AppendHashToAssetBundleName
,以便清理掉该文件的旧缓存。默认32位长度,可通过导出选项中
Bundle名中Hash长度
来自定义。比如游戏自己计算了crc,可将
Bundle名中Hash长度
设置为crc长度。
2. 将 AB 包移动到项目转换后的文件夹的 webgl/StreamingAssets
github.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<int, int, string> progressUpdate = null)
查找这个函数的引用,在 Assets/WX-WASM-SDK/Editor/WXEditorWindow.cs
#if UNITY_2021_2_OR_NEWER
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, 代码包中含有函数名体积较大, 发布前<a href="https:
#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. 在微信开发者工具中能够请求到数据包,在调试模式下请求不到的原因
需要在小程序的菜单界面打开开发调试
14. The name 'WX' does not exist in the current context
using WeChatWASM;
15. The name 'Init' does not exist in the current context
主要是因为复制粘贴的官方 Demo
gitee.com/wechat-mini…
然后这里面初始化用的是
void Start()
WX.InitSDK((code) =>
Init();
于是我就无脑复制粘贴过来了
实际上这个东西,Init() 是你自己的 C# 函数,不是 WX 的,它也没有是 WX 相关的成员嘛
所以自己看看要不要这个函数就好了,自己有类似的逻辑就自己写,不要就删了