[Unity] Unity WebGL 转微信小游戏开发配置与各种坑 您所在的位置:网站首页 assets文件夹和static文件夹有什么区别 [Unity] Unity WebGL 转微信小游戏开发配置与各种坑

[Unity] Unity WebGL 转微信小游戏开发配置与各种坑

2023-05-04 15:24| 来源: 网络整理| 查看: 265

官方资料

官方流程:

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 包打包时需要带 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

图片.png

10. 使用微信云托管作为 CDN

如果有自己的 CDN 的话可以忽略这步了……

像我这种啥也不懂,没碰过服务器的,就用微信提供的简单的把

首先登录到微信云托管,用小程序账号登陆,选一个环境配置

要拖动什么文件到微信云托管中,参看:

github.com/wechat-mini…

微信云托管官方关于存储能力的教程:

developers.weixin.qq.com/community/b…

假设你现在想知道 Unity 导出小游戏设置中的 CDN 填什么

你可以先点一个文件,看他的下载地址

图片.png

比如我这里就是创建了一个 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 打开该脚本

image.png

这时会弹到 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. 在微信开发者工具中能够请求到数据包,在调试模式下请求不到的原因

需要在小程序的菜单界面打开开发调试

image.png



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有