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格式還要大,該怎麼減小空間?

TAG:iOS開發 | Unity遊戲引擎 |