標籤:android style class code tar width
原地址:http://bbs.18183.com/thread-456979-1-1.html
本帖最後由 啊,將進酒 於 2014-2-27 11:17 編輯
“授人以魚,不如授人以漁”,以UNITY3D調用iOS版的91SDK為例,利用C# / C / OBJ-C 互動原理,本文將詳細介紹UNITY3D與iOS之間互動的解決方案。 首先,開啟XCODE建立一個空項目,參照91SDK開發文檔將91SDK引入並進行環境配置。配置完畢後建立一個名為“LsSdkConector”的OBJ-C CLASS檔案。完畢後,當前項目應<ignore_js_op> LsSdkConector.h檔案我們不用去改動它。保持原樣即可。<ignore_js_op> 接下來我們開始在LsSdkConector.m 檔案中製作C介面 和 調用91SDK的iOS方法。引入必要的標頭檔後,我把該檔案的代碼分為3個地區。 代碼A地區用來定義C介面必須要實現的API。<ignore_js_op> 代碼B地區用來實現A地區代碼的介面,以及要調用91SDK的iOS方法,直白點說,代碼B地區寫的方法就是用來調用代碼C地區的方法。<ignore_js_op> 代碼C地區用來實現真正的91SDK的OBJ-C方法。<ignore_js_op> 大家在自己的項目中:代碼A地區作為可直接複製套用;代碼B地區可編寫工具方法和調用iOS的方法;代碼C地區編寫91SDK的iOS方法,你需要什麼API就寫什麼,寫完了在代碼B地區添加C的調用方法即可。 在編寫代碼中,有的人可能會問OBJ-C中有的API有回調,UNITY是如何知道OBJ-C回調結束呢?答:OBJ-C調用UNITY的API,可以用“UnitySendMessage”的方法 ,具體使用方法 看UINTY的使用協助。 這樣我們完成了C介面和91SDK的API代碼,接下來我們做UINITY3D方面的代碼處理。 我們在UNITY3D項目的ASSETS下建立Code檔案夾與Plugins檔案夾。<ignore_js_op> 將LsSdkConector.h 和 LsSdkConector.m 複製到 Plugins 檔案夾中,並在 Code檔案夾中編寫我們的UNITY調用OBJ-C 方法。建立C#檔案“LsSdkConector.cs”,這個檔案中,我們將代碼分為A、B兩區。 代碼A區編寫C語言的介面,這裡的介面方法要對應”LsSdkConector.m”中代碼地區B的方法名稱。<ignore_js_op> 代碼B區編寫UNITY3D調用OBJ-C的方法,這裡的代碼注意用來實現UNITY3D之間的方法調用,C#的方法內調用C的方法。<ignore_js_op> 這樣,UNITY3D接入91SDK-iOS版的解決方案到此完成。<ignore_js_op> 下面,我們測試一下這個解決方案是否管用。 在Code檔案夾中建立 “LisiTest.cs”檔案,編輯如下代碼:<ignore_js_op> 並將該C#檔案拖至Main Camera 綁定。 UNITY3D轉iOS項目必須要設定BundleIdentifier,:<ignore_js_op> 點擊“Build”按鈕建立iOS項目,開啟該iOS項目,將LsSdkConector.h 和 LsSdkConector.m拖入iOS項目的Classes檔案夾中<ignore_js_op> 按照91SDK文檔中環境配置章節,對SDK進行引用,添加系統庫,做環境配置。 打包到iOS裝置前,檢查一下iOS項目的配置,注意OBJC要寫在第1列,還有要注意大小寫。<ignore_js_op> <ignore_js_op> 選擇使用iOS裝置打包,你會發現UNITY3D調用iOS 成功了!! 本文要告訴大家的是Unity3D與iOS互動的解決方案,代碼規範問題不是本文重點,比如91SDK的初始化在SDK文檔上推薦是在AppDelegate的檔案中進行初始化。 附件: <ignore_js_op> 文中提及檔案.zip (2.25 KB, 下載次數: 401)
Unity3D與Android之間的互動可以參考我的另一篇文章:《實操UNITY3D接入91SDK安卓版》