基于国家对上线所有游戏必须增加防沉迷功能的政策下,TapTap 推出防沉迷 SDK,供游戏开发者进行接入;允许未成年用户在周五、六、日以及法定节假日晚上 8:00-9:00进行游戏,防沉谜时间段进入游戏会弹窗进行提示!

开发环境要求:
🔗 Unity 集成 Demo 参考链接
🔗 Unity TapSDK 功能体验 APK 下载链接
进入开发者后台,按照提示开始创建应用;
在使用 TDS 实名认证和防沉迷服务之前,需要在上面创建的应用里找到 游戏服务 > 生态服务 > 合规认证 开通服务。
开通服务有两种方式:

如果使用 TapTap 快速授权,也需要开通 TapTap 登录功能,并且需要配置包名和签名,并且在打包时设置的包名和签名要和后台配置的保持一致!
导入依赖库有两种方式,分别为Unity Package Manager(UMP)导入或手动导入(二者选其一即可):
Packages/manifest.json 文件中添加以下依赖:"dependencies":{
"com.tapsdk.antiaddiction":"https://github.com/taptap/TapAntiAddiction-Unity.git#3.16.1",
"com.leancloud.storage": "https://github.com/leancloud/csharp-sdk-upm.git#storage-1.0.2",
"com.taptap.tds.common":"https://github.com/TapTap/TapCommon-Unity.git#3.16.1",
}
手动导入(因为要下载离线包,相对耽误时间):
1、先从官方 SDK 下载页找到 TapSDK Unity 和 LeanCloud C# SDK 下载地址,分别下载 TapSDK-UnityPackage.zip 和 LeanCloud-SDK-Storage-Unity.zip。
2、解压 TapSDK-UnityPackage.zip 分别双击 TapTap_Common.unitypackage、TapTap_AntiAddiction_3.16.1.unitypackage 然后导入包。
3、将 LeanCloud-SDK-Storage-Unity.zip 解压后 Plugins 文件夹,拖拽到 Unity 项目就好了;
using TapTap.AntiAddiction;
using TapTap.AntiAddiction.Model;
AntiAddictionConfig config = new AntiAddictionConfig()
{
gameId = "your_client_id", // TapTap 开发者中心对应 Client ID
useTapLogin = true, // 是否启动 TapTap 快速认证
showSwitchAccount = false, // 是否显示切换账号按钮
};
Action<int, string> callback = (code, errorMsg) => {
//code == 500; //登录成功
//code = 1000; //用户登出
//code = 1001; //切换账号
//code = 1030; //用户当前无法进行游戏
//code = 1050; //时长限制
//code = 9002; //实名过程中点击了关闭实名窗
UnityEngine.Debug.LogFormat($"code: {code} error Message: {errorMsg}");
};
AntiAddictionUIKit.Init(config, callback);
string userIdentifier = "玩家的唯一标识";
AntiAddictionUIKit.Startup(userIdentifier);
⚠️判断是否实名是通过传入的‘玩家唯一标识’进行判断的,如果同一个玩家,每次调用实名接口传入的唯一标识不同,会导致重复认证,所以一般建议玩家唯一标识可以传入该玩家的唯一ID,例如:使用 Tap 登录返回的 objectId、openid、unionid;重点是只要该唯一标识是和玩家唯一绑定就行。
玩家在游戏内退出账号时调用,重置防沉迷状态。
AntiAddictionUIKit.Exit();
int ageRange = AntiAddictionUIKit.AgeRange;
int remainingTimeInSeconds = AntiAddictionUIKit.RemainingTime;
int remainingTimeInMinutes = AntiAddictionUIKit.RemainingTimeInMinutes;
检查消费上限功能需要游戏在用户每次消费成功后上报消费金额(方法在下面);
long amount = 100; // 金额的单位为 分
AntiAddictionUIKit.CheckPayLimit(amount,
(result) => {
// status 为 1 时可以支付
int status = result.status;
if (status == 1) {
// 可以进行支付
}
},
(exception) => {
// 处理异常
}
);
客户端直接调用上报金额的可靠性比较低,建议用户使用服务端上报,REST API 接口可以参考官方 API 使用说明,一般无服务端的单机游戏会使用客户端进行调用。
long amount = 100; // 金额单位为 分
AntiAddictionUIKit.SubmitPayResult(amount,
() => {
// 成功
}, (exception) => {
// 处理异常
}
);
AntiAddictionUIKit.EnterGame();
AntiAddictionUIKit.LeaveGame();
通过 File -> Build Settings;弹出 Build Settings 页面;
选择 Android,点击 Switch Platform,然后如下图:

