U8SDK——Unity手游接入U8SDK(Android篇)

作者: 分类: U8SDK 发布时间: 2015-07-29 02:31 64条评论

U8SDK的设计之初,就是为了能够支持各种游戏引擎开发的游戏,而不仅仅是Android的原生平台。目前一大半的手游,都是采用Unity3D和Cocos2dx开发,那么这里,我们就先来一步步给大家演示,用Unity开发的游戏,如何通过U8SDK来快速地完成多家渠道SDK的接入。
 
Unity研发的手游,只需要调用U8SDK抽象层即可完成多家渠道SDK的接入,而不需要在Unity中耦合各个渠道SDK,保证游戏层逻辑层的简单,以及SDK部分的绝对重用。
 
下面,我们看看,在Unity中调用U8SDK主要需要完成的工作:
 
1、建立一个Android工程,作为U8SDK和Unity平台通信的中间协调工程
2、定义一致的通信数据类型,我们这里采用JSON格式
3、在Unity中,通过C#完成一套统一的SDK调用接口,给逻辑层调用。同时多个平台(Android,IOS,PC等)的接口完全相同。
 
这一篇,我们就先来完成第一步和第二步。
 
1,新建一个Android工程,将IsLibrary设置为true,将该工程作为库工程,这样当你编译的时候,会在bin目录下产生一个jar包,而不是一个apk
2,设置依赖工程为U8SDK2抽象层工程,同时将Unity3D提供的Android的jar包,复制到该工程的libs目录下
3、然后建立两个类,一个为U8UnityContext ,这个类继承UnityPlayerActivity ,也是游戏的启动Activity。
4、另一个是IU8SDKListener 的实现类,主要实现一些SDK的回调方法
 
我们先来看看这两个类的实现,之后再来解释一些关键的东西:

 

在U8UnityContext 中,我们定义了一系列的接口。这些接口就是给Unity中调用的。比如Login,switchLogin,logout等。而这些方法本身仅仅是对U8SDK抽象层提供的方法进行了一个简单的包裹。通过,U8SDK.getInstance().runOnMainThread()来让所有的接口都在UI主线程中完成。
 
关于U8SDK的初始化,有两部分。第一部分是U8SDK本身的初始化,包括参数的读取和解析等,这个需要将AndroidManifest.xml中application接口的android:name设置为”com.u8.sdk.U8Application”。注意,这里一定要设置,否则U8SDK无法初始化。如果,游戏有自己的某些业务需要在Application中完成,可以通过实现U8SDK提供的IApplicationListener接口来完成。
 
第二部分需要在Activity的onCreate中完成(根据游戏不同,也可以在Unity中合适的地方调用初始化接口),包括,设置U8SDK的回调监听,初始化加载插件,以及调用onCreate回调。表现为以下三步:
 

 

UnityU8SDKListener 是U8SDK的回调简体接口的实现类。所有SDK相关的回调都是通过这些接口完成的。
 
onLoginResult:     SDK登录成功的回调
onSwitchAccount:   SDK中切换帐号的回调
onLogout:          SDK登出的回调
onAuthResult:      U8Server登录验证的回调
onResult:          所有SDK操作成功或者失败的状态回调
 
当我们收到部分回调的时候,我们需要通知到Unity中,包括之前,我们写的那些接口,比如Pay和submitExtraData都是含有参数的。
 
这里就来解决Unity和Android中通信的数据结构问题。虽然Unity和Android通信也可以使用复杂的结构,但是我还是推荐采用简单统一的数据协议比较好,这里我们选择JSON,简单高效。只要保证,两边数据的key一致就可以了。
 
Unity调用Android的接口,比如Pay和submitExtraData都通过一个JSON字符串传递过来,然后这边解析一下。
对于Android中需要通知Unity中的也是一样,使用JSON格式的字符串,然后通过
 
UnityPlayer.UnitySendMessage( “#0000c0;”>gameObject, methodName, jsonParams)接口来完成通信。
 
好了,完成这个,Android中的部分,就完成了。再提醒一次,不要忘记配置AndroidManifest.xml哦,这里附上AndroidManifest.xml文件:

本文出自 U8SDK技术博客,转载时请注明出处及相应链接。

本文永久链接: http://www.uustory.com/?p=1859

评论功能已经关闭,请加入U8SDK技术群进行讨论和咨询:207609068
Ɣ回顶部
U8SDK技术群 x
技术同学请加入
点击加入