# SDK 调用微信 API

# 初始化

调用Unity SDK前,需要在主入口进行SDK初始化,回调后再执行主逻辑。

WX.InitSDK((int code)=> {
// 你的主逻辑
});

# 支持范围

Unity SDKWXSDK的支持大体与官网 API 文档相同。

具体支持的 API 可以查看WX.cs文件,其中有详细注释说明。

# 更新机制

新版Unity SDK会在lib.wx.api.d.ts更新后及时更新。 若基础库更新后lib.wx.api.d.ts暂未更新,开发者可参考自定义SDK调用临时调用WXSDK。 以wx.shareAppMessageToGroup为例:

using WeChatWASM;

public class ShareAppMessageToGroupOption
{
    public string title;
    public string path;
    public string imageUrl;
}

// 合适位置调用
WX.CallJSFunction("wx", "shareAppMessageToGroup", new ShareAppMessageToGroupOption
{
    title = "群任务",
});

# Unity SDK 特供API

此处列出lib.wx.api.d.ts中未列出,仅在Unity SDK中可用的API列表。

类别 函数名 备注
基础功能 InitSDK 初始化SDK
CanIUse 判断API在当前环境是否可用
SetDevicePixelRatio 设置设备像素比
CallJSFunction 调用JS函数
CallJSFunctionWithReturn 调用JS函数并获取返回值
字体 GetWXFont 获取微信字体
广告 CreateFixedBottomMiddleBannerAd 创建固定底部中间的bannerAd
社交组件 CreateMiniGameChat 创建社交组件
开放数据域 ShowOpenData 显示开放数据域Canvas
HideOpenData 显示开放数据域Canvas
音频 PreDownloadAudios 预下载音频资源
云测试 IsCloudTest 是否小游戏云测试环境
隐私协议弹窗 PrivacyAuthorizeResolve 由于C#侧无法直接返回JS绑定函数,所以新增一个API专门用于在WX.OnNeedPrivacyAuthorization的回调内调用
本地缓存 StorageSetIntSync 同wx.setStorageSync
StorageGetIntSync 同wx.getStorageSync
StorageSetStringSync 同wx.setStorageSync
StorageSetFloatSync 同wx.setStorageSync
StorageGetFloatSync 同wx.getStorageSync
StorageDeleteAllSync 同wx.clearStorageSync
StorageDeleteKeySync 同wx.removeStorageSync
StorageHasKeySync 判断本地缓存中是否包含该key
文件缓存清理 CleanAllFileCache 清理所有文件缓存
CleanFileCache 清理文件缓存
RemoveFile 删除文件
GetCachePath 获取缓存路径
性能 GetTotalMemorySize 获取当前UnityHeap总内存(峰值)
GetTotalStackSize 获取当前UnityHeap Stack大小
GetStaticMemorySize 获取当前UnityHeap静态内存
GetDynamicMemorySize 获取当前UnityHeap动态内存
GetUsedMemorySize 获取已使用UnityHeap内存大小
GetUnAllocatedMemorySize 获取未分配UnityHeap内存大小
LogUnityHeapMem 打印UnityHeap内存
GetBundleNumberInMemory 获取当前AssetBundle在JS内存中的数量
GetBundleNumberOnDisk 获取当前AssetBundle在磁盘中不可清理的数量
GetBundleSizeInMemory 获取当前AssetBundle在JS内存中的体积
GetBundleSizeOnDisk 获取当前AssetBundle在磁盘中不可清理的体积
OpenProfileStats 打开性能面板
ProfilingMemoryDump ProfilingMemory内存Dump
LogManager WriteLog 同LogManager.log
WriteWarn 同LogManager.warn
LogManagerDebug 同LogManager.debug
LogManagerInfo 同LogManager.info
LogManagerLog 同LogManager.log
LogManagerWarn 同LogManager.warn
上报 ReportUserBehaviorBranchAnalytics 分支相关的UI组件相关事件的上报
UncaughtException 异常上报
ReportGameSceneError 上报游戏自定义场景的错误信息
插件配置 SetDataCDN 设置数据CDN
SetPreloadList 设置预加载列表
启动剧情 GetLaunchOperaHandler 获取启动剧情交互句柄
其他 ReportGameStart 游戏开始运行时上报
HideLoadingPage 隐藏加载页
PreloadConcurrent 控制预载并发数
OnLaunchProgress 获取启动loader的启动数据