点击 Player Settings,然后点击 Publishing Settings 设置签名文件

点击 Other Settings 设置 Package Name

最后直接点击 Build 开始构建,构建成功后就可以打包成功!到此就结束了!

⚠️注意此处设置的包名以及签名文件要和开发者后台配置的包名签名要保持一致!
⚠️如果是手动下载 unitypackage 进行 SDK 导入,需要将 Assets/TapTap/Common/Plugins/iOS/TapTap.Common.dll 设置为只支持 iOS。
1.1、 在 Assets/Plugins/iOS/Resource 目录下创建 TDS-Info.plist 文件,复制以下代码并且替换其中的 ClientId。如果游戏使用了 TapTap 内嵌动态或数据分析服务,需要配置相关权限并替换授权文案:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>taptap</key>
<dict>
<key>client_id</key>
<string>换成你的 ClientId 值</string>
</dict>
<!--使用内嵌动态服务,需要相册、相机、麦克风权限-->
<key>NSPhotoLibraryUsageDescription</key>
<string>说明为何应用需要此项权限</string>
<key>NSCameraUsageDescription</key>
<string>说明为何应用需要此项权限</string>
<key>NSMicrophoneUsageDescription</key>
<string>说明为何应用需要此项权限</string>
<!--使用数据分析服务需要 IDFA 权限。如应用程序不想弹框,可以设置 TapDB.AdvertiserIDCollectionEnabled(false)-->
<key>NSUserTrackingUsageDescription</key>
<string>说明为何应用需要此项权限</string>
</dict>
</plist>
1.2、 使用 Xcode 13.0 beta 5 编译,检查 Unity 输出的 Xcode 工程:
通过 File -> Build Settings;弹出 Build Settings 页面;
选择 iOS,点击 Switch Platform,然后如下图:

点击 Player Settings,开始设置 Bundle Identifier、Version、Company Name、Product Name 信息;


最后直接点击 Build 然后开始选择导出项目文件夹路径进行开始导出;
接着就是使用 XCode 打开导出项目中的 Unity-iPhone.xcodeproj 文件;
开始设置证书和 Bundle Identifier,结果如下:

最后开始运行就可以了,至此所有集成介绍全部完成!
问题排查思路:
我发现ActiveRecord::Base.transaction在复杂方法中非常有效。我想知道是否可以在如下事务中从AWSS3上传/删除文件:S3Object.transactiondo#writeintofiles#raiseanexceptionend引发异常后,每个操作都应在S3上回滚。S3Object这可能吗?? 最佳答案 虽然S3API具有批量删除功能,但它不支持事务,因为每个删除操作都可以独立于其他操作成功/失败。该API不提供任何批量上传功能(通过PUT或POST),因此每个上传操作都是通过一个独立的API调用完成的
我在app/helpers/sessions_helper.rb中有一个帮助程序文件,其中包含一个方法my_preference,它返回当前登录用户的首选项。我想在集成测试中访问该方法。例如,这样我就可以在测试中使用getuser_path(my_preference)。在其他帖子中,我读到这可以通过在测试文件中包含requiresessions_helper来实现,但我仍然收到错误NameError:undefinedlocalvariableormethod'my_preference'.我做错了什么?require'test_helper'require'sessions_hel
我一直很高兴地使用DelayedJob习惯用法:foo.send_later(:bar)这会调用DelayedJob进程中对象foo的方法bar。我一直在使用DaemonSpawn在我的服务器上启动DelayedJob进程。但是...如果foo抛出异常,Hoptoad不会捕获它。这是任何这些包中的错误...还是我需要更改某些配置...或者我是否需要在DS或DJ中插入一些异常处理来调用Hoptoad通知程序?回应下面的第一条评论。classDelayedJobWorker 最佳答案 尝试monkeypatchingDelayed::W
?博客主页:https://xiaoy.blog.csdn.net?本文由呆呆敲代码的小Y原创,首发于CSDN??学习专栏推荐:Unity系统学习专栏?游戏制作专栏推荐:游戏制作?Unity实战100例专栏推荐:Unity实战100例教程?欢迎点赞?收藏⭐留言?如有错误敬请指正!?未来很长,值得我们全力奔赴更美好的生活✨------------------❤️分割线❤️-------------------------
本教程将在Unity3D中混合Optitrack与数据手套的数据流,在人体运动的基础上,添加双手手指部分的运动。双手手背的角度仍由Optitrack提供,数据手套提供双手手指的角度。 01 客户端软件分别安装MotiveBody与MotionVenus并校准人体与数据手套。MotiveBodyMotionVenus数据手套使用、校准流程参照:https://gitee.com/foheart_1/foheart-h1-data-summary.git02 数据转发打开MotiveBody软件的Streaming,开始向Unity3D广播数据;MotionVenus中设置->选项选择Unit
目录1.AdmobSDK下载地址2.将下载好的unityPackagesdk导入到unity里编辑 3.解析依赖到项目中
Unity自动旋转动画1.开门需要门把手先动,门再动2.关门需要门先动,门把手再动3.中途播放过程中不可以再次进行操作觉得太复杂?查看我的文章开关门简易进阶版效果:如果这个门可以直接打开的话,就不需要放置"门把手"如果门把手还有钥匙需要旋转,那就可以把钥匙放在门把手的"门把手",理论上是可以无限套娃的可调整参数有:角度,反向,轴向,速度运行时点击Test进行测试自己写的代码比较垃圾,命名与结构比较拉,高手轻点喷,新手有类似的需求可以拿去做参考上代码usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;u
前置步骤我们都操作完了,这篇开始介绍jenkins的集成。话不多说,看操作1、登录进入jenkins后会让你选择安装插件,选择第一个默认的就行。安装完成后设置账号密码,重新登录。2、配置JDK和Git都需要执行路径,所以需要先把执行路径找到,先进入服务器的docker容器,2.1JDK的路径root@69eef9ee86cf:/usr/bin#echo$JAVA_HOME/usr/local/openjdk-82.2Git的路径root@69eef9ee86cf:/#whichgit/usr/bin/git3、先配置JDK和Git。点击:ManageJenkins>>GlobalToolCon
写在之前Shader变体、Shader属性定义技巧、自定义材质面板,这三个知识点任何一个单拿出来都是一套知识体系,不能一概而论,本文章目的在于将学习和实际工作中遇见的问题进行总结,类似于网络笔记之用,方便后续回顾查看,如有以偏概全、不祥不尽之处,还望海涵。1、Shader变体先看一段代码......Properties{ [KeywordEnum(on,off)]USL_USE_COL("IsUseColorMixTex?",int)=0 [Toggle(IS_RED_ON)]_IsRed("IsRed?",int)=0}......//中间省略,后续会有完整代码 #pragmamulti_c
三分钟集成Tap防沉迷SDK(Unity版)一、SDK介绍基于国家对上线所有游戏必须增加防沉迷功能的政策下,TapTap推出防沉迷SDK,供游戏开发者进行接入;允许未成年用户在周五、六、日以及法定节假日晚上8:00-9:00进行游戏,防沉谜时间段进入游戏会弹窗进行提示!开发环境要求:Unity2019.4或更高版本iOS10或更高版本Android5.0(APIlevel21)或更高版本🔗Unity集成Demo参考链接🔗UnityTapSDK功能体验APK下载链接二、集成前准备1.创建应用进入开发者后台,按照提示开始创建应用;2.开通服务在使用TDS实名认证和防沉迷服务之前,需要在上面创建的应