🚀 MiniGameSdk - 小游戏统一SDK

:rocket: MiniGameSdk - 小游戏统一SDK

现代化、类型安全的小游戏开发SDK,支持微信、抖音等多平台

已适配平台(必须)

H5 微信小游戏 Android原生 iOS原生 抖音小游戏 OPPO小游戏 vivo小游戏
:heavy_check_mark: :heavy_check_mark: :heavy_check_mark:

统一API,多平台兼容

  • 一套代码,多平台运行 - 支持微信小游戏、抖音小游戏、H5等平台
  • 智能平台检测 - 自动识别运行环境,无需手动配置
  • 优雅降级 - 不支持的平台自动使用模拟实现,保证代码不报错

现代化架构设计

  • 策略模式 - 每个平台都是独立实现,易于维护和扩展
  • 代理模式 - 统一的API入口,简化调用方式
  • TypeScript支持 - 完整的类型定义,开发体验极佳

开箱即用的功能

  • 广告系统 - 横幅、插屏、视频、自定义广告完整支持
  • 平台API - 分享、登录、震动、导航等常用功能
  • 前后台监听 - 监听游戏进入前后台
  • 游戏圈 - 微信游戏圈完整对接
  • 侧边栏 - 抖音侧边栏特色功能
  • 推荐组件 - 微信推荐组件完整实现

极简的使用体验

// 广告调用 - 一行代码搞定
MiniGameSdk.Advert.showVideo(adId, (result, count) => {
    if (result === AdVideoResult.ACCEPT) {
        console.log(`获得${count}个奖励`);
    }
});

// 平台API - 直接调用
MiniGameSdk.API.shareAppToFriends('来玩游戏吧!');
MiniGameSdk.API.showToast('操作成功');

// 推荐组件
await MiniGameSdk.API.showRecommend(
    () => console.log('显示成功'),
    (isRecommended) => console.log('用户操作:', isRecommended)
);

功能支持情况

:white_check_mark: 完全支持 | :arrows_counterclockwise: 模拟实现 | :x: 不支持

平台 广告 分享 登录 游戏圈 侧边栏 推荐组件 前后台监听
微信小游戏 :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :x: :white_check_mark: :white_check_mark:
抖音小游戏 :white_check_mark: :white_check_mark: :white_check_mark: :x: :white_check_mark: :x: :white_check_mark:
H5浏览器 :arrows_counterclockwise: :arrows_counterclockwise: :arrows_counterclockwise: :arrows_counterclockwise: :arrows_counterclockwise: :arrows_counterclockwise: :white_check_mark:

开发环境

  • 引擎版本: Cocos Creator 3.8.7
  • 编程语言: TypeScript

快速开始

export class GameManager extends Component {
    start() {
        // 显示横幅广告
        MiniGameSdk.Advert.loadBanner('your-ad-id', { top: 50, left: 100, width: 300 });
        MiniGameSdk.Advert.showBanner('your-ad-id');

        // 显示视频广告
        MiniGameSdk.Advert.showVideo('your-video-id', (result, count) => {
            if (result === AdVideoResult.ACCEPT) {
                // 给予奖励
                this.grantReward(count);
            }
        });
    }
}

详细文档

广告系统

横幅广告

// 加载横幅广告
MiniGameSdk.Advert.loadBanner(adId, {
    top: 50,      // 距离顶部像素
    left: 100,    // 距离左侧像素  
    width: 300    // 广告宽度
});

// 显示/隐藏
MiniGameSdk.Advert.showBanner(adId);
MiniGameSdk.Advert.hideBanner(adId);

视频广告

MiniGameSdk.Advert.showVideo(
    adId,                                    // 广告ID
    (result: AdVideoResult, count: number) => {  // 结果回调
        switch (result) {
            case AdVideoResult.ACCEPT:       // 观看完成
                console.log(`获得${count}个奖励`);
                break;
            case AdVideoResult.REJECT:       // 用户取消
                console.log('用户取消观看');
                break;
            case AdVideoResult.ERROR:        // 播放错误
                console.log('广告播放失败');
                break;
        }
    },
    this,                                    // 回调上下文
    3                                        // 最大观看次数
);

