文档章节

TYPESDK手游聚合SDK客户端设计思路与架构之四:unity开发平台部分结构设计和思路

TypeSDK
 TypeSDK
发布于 2017/01/21 13:56
字数 916
阅读 17
收藏 0

在上一篇《iOS平台接口设计及思路》中我们阐述了ios平台的接口结构和思路。在这里我们将阐述unity平台下的接口结构和思路。

       unity平台是开发平台,我们的程序代码是在这个ide下堆叠的。unity端并不需要过多的考虑不同运行平台(安卓/iOS)上的底层机制是如何实现的,本身unity已经做了相应的处理,我们只需要知道自己当前的运行平台是什么样的,然后做好相关的平台差异

       2.对不同运行平台(安卓/iOS)能自适配

化接口调用就行。

       因为unity平台是开发平台,游戏渠道的差异性我们在运行平台(安卓/iOS)上做了处理,那么unity部分客户端,就不怎么需要关心渠道差异化的处理了。

一、那么我们还是照例,先看看想要设计的需求

       1.调用简便

二、设计的模块

       1.唯一的给外部调用接口模块

       2.针对不同运行平台(安卓/ios/windows)的接口实现

三、具体的细节

如图所示的结构,我们在untiy主要实现了以下几个功能

1.游戏客户端的所有接口调用是通过typesdk类

2.typesdk会根据当前运行平台的不同,调用接口在不同平台上的实现逻辑

3.这些不同平台上的实现逻辑会跨平台调用原生环境的接口

4.原生环境所有的信息数据发送给typenotify类

5.typenotify类将相关数据转发给typesdk类

6.typesdk再将数据处理后反馈给游戏客户端

       给到游戏调用的 typeSDK类中我们需要以下的接口定义

       登录接口 public void InitSDK()

       获取缓存在原生平台处的sdk用户数据 public U3DTypeBaseData GetUserData()

       获取缓存在原生平台的渠道配置信息 public U3DTypeBaseData GetPlatformData()

       登录接口 public void Login()

       登出接口 public  void Logout()

       支付接口 public string PayItem(U3DTypeBaseData _in_pay)

       提交用户信息接口 public void UpdatePlayerInfo()

       大退游戏接口 public void ExitGame()

       根据函数名执行拓展函数接口 public void DoAnyFunction(string _func_name,U3DTypeBaseData _in_data)

       我们可以通过类继承来实现不同的运行环境下调用不同的接口

       在c#中,我们可以使用宏定义来实现这一功能,具体示例可以参考以下代码的例子

public class TypeSDK :
       #if UNITY_ANDROID
           Bonjour_Type_Common
       #elif UNITY_IOS
             Bonjour_Type_Common_IOS
       #elif UNITY_STANDALONE_WIN
          Bonjour_Type_Common_Win
       #else
         Bonjour_Type_Common_Win
       #endif
       {
       }

       用来响应原生平台的数据传递类typenotify

       因为unity本身已经对跨平台的数据接收做了很好的封装,只需要知道我们的脚本对象名字,其他平台就可以直接执行这个脚本内的函数,所以我们在设计聚合sdk时,做了如下的一些响应函数的定义

//登录成功响应
       public void NotifyLogin(string _in_data)
       //登出响应
       public void NotifyLogout(string _in_data)
       //支付结果响应
       public void NotifyPayResult(string _in_data)
       //初始化完毕响应
       public void NotifyInitFinish(string _in_data)
       //拓展函数回调响应
       void NotifyExtraFunction(string _json_string)

       如此一来,整个流程就成型了一个完整的体系。从接口的调用,到跨平台数据的接收都有了相关的设计。

这个项目已开源,大家有兴趣可以自己研究或者参照项目编写自己的聚合SDK
项目地址:https://code.csdn.net/typesdk_code
项目地址:https://github.com/typesdk

© 著作权归作者所有

TypeSDK

TypeSDK

粉丝 3
博文 18
码字总数 30285
作品 1
高级程序员
私信 提问
TypeSDK 手游多渠道SDK新解决方案

经历了头两年的爆发之后,手游也和端游、页游一样,进入了一个利润变薄、产业整合的过渡期。除了那些自有渠道的大厂商,如何找到新的用户来源始终是中小CP面临的最大问题,解决办法目前看来只...

TypeSDK
2016/11/10
2
0
AndroidStudio封装SDK的那些事

首先SDK是提供给别人调用的工具。所以常见的SDK都是以jar包,so库,aar包等方式导入APP项目中。然后提供一些公开的API供接入方调用。所以在Androidstudio中如果需要生成jar或者aar,就需要将...

尘封的落叶
2018/06/23
0
0
成都游戏公司招聘U3D客户端主程

岗位职责:1、负责Unity3D手游项目客户端架构和开发工作; 2、根据策划文档进行unity3d跨平台游戏开发; 3、负责研究和开发Unity 3D和Opengl的标准化接口; 4、配合并指导团队其他成员进行项目开...

wendy-jiaxin
2016/12/23
140
0
游戏巨头齐聚 Unite Shanghai 2019,揭秘爆款游戏制作精彩亮点!

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/csdnnews/article/details/89397837 从三人行的公寓创业到全球知名游戏引擎的发展、从局限的 macOS 到高达 25...

CSDN资讯
04/19
0
0
求android的创业小伙伴

游戏创业团队,急求一名android小伙伴,要求如下: 岗位职责: 1、负责安卓手游对接SDK开发与维护; 2、负责安卓手游对接SDK文档与Demo的维护; 3、负责手游SDK对接接入跟进,接入游戏测试,...

卓动-小武
2014/11/28
983
12

没有更多内容

加载失败,请刷新页面

加载更多

一起来学Java8(四)——复合Lambda

在一起来学Java8(二)——Lambda表达式中我们学习了Lambda表达式的基本用法,现在来了解下复合Lambda。 Lambda表达式的的书写离不开函数式接口,复合Lambda的意思是在使用Lambda表达式实现函...

猿敲月下码
24分钟前
7
0
debian10使用putty配置交换机console口

前言:Linux的推广普及,需要配合解决实际应用方能有成效! 最近强迫自己用linux进行实际工作,过程很痛苦,还好通过网络一一解决,感谢各位无私网友博客的帮助! 系统:debian10 桌面:xfc...

W_Lu
55分钟前
10
0
aelf Enterprise 0.8.0 beta有奖公测,“Bug奖金计划”重磅开启

2019年9月30日,aelf Enterprise 0.8.0 beta版正式发布。aelf Enterprise 0.8.0 beta是一个完备的区块链系统, 包含完备的区块链系统、开发套件、开发文档、以及配套的基础应用和基础服务。 ...

AELF开发者社区
56分钟前
10
0
oracle 初始化数据库脚本

create user lpf identified by 123456; create tablespace lpf_ts_cms datafile '/opt/app/oracle/product/11.2.0/lpf.dbf' size 200M; alter user lpf default tablespace lpf_ts_cms; sel......

internetafei
今天
8
0
深入了解Redis底层数据结构

说明 说到Redis的数据结构,我们大概会很快想到Redis的5种常见数据结构:字符串(String)、列表(List)、散列(Hash)、集合(Set)、有序集合(Sorted Set),以及他们的特点和运用场景。不过它们是...

TurboSanil
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部