Unity調用IOS的方法,順便科普一下簡單OC代碼——最白話,手把手教你做系列。

原因:要用Unity接入一些IOS原生的SDK之類的東西。
合作開發就是這樣,突然就會有這種莫名其妙對接的時候,然後讓人措手不及。而且現在身邊也沒有一個搞IOS原生的大佬。於是只能抱着C#語法硬擼了。

1,導出Xcode工程

這個相信打過IOS包的都不陌生。選IOS環境,Build,然後就是一個Xcode工程了。

2,如何交互

網上說了很多方法,五花八門。但我是對OC語言一竅不通的,因爲語法和C,JAVA,C#等等不太一樣,還有一大推符號@#*,看了很長時間,也不是很明白。然後想到之前有大佬寫過IOS震動的腳本,只需要一個.m和.h文件就能用了。於是就決定用這種方法了。

3,.h和.m文件

這其實是個很簡單的東西,但是沒不明白的話OC之路就到此爲止了。
我之前一直以爲.h和.m是自己按照某種格式手擼的。經過Google之旅才知道,這是IOS的基礎。
右鍵你的工程NewFile,命名一下,一路到底就能生成一組文件.h 和.m。
在這裏插入圖片描述至於理解我簡單的來講,h 表示頭文件,用來聲明各種成員變量,方法,屬性之類的。
.m 主要用來實現.h 裏聲明的方法。
具體看下圖:
綠色左側爲.h文件裏聲明的靜態方法OC語言+爲靜態方法,-爲普通方法
綠色右側爲.m文件裏對.h文件裏聲明的方法的具體實現方法。

在這裏插入圖片描述到了這個部分你就可以吧.m和.h放在Plugins/iOS下用

    [DllImport("__Internal")]
    public static extern void InitSdk();

    [DllImport("__Internal")]
    public static extern void ShowLogin();

這兩個方法調用了。沒錯,現在你已經可以調用IOS的方法了。一般情況就是求IOS原生大佬把方法封裝好,然後把想調用的方法放進.m文件的具體實現方法裏就行了(方法名可自定義但要和C#中的引用一致)。你只是個Unity程序,不要爲難自己了。

調用的話到此截止

現在可能你已經覺得你會OC了,So easy。因爲你只是做了一個連接OC和Unity的通道。你不覺得和C#的方法很像嗎?那是因爲你寫的方法是C語言並不是OC啊。

真正的OC代碼是圖中下面紅色框中的代碼。一堆符號和字符串起來的東西。
OC方法是這麼定義的 +/-(標記方法類型)(返回值)方法名{ 具體實現 }
[ 對象 方法名:參數 ]; 是OC調用方法的結構
括號裏的第一個被我稱爲對象的東西,我隨便稱呼的,因爲這個東西還可能是一個[ 對象 方法名 ]這樣的東西。類似C#中 Init( XXX.GetID( XX.id ) );
*GSLoginViewController login = [[GSLoginViewController alloc] init]; 實例化一個對象
反正類似這種奇怪的東西比較多,不是原生開發就不用耗時探究這個是什麼玩意了。知道是這麼個意思就完了。

大概是我看了一整天OC代碼的總結。應該有下面這部分就能大致看明白一些簡答的OC代碼的功能了。

以上。
補充一點:我在測試.m和.h文件的時候發現其實.h文件中即使不去聲明方法名,直接在.m文件中寫方法實現然後用Unity仍然可以調用。
我的IOS開發朋友這麼說:不在頭文件聲明 直接實現 這個方法就是私有方法,Unity能調用可能是因爲unity使用的是runtime的機制,直接使用調用方法名的方式是可以調到的。

以上。

發佈了27 篇原創文章 · 獲贊 29 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章