平台API

分享功能

// 分享给朋友
MiniGameSdk.API.shareAppToFriends(
    '来玩这个游戏吧!',                        // 分享标题
    'https://example.com/image.jpg',         // 分享图片
    '超好玩的小游戏',                        // 分享描述
    'from=share',                           // 查询参数
    () => console.log('分享成功')            // 成功回调
);

用户登录

MiniGameSdk.API.login((code: string, anonymousCode: string) => {
    console.log('登录码:', code);
    console.log('匿名登录码:', anonymousCode);
    // 发送到服务器进行验证
});

前后台监听

MiniGameSdk.AppVisible.watch((visible: boolean) => {
    if (visible) {
        console.log('应用进入前台');
    } else {
        console.log('应用进入后台');
    }
});

微信特色功能

游戏圈

// 创建游戏圈入口
MiniGameSdk.GameClub.create(
    GameClubIconStyle.GREEN,                 // 图标样式
    { top: 100, left: 50, width: 40, height: 40 }, // 位置和大小
    'your-openlink'                         // 游戏圈链接
);

// 显示/隐藏
MiniGameSdk.GameClub.show();
MiniGameSdk.GameClub.hide();

推荐组件

// 显示推荐组件
await MiniGameSdk.API.showRecommend(
    () => {
        // 组件显示时回调
        console.log('推荐组件显示');
    },
    (isRecommended: boolean) => {
        // 组件关闭时回调
        if (isRecommended) {
            console.log('用户推荐了游戏');
            // 给予奖励
        }
    }
);

抖音特色功能

侧边栏

// 检查侧边栏是否可用
MiniGameSdk.BytedanceSidebar.checkSideBar((available: boolean) => {
    if (available) {
        console.log('侧边栏可用');
    }
});

// 监听侧边栏触发
MiniGameSdk.BytedanceSidebar.listenFromSidebar((triggered: boolean) => {
    if (triggered) {
        console.log('用户从侧边栏进入');
        // 给予奖励
    }
});

架构设计

目录结构

sdk/
├── interfaces/           # 接口定义
│   └── IPlatformSdk.ts  # 平台SDK接口
├── base/                # 基础类
│   └── BasePlatformSdk.ts # SDK基类
├── platforms/           # 平台实现
│   ├── WechatSdk.ts    # 微信SDK
│   ├── BytedanceSdk.ts # 抖音SDK
│   └── DefaultSdk.ts   # 默认SDK
├── SdkManager.ts       # SDK管理器
├── SdkProxy.ts         # API代理
├── MiniGameSdk.ts      # 主入口
└── Main.ts            # 使用示例

说明

SDK架构图

代码示例参考**

Main.ts 文件
Main场景

高级配置

自定义平台适配

// 扩展新平台
export class CustomSdk extends BasePlatformSdk {
    get platformName(): string {
        return 'custom';
    }

    loadBanner = (adUid: string, style?: IADStyle): void => {
        // 自定义实现
    };

    // 实现其他抽象方法...
}

更新日志

v1.0.0

  • 首次发布

##技术支持

更多作品

haiyoucuv

联系作者

GitHub

公众号

购买须知

本产品为付费虚拟商品,一经购买成功概不退款,请支付前谨慎确认购买内容。

3赞

本SDK改到2.x只需要修改环境检测的地方,如果环境检测不用引擎,那么无引擎依赖性甚至可以用于其他任何支持ts/js的引擎

商店地址,小游戏统一SDK

本sdk采用策略模式,可以按接口对接自定义平台,目前sdk内对接微信和抖音两个平台

有人买吗?这要是都能赚钱看来我也要做点插件了

有人买吗?这要是都能赚钱看来我也要做点插件了

排版舒服,代码看起来赏心悦目

1赞

有人买吗?这要是都能赚钱看来我也要做点插件了

很不错 :writing_hand:

已购买,看着还不错 就是有点贵

先mark!

@wangzhe 楼主违反版规, 建议禁言

1.7 给出邮箱 / 微信 / QQ号等私人联系方式,用以售卖项目源码和美术资源的。