- 请注册小程序appid,并申请为小游戏服务类目
- 请参考小游戏开发者文档-注册一个小游戏帐号
- 打开导出目录/minigame文件夹而不是导出的根目录
- 请使用微信开发者工具-预览-二维码/自动预览
- 切勿使用微信开发者工具的"真机调试"功能
- 方式1:game.js增加代码"wx.setEnableDebug({enableDebug: true})"
- 方式2:真机环境中,右上角"..."-打开调试-重启小游戏-vconsole
- 上述方法之后,若启动封面无法打开vconsole, 请点三次下方的"unity logo"
- 错误日志中的业务代码堆栈分析可参考文档 开发错误调试与排查
- 请勿修改PlayerSettings的压缩选项,保持为不压缩
- 转换工具对代码包自动进行br压缩
- 资源包请使用CDN gzip/br, 传输大小与zip压缩后体积相当
- 原因是收集函数不够完备,查看分包工具是否有新收集函数,重新生成一轮即可
- 该提示仅在开发版本提示,代表在“引擎+业务首场景”初始化时遇到了缺失函数
- 请将首资源包放CDN或HTTP服务器,并正确设置导出面板的“游戏资源CDN“
- 请参考文档网络通信适配,尤其关注安全域名、跨域与SSL证书等问题
- 请前往mp后台-能力地图-生产提效包-快适配,开通使用。参考指引转换工具导出微信小游戏
- 微信开发者工具域名被屏蔽,参照指引放开域名限制微信开发者工具域名列表
Q:
A: 新版导出插件使用小游戏插件来渲染关系链数据,因此需要添加插件。可通过微信开发者工具控制台-添加插件的报错信息添加插件,即可正常使用。同时需要注意实际未使用关系链数据时请删掉game.json中plugins.Layout配置。如果开发者工具控制台没有添加插件的入口请手动在MP端添加插件或者升级至最新版本的开发者工具。
- 堆栈信息,主要用于错误调试与异常排查
- 除在微信小游戏转换工具面板配置导出外,微信SDK工具支持开发者自行实现构建,基于
WXConvertCore.cs
脚本提供的DoExport()
方法实现导出,参考代码如下:
if (WXConvertCore.DoExport() == WXConvertCore.WXExportError.SUCCEED) {
Debug.Log("成功");
//... 后续操作
} else {
Debug.LogError("失败");
}
- 不行,WebGL导出时网络需要进行改造适配,请参考文档网络通信适配
- WebGL模式不允许加载非源码编译的插件,需游戏自行排查
- 典型地,如System.Net、lua外部模块、某些依赖平台的第三方插件
- 如果是资源(比如AssetBundle)需要进行缓存, 适配插件已自动完成,注意bundle命名规则和缓存策略即可,请参考文档资源部署与缓存
- 如果是玩家存档,可使用C# SDK中的小游戏存储接口。此外,更建议使用服务器或云开发进行定期存储,因为微信用户更容易删除小程序,文件存储将随之被删除。
- 可以,请参考我们提供的C# SDK写法,原理也是利用到了JS与C#互通的特性。具体方式请参考Unity官方文档Interaction with browser scripting
- WebGL环境下的中文显示需要自定义字体,打包在首资源包或Bundle;请尽量使用2~3MB以内的精简字体以免影响游戏启动速度
- 可以,但具体性能需自己实际评测,请参照Demo示例。
- lua可使用AssetBundle方式整体打包,require时使用bundle.LoadAsset同步接口获取脚本
- 请将WXTouchInputOverride.cs附加到EventSystem对象上,已测试EasyTouch、UGUI、FairGUI可正常工作
- 默认导出未webgl1, 请确认游戏是否依赖webgl2(opengles3.0)
- 导出选项勾选webgl2实验能力
- 支持,目前微信小游戏已支持fmod转换的小游戏
-
报错原因:Unity 2020及以前(如2019)版本构建 WebGL 仍然需要 Python2 ,而Mac OS 12.3版本起已经不再内置 Python2。
-
一种解决办法:
(1)前往 python 官网下载对应的 python2.7.dmg 安装包直接进行安装;
(2)在 Unity 工程目录任意位置创建
.cs
脚本文件,内容如下:#if UNITY_EDITOR using UnityEditor; using UnityEditor.Build; using UnityEditor.Build.Reporting; using UnityEngine; public class PreBuildProcessing : IPreprocessBuildWithReport { public int callbackOrder => 1; public void OnPreprocessBuild(BuildReport report) { System.Environment.SetEnvironmentVariable("EMSDK_PYTHON", "/Library/Frameworks/Python.framework/Versions/2.7/bin/python"); } } #endif
其中 Python 路径请自行检查,若由步骤(1)方式安装的一般无需改动,至此问题解决。
- 建议勾选并设置为High, 如果发现部分代码被错误裁剪,请参考托管代码剥离
- 请参考小游戏输入法API进行适配,示例API Demo
- 请参考文档iOS高性能模式QA部分
- 请参考文档iOS高性能模式概述部分
- 不行,不提供内嵌webview或跳转的能力
- 不行,小游戏支持视频播放能力,但暂无法直接使用VideoPlayer。请参考小游戏开发者文档以及示例Video Demo
- Application.targetFrameRate默认使用timer控制帧率,会导致不平滑,定时不精确
- 请更换接口WX.SetPreferredFramesPerSecond限制小游戏
- 转换方案已通过WebAudio支持Unity音频,通常无需替换
- 使用小程序云开发或自建服务器进行云端存储(推荐,因本地存储的话,由于微信环境下玩家非常容易删除本地小游戏而导致存档丢失)
- 使用WX C# SDK提供的PlayerPref进行存储,可以替代已有Unity的PlayerPref。但需要注意该部分数据使用小游戏Storage,有10MB存储上限。 由于接口是同步调用(阻塞游戏线程),不建议频率过高的调用。“存储“请参考https://developers.weixin.qq.com/minigame/dev/guide/base-ability/storage.html
- 使用WX C# SDK的文件API进行自行本地存储,他会与游戏资源缓存共用“文件系统”区域,有200MB存储上限,建议使用异步接口以不影响主线程帧率。“文件系统”请参考https://developers.weixin.qq.com/minigame/dev/guide/base-ability/file-system.html
- 总体而言,尽量使用云端存储。对于少量数据可以采用后两种方式,缺点是用户删除本地小游戏则记录丢失,同时要注意避免频繁的同步接口调用。
- 个别微信接口(比如订阅消息WX.RequestSubscribeMessage)需要在Touch回调才能被使用,而Unity大部分的UI解决方案都是延迟到下一帧才执行UI事件回调。因此需要开发者手动调用OnTouch监听,在回调内使用这类API。