欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 美食 > Unity3D 转换微信小游戏指引 03 微信SDK

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

2025/2/24 13:26:14 来源:https://blog.csdn.net/2301_76984003/article/details/140416988  浏览:    关键词: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;
#endifpublic class WXDemo : MonoBehaviour
{void Start(){
// 编辑器环境
#if UNITY_EDITORGameInit();
#else// WebGL 环境
#if UNITY_WEBGLWX.InitSDK((int code)=>{Debug.Log("微信 SDK 初始化");GameInit();});
#endif#endif}void GameInit(){Debug.Log("游戏主逻辑初始化");}
}

监听切前台或后台事件

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

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

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

模态对话框

模态对话框

消息提示框

消息提示框

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词