使用unity3d 接入anySDK的总结1

    原先的2d项目已经告一段落,接下来是打算学习unity3d的,进入公司unity项目以后由于之前有接sdk的经验,所以进入项目组后第一个工作内容就是给我们unity游戏接入anySDK。这几天通过自己踩坑和请教主程以后,大概算是把登录这块搞定了。

    其实anySDK的文档非常的详细(比起同为触控的cocos,anySDK的文档容我赞一下),最好的方式就是去git上下载官方的例子,地址:https://github.com/AnySDK/

    接入anySDK需要的东西主要是两个,一个是anySDK客户端,用来申请anySDK服务,创建游戏,测试帐号等等。另一个就是anySDK的框架包,不同的引擎不一样,比如我们是unity4.6的那么下载的是libAnySDKForUnity_libstdc++.unitypackage

    以git上unity的例子为例,anySDK的初始化放在例子里的Init.cs里面,用到的几个参数说明一下。

    appKey,appSecret,privateKey这三个放在一起说,他们来自于使用anySDK客户端开通服务,创建完游戏后在配置管理页面可以看到的这三个。还有一个参数是oauthLoginServer 是发送到服务器端做验证的地址,这个服务端的验证是需要我们自己的游戏服务端程序开发的。由于我们这个项目前后端都做,我个人之前也做过javaweb开发,所以验证服务也由我个人来开发。

    同样可以去anySDK的git上下载那个simple_server的例子,里面有java验证服务端的例子,我是通过假设tomcat服务器实现的验证服务器。oauthLoginServer传入架设的验证服务器地址。

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="com.xingfu.mzj.action.impl.AnySDKAction" %>
<%
	AnySDKAction login = new AnySDKAction();
	login.check(request, response);
%>

在jsp里调用相应action类的方法做登录验证,我这里取名叫check。(原谅我2年没做java了,只会基本的java web实现方式,专业的服务端程序应该会用struts等框架,总之原理是一样的目的就是验证服务端接到客户端登录请求,再去向any服务端转发请求而已)

至于check函数的具体内容get上下载下来的simple_server例子里面有,就不贴了,不过注意最后调用的一个叫sendToClient的一个函数,发送的json结构里面有一个ext字段,这个字段将来会作为msg回传给游戏客户端的

void Start()
		{


			AnySDKUser.getInstance () .setListener (this,"UserExternalCall");
		}

void UserExternalCall(string msg)
		{
			Debug.Log("UserExternalCall("+ msg+")");
			Dictionary<string,string> dic = AnySDKUtil.stringToDictionary (msg);
			int code = Convert.ToInt32(dic["code"]);
			string result = dic["msg"];
			switch(code)
			{
			case (int)UserActionResultCode.kInitSuccess://初始化SDK成功回调
				Debug.Log("初始化SDK成功回调");
				break;
			case (int)UserActionResultCode.kInitFail://初始化SDK失败回调
				Debug.Log("初始化SDK失败回调");
				break;
			case (int)UserActionResultCode.kLoginSuccess://登陆成功回调
				Debug.Log("登陆成功回调,result:" + result);
				string[] msgArray = result.Split(new char[]{','});
				string userId = msgArray[0];
				string accessToken = msgArray[1];
				Debug.Log("userId:" + userId + ",accessToken:" + accessToken);
				break;
				
		...

例如unity脚本里面的start函数里设置了登录回调函数为UserExternalCall,接下来的处理里面会把msg转换成一个数据字典,而这个result就是数据字典dic里面的msg,而这个msg也就是由验证服务端传过来的json里面的ext字段.用官方文档里面的原话就是

ext:默认为空,游戏服务器可以在ext域中存放游戏逻辑相关的数据(比如开发商服务器内部设定用户标识),这些数据会在游戏客户端获取到登录成功回调时附带的msg信息里完整的拿到,然后用来执行相应的游戏逻辑;

也就是这是个自己用来存储一些anySDK没有提供的数据会传给客户端的,是根据自己游戏的登录不同,可以自己去使用的一个扩展字段(说的通俗点,传你们游戏特有的需要的一些信息,没有可以不传,完全看游戏自身需求)

再测试登录的时候使用的帐号可以通过anySDK的客户端提供的开发者管理后台生成你们游戏的测试帐号,然后登录的时候就用这个账号,只要用户名密码正确,验证服务器地址正确,最后登录成功就会回调unity游戏客户端的UserExternalCall方法,会走到登录成功那个分支。这样一来,客户端对接验证服务端去any那里登录再返回客户端的这套流程就算ok了。接下来就是客户端自己的登录流程了

以上

    

转载于:https://my.oschina.net/fantasyTianyu/blog/547862

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值