在上一篇《iOS平臺接口設計及思路》中我們闡述了ios平臺的接口結構和思路。在這里我們將闡述unity平臺下的接口結構和思路。
unity平臺是開發(fā)平臺,我們的程序代碼是在這個ide下堆疊的。unity端并不需要過多的考慮不同運行平臺(安卓/iOS)上的底層機制是如何實現(xiàn)的,本身unity已經做了相應的處理,我們只需要知道自己當前的運行平臺是什么樣的,然后做好相關的平臺差異
2.對不同運行平臺(安卓/iOS)能自適配
化接口調用就行。
因為unity平臺是開發(fā)平臺,游戲渠道的差異性我們在運行平臺(安卓/iOS)上做了處理,那么unity部分客戶端,就不怎么需要關心渠道差異化的處理了。
一、那么我們還是照例,先看看想要設計的需求
1.調用簡便
二、設計的模塊
1.唯一的給外部調用接口模塊
2.針對不同運行平臺(安卓/ios/windows)的接口實現(xiàn)
三、具體的細節(jié)
如圖所示的結構,我們在untiy主要實現(xiàn)了以下幾個功能
1.游戲客戶端的所有接口調用是通過typesdk類
2.typesdk會根據(jù)當前運行平臺的不同,調用接口在不同平臺上的實現(xiàn)邏輯
3.這些不同平臺上的實現(xiàn)邏輯會跨平臺調用原生環(huán)境的接口
4.原生環(huán)境所有的信息數(shù)據(jù)發(fā)送給typenotify類
5.typenotify類將相關數(shù)據(jù)轉發(fā)給typesdk類
6.typesdk再將數(shù)據(jù)處理后反饋給游戲客戶端
給到游戲調用的 typeSDK類中我們需要以下的接口定義
登錄接口 public void InitSDK()
獲取緩存在原生平臺處的sdk用戶數(shù)據(jù) public U3DTypeBaseData GetUserData()
獲取緩存在原生平臺的渠道配置信息 public U3DTypeBaseData GetPlatformData()
登錄接口 public void Login()
登出接口 public void Logout()
支付接口 public string PayItem(U3DTypeBaseData _in_pay)
提交用戶信息接口 public void UpdatePlayerInfo()
大退游戲接口 public void ExitGame()
根據(jù)函數(shù)名執(zhí)行拓展函數(shù)接口 public void DoAnyFunction(string _func_name,U3DTypeBaseData _in_data)
我們可以通過類繼承來實現(xiàn)不同的運行環(huán)境下調用不同的接口
在c#中,我們可以使用宏定義來實現(xiàn)這一功能,具體示例可以參考以下代碼的例子
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
{
}
用來響應原生平臺的數(shù)據(jù)傳遞類typenotify
因為unity本身已經對跨平臺的數(shù)據(jù)接收做了很好的封裝,只需要知道我們的腳本對象名字,其他平臺就可以直接執(zhí)行這個腳本內的函數(shù),所以我們在設計聚合sdk時,做了如下的一些響應函數(shù)的定義
//登錄成功響應
public void NotifyLogin(string _in_data)
//登出響應
public void NotifyLogout(string _in_data)
//支付結果響應
public void NotifyPayResult(string _in_data)
//初始化完畢響應
public void NotifyInitFinish(string _in_data)
//拓展函數(shù)回調響應
void NotifyExtraFunction(string _json_string)
如此一來,整個流程就成型了一個完整的體系。從接口的調用,到跨平臺數(shù)據(jù)的接收都有了相關的設計。
如果想了解更多,請聯(lián)系我們或關注官網(wǎng)
了解更多:www.typesdk.com
問題解答:1771930259
聯(lián)系郵箱:qianyuzhou@typesdk.com
項目地址:https://github.com/typesdk
更多建議: