博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用unity3d 接入anySDK的总结1
阅读量:6085 次
发布时间:2019-06-20

本文共 2590 字,大约阅读时间需要 8 分钟。

hot3.png

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

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

    接入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
 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

你可能感兴趣的文章
C++小思
查看>>
Longest Substring Without Repeating Characters
查看>>
Using the memcached telnet interface
查看>>
as3 AIR 添加或删除ApplicationDirectory目录下文件
查看>>
浅析伪数组
查看>>
验证码生成 点击刷新 ajax校验
查看>>
THINKPHP 默认模板路径替换
查看>>
mysql5.7 windows7编码统一utf-8
查看>>
nyoj-回文字符串--动态规划
查看>>
.Net Core 实践 - 使用log4net记录日志(2)
查看>>
洛谷 P1443 马的遍历
查看>>
部署腾讯云(CentOS6.6版本,jdk1.7+tomcat8+mysql)
查看>>
magento-installation: Magento SSL Error 310 net::ERR_TOO_MANY_REDIRECTS
查看>>
springboot跨域问题
查看>>
nginx搭建mp4和flv播放器
查看>>
CGI的函数
查看>>
异常与日志
查看>>
神经网络实现连续型变量的回归预测(python)
查看>>
python中关于正则表达式三
查看>>
努力吧.关于工厂模式(一)
查看>>