# SDKUtil **Repository Path**: Wnity/sdkutil ## Basic Information - **Project Name**: SDKUtil - **Description**: wechat douyin sdk util - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: unitask - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-01-22 - **Last Updated**: 2026-03-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # sdkutil ## 介绍 sdkutil 是一个基于 Unity 引擎的多平台 SDK 封装库。它通过统一的接口设计 (`ISDKUtil`),实现了对主流小游戏平台(包括微信小游戏、抖音小游戏、TapTap、鸿蒙快游戏、4399、HYKB 等)的抽象封装。开发者可以通过简单的 API 调用完成初始化、登录、分享、数据上报等功能,极大地简化了多渠道发行的接入与维护工作。 该项目不仅提供了统一的 C# 调用层,还包含完整的编辑器工具链,支持在 Unity Editor 中快速切换不同的子平台配置,并包含广告、开放数据域、字体管理等实用模块。 ## 功能特性 - **统一接口**:提供一套标准的 SDK 接口(登录、分享、支付、用户信息等),屏蔽各平台 API 差异。 - **多平台支持**:支持微信、抖音、TapTap、鸿蒙、4399、HYKB 等多个游戏发行渠道。 - **平台切换工具**:内置编辑器工具,可视化管理和切换子平台配置(SDK 设置、依赖包等)。 - **实用组件**: - `WxAd`:广告组件封装。 - `WXOpenDataImage`:支持微信小游戏开放数据域的显示。 - `VibrateMgr`:震动管理。 - `TextMeshFontRecorder`:TextMeshPro 字体录制与回退解决方案。 - **Demo 示例**:包含完整的微信登录、用户信息获取、广告展示等场景的演示代码。 ## 安装集成 1. 打开项目的 `Packages/manifest.json` 文件。 2. 在 `dependencies` 节点或 `scopedRegistries` 节点(如果需要私有包管理)中添加以下依赖: ```json "dependencies": { "com.wnity.zframework.singleton": "https://gitee.com/Wnity/zframework.git?path=Assets/zframework/Singleton", "com.wnity.zframework.coroutineutil": "https://gitee.com/Wnity/zframework.git?path=Assets/zframework/CoroutineUtil", "com.wnity.sdkutil": "https://gitee.com/Wnity/sdkutil.git?path=Assets/SDKUtil", "com.qq.weixin.minigame": "https://github.com/wechat-miniprogram/minigame-tuanjie-transform-sdk.git", ... } ``` 3. Unity 会自动拉取并安装这些包。 ## 快速开始 ### 1. 初始化与登录 SDK 的核心管理类为 `SDKMgr`,所有操作均通过 `SDKMgr.sdkUtil` 属性发起。 ```csharp using UnityEngine; using Cysharp.Threading.Tasks; using cframework.SDKUtil; public class GameManager : MonoBehaviour { async void Start() { // 1. 初始化 SDK var initResult = await SDKMgr.sdkUtil.InitSDK(); if (initResult.success) { Debug.Log("SDK 初始化成功"); // 2. 发起登录 var loginResult = await SDKMgr.sdkUtil.Login(); if (loginResult.success) { Debug.Log($"登录成功, 用户ID: {loginResult.userId}"); } } } } ``` ### 2. 分享功能 ```csharp // 分享内容配置 var shareData = new SDKShareData { title = "快来一起玩这款游戏!", query = "inviterId=10086", imageUrl = "https://example.com/share.png" }; // 发起分享 (部分平台支持回调) SDKMgr.sdkUtil.Share(shareData); ``` ### 3. 获取用户信息 SDK 提供了获取用户信息和授权的封装: ```csharp IEnumerator GetUserInfo() { // 尝试获取授权 yield return SDKMgr.sdkUtil.AuthorizeUserInfo(); // 获取用户信息 var userInfo = new SDKUtil_Wechat_Minigame.GetUserInfoResult(); yield return SDKMgr.sdkUtil.GetUserInfo(); // 注意:具体返回值需根据各平台实现和回调处理 } ``` ## 子平台管理 (SubPlatform) sdkutil 允许你针对不同的发行渠道(如微信、抖音)维护独立的配置和资源。 1. 在 Unity 编辑器菜单栏找到 **Assets -> SdkUtil -> SwitchSubPlatform**。 2. 选择你需要切换的目标平台(例如 `wechat_minigame` 或 `taptap_minigame`)。 3. 切换后,编辑器会自动备份当前配置并应用所选平台的配置。 > **注意**:子平台相关的资源文件通常位于 `Assets/subplatforms/` 目录下。 ## 进阶功能:协程返回值 (CoroutineWithResult) 为了解决异步回调带来的代码嵌套问题(Callback Hell),sdkutil 建议配合 **CoroutineWithResult** 一起使用。 使用该工具可以使协程(Coroutine)直接拥有返回值,从而让你的异步逻辑写得和同步代码一样清晰。 项目地址及用法参考:[https://gitee.com/Wnity/coroutine-with-result.git](https://gitee.com/Wnity/coroutine-with-result.git) ## 示例场景 项目中提供了一个完整的演示场景,位于: `Assets/Demo/wx_wechat.unity` 该场景演示了: - SDK 的初始化流程。 - 登录及获取用户授权。 - 广告的加载与展示。 - 开放数据域(OpenData)的交互测试。 ## 相关依赖 sdkutil 依赖于以下开源库(需在 manifest.json 中配置): - **zframework.singleton**: 单例管理模块。 - **zframework.coroutineutil**: 协程工具模块。 ## 技术支持与讨论 - **作者**: Wnity - **Gitee**: [https://gitee.com/Wnity/sdkutil](https://gitee.com/Wnity/sdkutil) - **技术交流群**: QQ 群:**951129597** (欢迎进群交流问题)