Skip to content

docs: SDK文档更新 #1000

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
May 19, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 7 additions & 9 deletions Design/CustomSDK.md
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
# 自定义SDK调用
微信SDK提供了`WX.CallJSFunction`与`WX.CallJSFunctionWithReturn`接口实现了简单的第三方SDK调用,支持可序列化为JSON的**任意数量的参数**与**返回值**。
微信SDK提供了`WX.CallJSFunction`与`WX.CallJSFunctionWithReturn`接口实现了简单的第三方SDK调用,支持可序列化为JSON的**任意数量的参数**与**返回值**。

其中,JS侧的实际调用逻辑为`GameGlobal.sdkName.functionName(args)`,所以在调用之前需要保证SDK位于`GameGlobal`下且SDK中含有该名称的function
其中,JS侧的实际调用逻辑为`GameGlobal.sdkName.functionName(args)`,所以在调用之前需要保证**SDK位于`GameGlobal`下**且**SDK中含有该名称的函数**

在`WX.CallJSFunctionWithReturn`中,会将函数返回值转换为JSON后传回,若无返回值则传回`""`。
在`WX.CallJSFunctionWithReturn`中,会将函数返回值转换为JSON后传回,若无返回值则传回`""`。

如需更加复杂的调用,可参考[WebGL:与浏览器脚本交互](https://docs.unity3d.com/cn/2018.4/Manual/webgl-interactingwithbrowserscripting.html)进行自定义定制。
如需更加复杂的调用,可参考[WebGL:与浏览器脚本交互](https://docs.unity3d.com/cn/2018.4/Manual/webgl-interactingwithbrowserscripting.html)进行自定义定制。

## 版本要求
`转换插件 >= 202406062127`

## 代码示例

​ 示例中的"sdk""testFunction"、TestFunctionOption仅作为演示,实际使用中请自行更改。
- CS侧调用(`"sdk"`、`"testFunction"`、`TestFunctionOption`仅作为演示,请依实际情况更改)

```csharp
WeChatWASM.WX.CallJSFunction("sdk", "testFunction", new TestFunctionOption
Expand All @@ -35,11 +35,9 @@ WeChatWASM.WX.CallJSFunction("sdk", "testFunction", new TestFunctionOption
});
```

另外,在js侧代码中合适位置添加以下代码,可配合[构建模版能力](https://wechat-miniprogram.github.io/minigame-unity-webgl-transform/Design/BuildTemplate.html)使用。
- JS侧挂载SDK(`"sdk"`、`sdk`仅作为演示,请依实际情况更改)
可配合[构建模版能力](https://wechat-miniprogram.github.io/minigame-unity-webgl-transform/Design/BuildTemplate.html)使用。

```js
GameGlobal["sdk"] = sdk;
```



120 changes: 114 additions & 6 deletions Design/WX_SDK.md
Original file line number Diff line number Diff line change
@@ -1,16 +1,125 @@
# SDK 调用微信 API

将 WX-WASM-SDK 这个目录拷贝至 unity 工程 Assets 目录下,在主入口初始化,回调后再执行你的主逻辑
## 初始化

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

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

API 可以直接看`WX.cs`这个文件,里面有`详细注释说明`。
## 支持范围

本`Unity SDK`对`WXSDK`的支持大体与[官网 API 文档](https://developers.weixin.qq.com/minigame/dev/api/)相同。

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

### 更新机制

新版`Unity SDK`会在[lib.wx.api.d.ts](https://github.com/wechat-miniprogram/minigame-api-typings/blob/master/types/wx/lib.wx.api.d.ts)更新后及时更新。若基础库更新后[lib.wx.api.d.ts](https://github.com/wechat-miniprogram/minigame-api-typings/blob/master/types/wx/lib.wx.api.d.ts)暂未更新,开发者可参考[自定义SDK调用](./CustomSDK.md)临时调用WXSDK。

### Unity SDK 特供API

此处列出[lib.wx.api.d.ts](https://github.com/wechat-miniprogram/minigame-api-typings/blob/master/types/wx/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 文档](https://developers.weixin.qq.com/minigame/dev/api/)的 JS 版本 API 类似,使用时可以参考。

本 Unity 的 SDK 的 API 大体与[官网 API 文档](https://developers.weixin.qq.com/minigame/dev/api/)的 JS 版本 API 类似,使用时可以参考之。
如 JS 版的 banner 广告的调用如下:

```js
Expand Down Expand Up @@ -69,9 +178,9 @@ bannerAd.OnError((WXADErrorResponse res)=>

## 开发建议

### Demo API 示例
### API 示例

使用示例我们会逐渐补充到[Demo](https://github.com/wechat-miniprogram/minigame-unity-webgl-transform/tree/main/Demo), 其中 API 项目为常见到使用范例,请优先查阅用法。
使用示例我们会逐渐补充到[Demo](https://github.com/wechat-miniprogram/minigame-unity-webgl-transform/tree/main/Demo), 其中 API 项目为常见使用范例,请优先查阅用法。

### 联调效率

Expand All @@ -92,4 +201,3 @@ gl.clear(gl.COLOR_BUFFER_BIT);
1. 广告接口是否需要上线后才能调试

- 是的,需要上线并累计 UV>1000 才可以开通广告主

Loading