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

相关文章
相关标签/搜索