2019最新 iOS Native項目集成Unity3D

經歷了幾天的不斷嘗試解決各類報錯和網上尋得的資料最終成功在iOS項目中集成Unity3D,現有的資料都比較老,多數不適用或者說集成完報不少錯誤。
言歸正傳,目前我所作的集成是基於Xcode10.1(最新爲10.2),Unity2018.2.21f1 (建議先在文章最後看一下關於UnityPlayerSetting的設置)ui

  • 步驟一:新建文件夾,裏面存放兩個文件,一個是Xcode Native工程(如下簡稱A工程),另外一個是Unity導出的Xcode工程(如下簡稱B工程).net

  • 步驟二:在B工程中找到Classes,Libraries和Data拷貝到A工程的根目錄中,而後將Classes,Libraries經過Add file的方式添加到項目中,注意勾選Create groups;data也添加到項目中勾選Create folder references。3d

  • 步驟三:在項目根目錄中新建PCH文件,而後將Classes下的Prefix.pch文件中的所有代碼複製到剛纔建立的PCH文件中,並在代碼中添加#import "UnityAppController.h" code

    將PCH文件的路徑添加到Target->Build Setting->Prefix Header中

  • 步驟四:在Target->Build Setting中進行如下配置:cdn

    a.設置Enable Bitcode:NO;blog

    b.Other Linker Flags添加(注意:必定要按順序)-weak_framework,CoreMotion,-weak-lSystem,-licucoreip

    c.對Classes和Libraries的路徑進行配置;get

    在Header Search Paths中添加:it

    $(SRCROOT)/Classesio

    $(SRCROOT)/Classes/Native

    $(SRCROOT)/Libraries/libil2cpp/include

    在Library Search Paths中添加:

    $(PROJECT_DIR)/Libraries(若有,則不須要重複添加)

    $(PROJECT_DIR)/Libraries/Plugins/iOS

    d.Other C Flags添加 -DINIT_SCRIPTING_BACKEND=1 和 -DRUNTIME_IL2CPP=1

    e.設置Enable C++ Runtime Types:NO

    f.設置Overriding Deprecated Objective-C Methods:Yes

    g.設置Unintentional Root Class:Yes

    h.點擊以下圖的+號,添加4個Add User-Defined Setting

    GCC_THUMB_SUPPORT : NO

    GCC_USE_INDIRECT_FUNCTION_CALLS : NO

    UNITY_RUNTIME_VERSION : 2018.2.21f1(以本身Unity實際版本號爲準)

    UNITY_SCRIPTING_BACKEND : il2cpp

  • 步驟五:在Target->Build Phases中導入如下庫(建議以本身Unity導出的Xcode項目對應添加):

Classes文件夾下的main.mm中所有代碼複製到Xcode生成的main.m中;將main.mm代碼中的"UnityAppController"修改爲"AppDelegate";

將main.m修改成main.mm而後進行如圖操做:

  • 步驟六:把Classes文件夾下的UnityAppController.h進行如圖修改(報錯是由於AppDelegate中還未作修改)

  • 步驟七:對AppDelegate進行以下修改:

  • 步驟八:最後實現iOS界面和Unity界面相互切換

    a.iOS界面切換到Unity界面; 在ViewController.m中建立一個button,點擊觸發方法以下:

    b.Unity界面切換到iOS界面; 在unityWindow上添加一個button,以下:

補充Unity3D中須要對PlayerSettings作的設置:

1.取消Auto Graphics API的勾選並移除Metal選擇OpenGLES2(補充:取消勾選,選擇Metal也能成功,根據相關報錯信息自行修改)

2.取消Strip Engine Code的勾選

報錯補充: 錯誤1:

只須要找到DeviceSettings.mm文件添加默認return 值

錯誤2:

改寫成以下圖所示便可

錯誤3:

須要在Other C Flags裏添加支持.net4.0

最終效果

能夠動手嘗試,若有錯誤歡迎批評指正。聯繫方式QQ:877479310

相關文章
相關標籤/搜索