添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

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
                // 如果是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, 代码包中含有函数名体积较大, 发布前<a href="https://github.com/wechat-miniprogram/minigame-unity-webgl-transform/blob/main/Design/WasmSplit.md">使用代码分包工具</a>进行优化");
#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 相关的成员嘛

所以自己看看要不要这个函数就好了,自己有类似的逻辑就自己写,不要就删了