微信游戏圈目前不再依赖 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开始支持。


    之后就可以真机测试在微信小游戏中打开微信游戏圈了。

    Logo

    技术共进,成长同行——讯飞AI开发者社区

    更多推荐