Unity3D 转换微信小游戏指引 03 微信SDK

Unity3D 转换微信小游戏指引系列(第三期)

微信SDK

初始化

首先,进行 SDK 初始化,需要引用命名空间 using WeChatWASM,调用 WX.InitSDK,在回调函数中进行游戏主逻辑的初始化。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using WeChatWASM;

public class WXDemo : MonoBehaviour
{
    void Start()
    {
        WX.InitSDK((int code)=>
        {
            Debug.Log("微信 SDK 初始化");
            GameInit();
        });
    }

    void GameInit()
    {
        Debug.Log("游戏主逻辑初始化");
    }
}

运行之后,会发现控制台打印了黄色警告。

初始化

在 Unity 编辑器中调用微信 SDK 接口,有一些是会报错的,需要加上宏定义。

测试的时候需要打包出来,在微信小游戏环境中运行。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

#if UNITY_WEBGL
using WeChatWASM;
#endif

public class WXDemo : MonoBehaviour
{
    void Start()
    {
// 编辑器环境
#if UNITY_EDITOR
        GameInit();
#else

// WebGL 环境
#if UNITY_WEBGL
        WX.InitSDK((int code)=>
        {
            Debug.Log("微信 SDK 初始化");
            GameInit();
        });
#endif

#endif
    }

    void GameInit()
    {
        Debug.Log("游戏主逻辑初始化");
    }
}

监听切前台或后台事件

切前台事件使用 OnShow 监听,切后台事件使用 OnHide 监听,只需要绑定一次监听事件。

具体返回的参数 result 可以看接口的注释。

// WebGL 环境
#if UNITY_WEBGL
        WX.InitSDK((int code)=>
        {
            Debug.Log("微信 SDK 初始化");
            GameInit();
        });

        WX.OnShow((OnShowListenerResult result)=>
        {
            Debug.Log("微信切前台事件");
        });

        WX.OnHide((GeneralCallbackResult result)=>
        {
            Debug.Log("微信切后台事件");
        });
#endif

获取系统参数

获取运行时系统的信息,例如获取系统平台(android 或 ios),有成功、失败、完成三个回调。

// WebGL 环境
#if UNITY_WEBGL
        // ...
        WX.GetSystemInfo(new GetSystemInfoOption
        {
            // 成功回调
            success = (systemInfo)=>
            {
                Debug.Log($"系统平台 {systemInfo.platform}");
            },
            // 失败回调
            fail = (generalCallbackResult)=>
            {
                Debug.Log($"获取系统信息失败,错误信息 {generalCallbackResult.errMsg}");
            },
            // 完成回调(不论成功或失败都会执行)
            complete = (generalCallbackResult)=>
            {
                Debug.Log($"获取系统信息完成,是否有错误信息 {generalCallbackResult.errMsg}");
            }
        });
#endif

询问用户授权

询问用户是否授权用户信息,先通过 WX.GetSetting 获取用户的当前设置,判断是否授权过。

若没有授权,再调用 WX.Authorize 发起授权弹窗询问,填写 scope 的参数(具体填什么参数可以参考 scope 列表)。

// WebGL 环境
#if UNITY_WEBGL
        // ...
        // 获取用户的当前设置
        WX.GetSetting(new GetSettingOption
        {
            // 成功回调
            success = (res)=>
            {
                bool hasUserInfo = res.authSetting.ContainsKey("scope.userInfo");
                // 接受过授权
                if (hasUserInfo)
                {
                    Debug.Log("用户已经接受过授权了");
                }
                // 没有接受过授权
                else
                {
                    // 发起授权询问
                    WX.Authorize(new AuthorizeOption
                    {
                        // 需要获取的权限
                        scope = "scope.userInfo",
                        // 成功回调
                        success = (generalCallbackResult)=>
                        {
                            Debug.Log($"获取授权成功,是否有错误信息 {generalCallbackResult.errMsg}");
                        },
                        // 失败回调
                        fail = (generalCallbackResult)=>
                        {
                            Debug.Log($"获取授权失败,错误信息 {generalCallbackResult.errMsg}");
                        },
                        // 完成回调(不论成功或失败都会执行)
                        complete = (generalCallbackResult)=>
                        {
                            Debug.Log($"获取授权完成,是否有错误信息 {generalCallbackResult.errMsg}");
                        }
                    });
                }
            },
            // 失败回调
            fail = (generalCallbackResult)=>
            {
                Debug.Log($"获取用户的当前设置失败,错误信息 {generalCallbackResult.errMsg}");
            },
            // 完成回调(不论成功或失败都会执行)
            complete = (generalCallbackResult)=>
            {
                Debug.Log($"获取用户的当前设置完成,是否有错误信息 {generalCallbackResult.errMsg}");
            }
        });
#endif

注:这里需要注意,如果代码里有调用授权接口,就需要到小程序官网,找到设置->基本设置->服务内容声明,填写用户隐私保护指引

如果在指定期限内没有填写,小游戏的部分功能会被限制使用。

提示框

WX.ShowModal 可以弹出一个模态对话框,附带一个确定和一个取消按钮。

WX.ShowToast 可以弹出一个消息提示框,没有按钮。

// WebGL 环境
#if UNITY_WEBGL
        WX.ShowModal(new ShowModalOption
        {
            title = "标题",
            content = "模态对话框",
            success = (res)=>
            {
                if (res.confirm)
                {
                    Debug.Log("点击了确定按钮");
                    WX.ShowToast(new ShowToastOption
                    {
                        title = "消息提示框"
                    });
                }
                else if (res.cancel)
                {
                    Debug.Log("点击了取消按钮");
                }
            }
        });
#endif

模态对话框

模态对话框

消息提示框

消息提示框

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Unity接入微信小游戏登录SDK需要进行以下步骤: 1. 下载微信小游戏登录SDK:首先,从微信开放平台下载微信小游戏登录SDKUnity插件,该插件包含了与微信小游戏服务器通信所需的脚本和配置文件。 2. 导入SDK插件:打开Unity项目,在Assets菜单中选择“Import Package” -> “Custom Package”,选择刚下载的微信小游戏登录SDK插件进行导入。 3. 配置游戏参数:在Unity编辑器中,在“Project”视图下找到WXEntryMenu,并打开进行配置。在配置中,要填写自己的微信小游戏AppID和AppSecret等参数。 4. 创建登录按钮:在Unity场景中,创建一个按钮对象,并添加一个脚本用于处理微信小游戏登录逻辑。在该脚本的代码中,调用微信小游戏登录SDK的接口,实现登录功能。 5. 处理登录回调:微信小游戏登录SDK提供了登录结果回调函数,开发者需要在自己的脚本中进行处理。根据回调结果,可以获取到用户的openid、unionid等信息,进一步进行后续操作。 6. 测试登录功能:在Unity编辑器中,点击运行按钮,启动游戏。在游戏中点击登录按钮,会调起微信小游戏客户端进行登录。登录成功后,可以获取到用户的登录信息,并进行相应的游戏逻辑处理。 以上就是Unity接入微信小游戏登录SDK的基本步骤。开发者按照这些步骤进行操作,即可实现微信小游戏的登录功能,并在游戏中使用微信登录。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值