有小伙伴需要这类东西所以下午写了一个这个插件
下载地址
gdap文件内容:
[config]
name=“GodotAntiAddiction”
binary_type=“local”
binary=“GodotAntiAddiction.1.0.0.release.aar”
[dependencies]
添加导出模板,导出勾选:

初始化插件:
if Engine.has_singleton("GodotAntiaddiction"):
singleton2 = Engine.get_singleton("GodotAntiaddiction")
singleton2.connect("InitResult",self,"_InitResult")
singleton2.connect("CheckPayLimitResult",self,"_CheckPayLimitResult")
信号具体返回内容可以自行测试
_InitResult(code:Int,data:String)
_CheckPayLimitResult(data:String)
1.初始化SDK:
singleton2.init(gameIdentifier ,useTimeLimit ,usePaymentLimit ,showSwitchAccount )
参数说明
gameIdentifier
是游戏的 Client ID
,可以在控制台查看(开发者中心 > 你的游戏 > 游戏服务 > 应用配置)。
useTimeLimit
是否启用时长限制功能。如果使用这个功能,需要上报游戏时长。
usePaymentLimit
是否启用消费限制功能。如果使用这个功能,需要检查消费上限。
showSwitchAccount
是否显示切换账号按钮。如果游戏没有切换账号功能,可以在初始化阶段配置隐藏切换账号按钮;如果游戏选择显示切换账号按钮(如下图所示),玩家点击之后会触发 1001
回调,游戏可根据这个回调 code 做相应处理。

回调类型 | code | 触发逻辑 | 附带信息 |
CALLBACK_CODE_LOGIN_SUCCESS | 500 | 玩家登录后判断当前玩家可以进行游戏 | 无 |
CALLBACK_CODE_NIGHT_STRICT | 1030 | 未成年玩家当前无法进行游戏 | 有 |
CALLBACK_CODE_OPEN_ALERT_TIP | 1095 | 未成年允许游戏弹窗 | 有 |
CALLBACK_CODE_LOGOUT | 1000 | 退出账号 | 无 |
CALLBACK_CODE_REAL_NAME_STOP | 9002 | 实名过程中点击了关闭实名窗 | 无 |
CALLBACK_CODE_SWITCH_ACCOUNT | 1001 | 点击切换账号按钮(v1.0.2 新增) | 无 |
防沉迷授权
SDK 支持两种防沉迷授权方式:
使用 TapTap 快速认证,传入玩家的唯一标识和 TapTap 的鉴权信息,TDS 云端会根据相应玩家在 TapTap 的实名信息判断玩家是否可以进行游戏。
不使用 TapTap 快速认证,玩家在 SDK 提供的界面中手动输入身份证号等实名信息,TDS 云端会将相应信息上报至中宣部防沉迷实名认证系统。
1.传入 access token
和玩家唯一标识 userIdentifier
,开始 TapTap 快速认证。
access token
获取方式可以在【Godot-Android插件】GodotUtils工具类 - GodoterCN——一个温馨友爱的Godot游戏引擎中文社区中使用TapTap登录后调用 singleton.getMethods(“tapAccessToken”) 获取
singleton2.startup(userIdentifier,true,access_token)
2.自己手动输入姓名+身份证
singleton2.startup(userIdentifier,false,null)
userIdentifier 为玩家唯一ID,可以使用`OS.get_unique_id()获取,可以自己生成:

验证成功后会在InitResult信号中返回回调
其他功能:
玩家在游戏内退出账号时调用,重置防沉迷状态:
singleton2.logout()
检查消费上限
根据年龄段的不同,未成年玩家的消费金额有不同的上限。 如果启用消费限制功能,开发者需要在未成年玩家消费前检查是否受限,并在成功消费后上报消费金额。
游戏在收到玩家的付费请求后,调用以下接口当前玩家的付费行为是否被限制:
singleton2.checkPayLimit(amount:Int)
singleton2.submitPayResult(amount:Int)
上报游戏时长
如果启用时长限制功能,需要上报游戏时长。
已登录的玩家,开始游戏时调用此接口,之后 SDK 会自动轮询上报游戏时长。
singleton2.gameTimer(start:bool)