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