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

在上一篇《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#中,我们可以使用宏定义来实现这一功能,具体示例可以参考以下代码的例子


点击(此处)折叠或打开

  1. public class TypeSDK :
  2.        #if UNITY_ANDROID
  3.            Bonjour_Type_Common
  4.        #elif UNITY_IOS
  5.              Bonjour_Type_Common_IOS
  6.        #elif UNITY_STANDALONE_WIN
  7.           Bonjour_Type_Common_Win
  8.        #else
  9.          Bonjour_Type_Common_Win
  10.        #endif
  11.        {
  12.        }


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

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


点击(此处)折叠或打开

  1. //登录成功响应
  2.        public void NotifyLogin(string _in_data)
  3.        //登出响应
  4.        public void NotifyLogout(string _in_data)
  5.        //支付结果响应
  6.        public void NotifyPayResult(string _in_data)
  7.        //初始化完毕响应
  8.        public void NotifyInitFinish(string _in_data)
  9.        //拓展函数回调响应
  10.        void NotifyExtraFunction(string _json_string)


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

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Unity是一款强大的开发引擎,也被广泛用于开发大型多人在线角色扮演戏(MMORPG)。在MMORPG开发中,网络架构设计与实现源码是非常重要的核心技术。首先,Unity客户网络架构设计需要考虑到多个玩家之间的实时通讯和同步,以及与服务器的数据交换。 在网络架构设计上,首先需要考虑到如何处理玩家之间的实时通讯和同步。这部分源码需要实现基于UDP或TCP的网络通讯,同时考虑到玩家位置、动作、状态等数据的同步,并采用合适的压缩和插值算法来保证玩家之间的数据同步和流畅性。 其次,与服务器的数据交换也是Unity客户网络架构设计的重要一环。这部分源码需要实现与服务器的通讯协议,包括登录认证、戏数据同步、战斗事件处理等。同时需要考虑到网络延迟和丢包等问题,采用合适的重试机制和数据校验算法来保证通讯的稳定性和可靠性。 在实现上,可以采用C#等语言编写网络架构设计的源码。由于Unity本身内置了一些网络通讯的API和组件,开发者可以基于这些API和组件进行二次开发,加快开发速度和降低成本。同时,还可以借助一些开源的网络库和框架来提高网络通讯的效率和性能。 总之,Unity客户网络架构设计与实现源码是MMORPG开发中的重要核心技术,需要综合考虑玩家之间的实时通讯和同步,以及与服务器的数据交换。通过合理的网络架构设计和源码实现,可以提高戏的网络性能和稳定性,带来更好的戏体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值