在上一篇《iOS平臺接口設計及思路》中咱們闡述了ios平臺的接口結構和思路。在這裏咱們將闡述unity平臺下的接口結構和思路。ios
unity平臺是開發平臺,咱們的程序代碼是在這個ide下堆疊的。unity端並不須要過多的考慮不一樣運行平臺(安卓/iOS)上的底層機制是如何實現的,自己unity已經作了相應的處理,咱們只須要知道本身當前的運行平臺是什麼樣的,而後作好相關的平臺差別git
2.對不一樣運行平臺(安卓/iOS)能自適配github
化接口調用就行。json
由於unity平臺是開發平臺,遊戲渠道的差別性咱們在運行平臺(安卓/iOS)上作了處理,那麼unity部分客戶端,就不怎麼須要關心渠道差別化的處理了。c#
1、那麼咱們仍是照例,先看看想要設計的需求windows
1.調用簡便緩存
2、設計的模塊ide
1.惟一的給外部調用接口模塊函數
2.針對不一樣運行平臺(安卓/ios/windows)的接口實現.net
3、具體的細節
如圖所示的結構,咱們在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