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