
通常,游戏开发人员不会仅在一个频道上发布游戏. 他们访问的渠道越多,他们可以获得的用户越多,但对SDK工作负载,持续时间和成本的访问也就越多. 一个游戏需要有足够的用户,甚至需要访问30多个不同的渠道才能确保其市场覆盖率.
单个SDK访问过程需要3天才能完成,其中包含经验丰富的全职客户端程序手游sdk登录失败怎么解决,全职服务器程序员和全职质量检查流程. 因此,当一个产品面对30个或更多具有不同需求的通道SDK时,人员成本和时间将急剧增加.
因此,我们需要一个通用的接口来处理各种渠道的需求. 这是统一渠道SDK访问框架.
下载地址:
将TypeSDKLibrary文件夹添加到Unity项目. 请注意,结构必须与屏幕截图一致. 建议游戏中与当前导入的脚本名称冲突的文件需要由开发人员自己修改.
添加后的目录结构如下

SDK普通访问逻辑图

1.1在调用其他API之前,您需要调用初始化接口以初始化SDK.
1.2只有在初始化初始化接口调用之后,才能调用登录接口. 登录成功选择要进入游戏的角色后,需要调用用户信息提交界面.
1.3如果成功登录后需要切换帐户,则需要调用注销界面.
1.4对于依赖于登录用户的界面(例如付款,提交用户信息界面),您需要调用用户信息界面以获取相关数据,例如user_id….
1.5游戏退出时需要调用退出界面.
SDK访问需要访问程序员对接口调用的实现以及回调函数的响应.
a. 回调函数的响应主要通过设置侦听器来实现. 有关详细信息,请参阅第2节(回调函数的处理)
回调的事件类型
TypeEventType.EVENT_INIT_FINISH
SDK初始化完成
TypeEventType.EVENT_LOGIN_SUCCESS
登录成功回调
TypeEventType.EVENT_PAY_RESULT
付款结果回调
TypeEventType.EVENT_LOGOU
注销完成回调
TypeEventType.EVENT_RELOGIN
重新登录成功回调
TypeEventType.EVENT_CANCEL_EXIT_GAME
取消应用程序回调
b. 接口调用主要是以下接口调用. 每个接口调用将在后面详细说明
接口列表

2. 回调函数的处理

Typesdkbaselib提供了一个cs文件,该文件已预先注册了所有回调: U3DTypeEventListener.cs访问器需要根据不同的回调事件在U3DTypeEventListener侦听类中实现相应的游戏逻辑.
您还可以根据自己的需要并在游戏中的适当位置自行注册相关的函数侦听器.
注意: 访问方只能修改以下方法来实现相应的逻辑. 建议不要更改U3DTypeEventListener类中的其他代码段,以免影响功能.
某些部件需要监视接口响应. 请判断当时的场景,以免混淆游戏逻辑. 例如,在PVP期间检测到用户切换帐户.
//初始化完成后回调函数
void NotifyInitFinish(U3DTypeEvent evt)
{
//游戏需要等待此回调才允许调用登录接口。
}
//登录操作完成后的回调函数
void NotifyLogin(U3DTypeEvent evt){
//解析渠道登录成功返回的信息,一般有user_token,user_id...
//此时返回的结果不能作为登录依据,需要进过服务端验证,取的服务器返回的最终数据。
//CP方需要将信息解析为CP服务器约定的数据格式转发给游戏服务器,并由游戏服务器转发至TypeSDK Server以完成游戏的登录验证
string userId = evt.evtData.GetData(U3DTypeAttName.USER_ID);
}
//更新渠道更新检测完成后回调
void NotifyUpdateFinish(U3DTypeEvent evt){
//建议等待此更新完成后,再进行游戏的更新逻辑,否则会造成渠道更新和游戏自身更新冲突。
}
//支付结果通知回调,CP需根据支付返回结果完成相应逻辑,此处为客户端返回结果,不可作为支付到账依据,游戏需等待TypeSDK Server的支付成功回调。
void NotifyPayResult(U3DTypeEvent evt){
if (evt.evtData.GetData(U3DTypeAttName.PAY_RESULT).Equals("1"))
{ //支付完成,可尝试延迟刷新账户余额信息。
Debug.Log("pay finished:" + evt.evtData.GetData(U3DTypeAttName.PAY_RESULT_DATA));
}
else
{//支付失败,或取消。
Debug.Log("pay failed:" + evt.evtData.GetData(U3DTypeAttName.PAY_RESULT_REASON));
}
}
//登出结果通知回调,说明用户已经做了退出账户操作,需要返回登录界面,并重新调用登录
void NotifyLogout(U3DTypeEvent evt){
}
//重登录结果通知回调,用户在渠道SDK进行用户切换操作,需要切换到新账号界面。
void NotifyRelogin(U3DTypeEvent evt){
}
//取消退出游戏通知回调,把退出游戏逻辑说明一下。
void NotifyCancelExit(U3DTypeEvent evt){
}
sdk使用的数据类型是从U3DTypeBaseData继承的. 相关用法示例如下:
3.1创建U3DTypeBaseData对象
U3DTypeBaseData baseData = new U3DTypeBaseData();
3.2设置属性
函数名称
公共无效SetData(字符串attName,字符串attValue)
参数列表
字符串attName,
在U3DTypeAttName中定义的字段
字符串attValue
当前支持三种类型的基本数据: int,string,boolean
返回值
无效
示例:
//(键名使用U3DTypeAttName定义的字段) baseData.SetData(“键名”,”值”);
3.3获取用于标识的字符串属性attname
函数名称
公共字符串GetData(字符串attName)
参数列表
字符串attName,
在U3DTypeAttName中定义的字段
返回值
字符串
指定键值的字符串值
3.4获取类型为int attname的属性
函数名称
public int GetInt(字符串attName)
参数列表

