unity寫的功能模塊如何集成到iOS原生的代碼裡邊?
謝 @朱小傑 邀。
「unity寫的功能模塊如何集成到iOS原生的代碼裡邊?」
這句話我的理解是,寫一個iOS主工程,裡面有個模塊需要用到Unity的功能,所以希望Unity導出一個SDK,iOS主工程可以選擇性的接入一下。
由於我主要做Unity開發,所以沒有實現過相關的需求。
在工作中常做的是,Unity導出iOS主工程後,添加、修改代碼以及設置,最編譯。
從我的理解上來說,Unity導出iOS工程後,其實就是一個原生的iOS工程,並沒有太大的區別,所以要做的事只是把這個工程做成SDK,交付其他工程接入使用而已。
之前我寫過相關的文章來介紹Unity導出的工程,相信有iOS開發經驗的人會很容易理解,權當拋磚引玉。1、導出的Xcode工程
此外,我會嘗試實現題主所提到的需求「將Unity導出的iOS工程做成SDK」,實現之後會來更新~
OC版Unity工程融合
1.更改app啟動 刪除main.storyboard 在app delegate中創建window並添加根控制器
2.在項目中創建Unity文件夾,將Unity中的Library和Native文件夾拖到項目的Unity文件夾下
3.remove references Libraries文件夾下的libel2cpp文件夾
4.remove references Classes/Native文件夾下所有的.h文件
5.將Data文件夾拖到Unity文件夾下,選擇 Create folder references
6.添加framework
7.Build-Settings
7.1 Enable-Bitcode No
7.2 Other Linker Flags -weak_framework CoreMotion -weak-lSystem
7.3 Header Search Paths
7.4 Library Search Paths
7.5 Other C Flags
7.6 C Language Dialect
7.7 創建pch文件,並設置Prefix Header
7.8 Precompile Prefix Header YES
7.9 C++ Language Dialect
7.10 Enable C++ Runtime Types NO
7.11
7.12
7.13 Add User Difined
8. 將Classes文件夾下的pch的內容複製到自己的pch中 #import "UnityAppController.h"
9.將Supporting Files下的main.m文件後綴改成.mm 並將Classes文件夾下main.mm的內容複製(替換)一份到該main.mm中10.main.mm中修改const char* AppControllerClassName = "AppDelegate";11. 在Build Phases中的Compile Sources中刪除Classes目錄下的main.mm
12.在pch文件中添加 #import "UnityAppController.h"13.在AppDelegate.h中添加 @property (nonatomic,strong)UnityAppController *unityController; 14.在AppDelegate.m中的didFinishLaunchingWithOptions方法中添加 self.unityController = [[UnityAppController alloc] init]; [self.unityController application:application didFinishLaunchingWithOptions:launchOptions];並在所有對應的啟動方法中添加
[self.unityController applicationWillResignActive:application]; [self.unityController applicationDidEnterBackground:application]; [self.unityController applicationWillEnterForeground:application]; [self.unityController applicationDidBecomeActive:application]; [self.unityController applicationWillTerminate:application]; 15.修改UnityAppController.h文件中GetAppController的代碼為 #import "AppDelegate.h" inline UnityAppController* GetAppController(){ AppDelegate *delegate = (AppDelegate *)[UIApplication sharedApplication].delegate; return delegate.unityController;}我還不太明白你想問的。如果你是在ios上運行unity寫的功能,你可以在unity里導出成xcode項目,打包到ios設備上運行。如果你是想ios和unity互相調用,你可以參考: Unity3d 與IOS 相互調用
我寫了一篇文章,你可以試一下,有問題可以私信。
Xcode中如何集成Unity - ymonke你看一看看這個篇文章unity項目整合嵌入iOS主工程以及這篇ios把unity3d項目整合嵌入到xcode中
推薦閱讀:
※微軟應該買下Unity公司么?
※求思路如何用NGUI實現類似iBook的翻頁效果?
※請問為什麼Unity3D使用mono做為跨平台解決方案?
※C# 如何進階?
※Unity中打包Texture到AssetBundle反而比原資源jpg格式還要大,該怎麼減小空間?