抖音小游戏 Unity SDK
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_70ac6649/douyin-mini-game-unity 到 AI 助手。
技能介绍
解决什么问题
把 Unity 项目发布成抖音小游戏,绕不开平台 API 这一层。抖音小游戏原生接口是 JavaScript 的 tt.*,Unity 侧是 C#,两边在命名空间、回调模型、生命周期管理上都对不上。直接手写桥接,光是 tt.login()、tt.checkSession()、tt.requestGamePayment() 这些接口的 C# 封装就要反复对照官方文档,还要处理宿主环境判断、API 版本兼容和权限授权检查,工程量不小且容易踩坑。
这个技能把这层桥接固化下来。基于抖音小游戏 Unity C# API 官方文档生成,要求 TTSDK >= 6.0.0,通过 TT.* 命名空间把 200 多个 tt.* 方法以 PascalCase 风格暴露给 Unity 代码,已有项目可以直接适配发布。
核心能力
- 全模块覆盖:初始化、账号、支付、广告、设备、网络、文件、UI、渲染、开放能力,每个模块对应独立参考文件(如
unity-payment、unity-ads、unity-storage) - 命名对照清晰:
tt.login()→TT.Login()、tt.requestGamePayment()→TT.RequestGamePayment()、tt.setStorage()→TT.Save(),JS 与 C# 一一对应,迁移时不易混淆 - 环境隔离:
TT.InContainerEnv区分 Editor 与真机环境,Editor 下可走 Mock,不用反复打包试真机
接入关键步骤
- 游戏启动时先调
TT.InitSDK,回调里拿到ContainerEnv和HostEnum再初始化业务逻辑 - 支付、用户信息等接口调用前,先用
TT.CheckSession确认登录态 - 监听
TT.GetAppLifeCycle().OnShow/OnHide,前台恢复游戏循环、后台暂停渲染 - 存储用
TTFileSystemManager的异步方法(非 Sync 后缀),PlayerPrefs换成TT.PlayerPrefs,原生那套在小游戏环境不可用
注意点
- 支付必须服务端验签:客户端
Success回调只代表收银台操作完成,严禁直接发道具或金币,要等服务端payment_callback验签通过后再由服务端下发 - 日志脱敏:
code、session_key、openid这类敏感值别直接Debug.Log,用#if UNITY_EDITOR || DEVELOPMENT_BUILD包住 - 调试命令进不了生产包:
RegisterCommandEvent注册的 GM 指令同样要条件编译排除 - 授权边界:录屏流程已内置
scope.screenRecord检查;位置 API 不在文档覆盖范围,需要时自行补scope.userLocation检查;传感器类(加速度计、陀螺仪)无需授权,但要按OnEnable/OnDisable管理生命周期,避免后台耗电 - 版本兼容:用
CanIUse判断 API 可用性,注意 SDK 版本变更(如 6.1.1 引入Param类替代旧参数格式)
使用场景
- 把已有 Unity 游戏发布为抖音小游戏,需要将 JavaScript 的 tt.* 接口逐个封装成 C# 调用
- 实现游戏内购,需要支付下单、服务端验签回调、客户端安全发奖的完整链路
- 接入激励视频与插屏广告,需要单实例复用、资源释放与前台恢复的生命周期处理
- 上线前做安全自查,需要确认登录凭证、用户信息等敏感数据的条件编译与日志脱敏
适合人员
- Unity 游戏客户端开发者,正在把项目适配发布到抖音小游戏平台
- 小游戏技术接入工程师,负责维护平台 API 桥接层与 SDK 版本升级
- 游戏服务端与客户端联调负责人,需要确保支付验签和回调链路安全落地