字符串attName,
在U3DTypeAttName中定义的字段
返回值
指定键值的整数类型值
3.5获取布尔属性的属性名以供识别
函数名称
函数名称
公共布尔GetBool(字符串attName)
参数列表
字符串attName,
在U3DTypeAttName中定义的字段
返回值
指定键值的布尔值
使用示例:
//新建一个对象
U3DTypeBaseData egData = new U3DTypeBaseData ();
//给该对象赋值
egData.SetData (U3DTypeAttName.APP_KEY, "123456789");
//读取一个string类型数据readStr = "123456789
string readStr = egData.GetData (U3DTypeAttName.APP_KEY);
//读取一个int类型数据readInt
int readInt = egData.GetInt(U3DTypeAttName.APP_KEY); = 123456789
响应消息的消息类型
公共类U3DTypeEvent
函数名称
公共布尔GetBool(字符串attName)
成员变量列表
publicTypeEventTypeevtType
此事件的类型(枚举)
publicU3DTypeBaseDataevtData
事件中包含的数据(相关数据可以通过上面的函数获取)
事件对象示例
void LoginResult(U3DTypeEvent evt)
{
U3DTypeBaseData data = evt.evtData;
string userID = data.GetData(U3DTypeAttName.USER_ID);
string userToken = data.GetData(U3DTypeAttName.USER_TOKEN);
}
函数名称
publicvoidInitSDK()
说明
SDK的初始化接口. 在调用其他SDK函数之前,请确保实现此接口. 所有通道都要求在应用程序启动时调用此接口.
通话示例
U3DTypeSDK.Instance.InitSDK();
函数名称

publicvoidLogin()
说明
显示登录界面. 如果登录成功,将发送TypeEventType.EVENT_LOGIN_SUCCESS消息. 请在登录界面中自动执行通话,而无需单击显示按钮.
当用户无法登录时需要,请再次调用此界面.
通话示例
U3DTypeSDK.Instance.Login();
函数名称
publicvoidUpdatePlayerInfo()
说明
在某些指定事件中,需要设置和提交与用户有关的信息. 登录后,进入游戏,升级用户,并建立一个角落.
通话示例
U3DTypeSDK.Instance.UpdatePlayerInfo()
当用户成功成功登录游戏后,您需要设置与用户相关的信息并提交
此功能的所有内容不能使用SDK客户端本地缓存的数据. 建议从服务器上获取它.
需要设置的属性如下,如果没有该属性,请传递一个空字符串
string ROLE_TYPE = “create_role”;//角色统计信息类型即调用时机,(createRole:创建角色,levelUp:角色升级,enterGame:选定角色进入游戏)(不能为空) string SAVED_BALANCE = “0”;//当前角色余额(RMB购买的游戏币),默认为0 string USER_NAME = "user_name"; //用户名 string USER_TOKEN = "user_token"; //用户渠道验证用token string USER_ID = "user_id"; //用户id string USER_HEAD_ID = "user_head_id"; //用户头像id string USER_HEAD_URL = "user_head_url"; //用户头像url string VIP_LEVEL = “vip_level”;//VIP等级,没有传0 string PARTY_NAME = “party_name”;//工会名称,如:天下第一 string ROLE_ID = "role_id"; //角色id string ROLE_NAME = "role_name"; //角色名字 string ROLE_LEVEL = "role_level"; //角色等级 string ROLE_CREATE_TIME = “role_create_time”;//角色创建时间,一定要服务器时间(单位/秒) string ROLE_LEVELUP_TIME = “role_levelup_time”;//角色升级时间(单位/秒) string ZONE_ID = "zone_id"; //所在大区id string ZONE_NAME= "zone_name"; //所在大区名称 string SEVER_ID = "server_id"; //所在服务器id string SERVER_NAME = “server_name”;//所在服务器名称 string EXTRA ="extra";
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/sanxing/article-147120-1.html
人若犯我
确实帅
真不是个东西