# 暂未支持的WXAPI

暂未支持的WXAPI中有一部分接口需要在开放数据域调用,故暂无法支持。

主类别 副类别 函数名 描述
基础 分包加载 wx.loadSubpackage 触发分包加载
转发 wx.checkHandoffEnabled 检查是否可以进行接力
wx.startHandoff 开始进行接力
界面 窗口 wx.setWindowSize 设置窗口大小
网络 WebSocket wx.sendSocketMessage 通过 WebSocket 连接发送数据
wx.onSocketOpen 监听 WebSocket 连接打开事件
wx.onSocketMessage 监听 WebSocket 接收到服务器的消息事件
wx.onSocketError 监听 WebSocket 错误事件
wx.onSocketClose 监听 WebSocket 连接关闭事件
wx.closeSocket 关闭 WebSocket 连接
数据缓存 wx.getStorage 异步获取本地缓存
wx.setStorage 异步存储本地缓存
wx.setStorageSync 同步存储本地缓存
wx.getStorageSync 同步获取本地缓存
wx.clearStorage 异步清理本地缓存
wx.clearStorageSync 同步清理本地缓存
wx.createBufferURL 创建Buffer URL
渲染 图片 wx.createImage 创建图片对象
开放接口 开放数据 wx.getFriendCloudStorage 获取同玩好友托管数据
wx.getGroupCloudStorage 获取群同玩成员游戏数据
wx.getGroupInfo 获取群信息
wx.getPotentialFriendList 获取可能对游戏感兴趣的未注册的好友名单
wx.getUserCloudStorage 获取当前用户托管数据
wx.getUserCloudStorageKeys 获取当前用户托管数据键值
wx.modifyFriendInteractiveStorage 修改好友的互动型托管数据
wx.shareMessageToFriend 给指定的好友分享游戏信息
工具 wx.encode 将字符串编码成ArrayBuffer
wx.decode 将ArrayBuffer解码成字符串

# 调用方法

Unity 版本的 API 大体与官网 API 文档的 JS 版本 API 类似,使用时可以参考。

如 JS 版的 banner 广告的调用如下:

var bannerAd = wx.createBannerAd({
    adUnitId: "xxxx",
    adIntervals: 30,
    style: {
        left: 0,
        top: 0,
        width: 600,
        height: 200,
    },
});
bannerAd.onLoad(() => {
    bannerAd.show();
});
bannerAd.onError((res) => {
    console.log(res);
});

而对于 Unity 版的调用如下:

var bannerAd = WX.CreateBannerAd(new WXCreateBannerAdParam()
{
    adUnitId = "xxxx",
    adIntervals = 30,
    style = new Style()
    {
        left = 0,
        top = 0,
        width = 600,
        height = 200
    }
});
bannerAd.OnLoad(()=> {
    bannerAd.Show();
});
bannerAd.OnError((WXADErrorResponse res)=>
{
    Debug.Log(res.errCode);
});

大体是将 JS 版中的wx替换为 Unity 版的WX,然后对应方法名首字母由小写改为大写,如createBannerAd就变为CreateBannerAd

# 基础库

# 在 Unity 中兼容低版本基础库

使用WX.CanIUse可以判断当前版本是否支持该 API(仅支持 wx),例如想要判断当前环境WX.ReportScene是否可用,可以用WX.CanIUse("ReportScene")来判断

# 开发建议

# API 示例

使用示例我们会逐渐补充到Demo, 其中 API 项目为常见使用范例,请优先查阅用法。

# 联调效率

如果开发者有简单的 JS 代码经验,建议先以 JS 方式直接修改 minigame 的 JS 代码进行调试,完成之后再使用 C# SDK 修改 Unity 工程:

  1. 只保留 game.js 前面 import 部分,其余删除,即不运行游戏逻辑。
  2. 增加以下代码:
const gl = GameGlobal.canvas.getContext("webgl");
gl.clear(gl.COLOR_BUFFER_BIT);
  1. 使用 JS 编写需要调试的 API

# 注意事项

  1. 广告接口是否需要上线后才能调试
  • 是的,需要上线并累计 UV>1000 才可以开通广告主
点击咨询小助手