微信游戏圈目前不再依赖 gameClubButton而使用新接口wx.createPageManager()实现跳转。但是当前的微信小游戏UnitySDK还没有适配wx.createPageManager(),我们需要通过自定义接口实现调用。步骤如下:
在Assets/Plugins目录下新建wx.jslib文件,名字可以自定义,添加以下代码:
mergeInto(LibraryManager.library, {
WX_CreatePageManager: function() {
window.WXWASMSDK.WX_CreatePageManager();
},
});
新建一个cs类,添加以下代码:
using System.Runtime.InteropServices;
public class WxUtils
{
[DllImport("__Internal")]
private static extern void WX_CreatePageManager();
public static void CreatePageManager()
{
WX_CreatePageManager();
}
}
在Unity层可以直接调用CreatePageManager方法。
打包微信小游戏,导出微信小游戏工程:
注明[DllImport("__Internal")]之后,在打包微信小游戏之后,可以在微信小游戏工程目录中的webgl.wasm.symbols.unityweb文件中找到WX_CreatePageManager方法。
在微信小游戏工程中的unity-sdk目录下创建wxutils.js文件:
export default {
// 游戏圈
WX_CreatePageManager(){
const pageManager = wx.createPageManager();
pageManager.load({
openlink: 'xxxxxxx-xxxxxx', // 由不同渠道获得的OPENLINK值
}).then((res) => {
// 加载成功,res 可能携带不同活动、功能返回的特殊回包信息(具体请参阅渠道说明)
console.log("[wxutils]"+res);
// 加载成功后按需显示
pageManager.show();
}).catch((err) => {
// 加载失败,请查阅 err 给出的错误信息
console.error("[wxutils]"+err);
})
}
}
openlink处填入自己项目的OPENLINK值。
在unity-sdk/index.js中引入wxutils.js:
import wxutils from './wxutils';
设置微信小程序基础库版本:
wx.createPageManager()是微信小程序基础库3.6.7开始支持。
之后就可以真机测试在微信小游戏中打开微信游戏圈了。