IOS项目嵌入Unity工程.docx

上传人:b****5 文档编号:4042789 上传时间:2022-11-27 格式:DOCX 页数:10 大小:960.38KB
下载 相关 举报
IOS项目嵌入Unity工程.docx_第1页
第1页 / 共10页
IOS项目嵌入Unity工程.docx_第2页
第2页 / 共10页
IOS项目嵌入Unity工程.docx_第3页
第3页 / 共10页
IOS项目嵌入Unity工程.docx_第4页
第4页 / 共10页
IOS项目嵌入Unity工程.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

IOS项目嵌入Unity工程.docx

《IOS项目嵌入Unity工程.docx》由会员分享,可在线阅读,更多相关《IOS项目嵌入Unity工程.docx(10页珍藏版)》请在冰豆网上搜索。

IOS项目嵌入Unity工程.docx

IOS项目嵌入Unity工程

Unity版本:

2017.2.1f1

Xcode版本:

xcode9.2

一、导出unity项目

1.File->BuildSettings->ios->Switchplatform切换为iOS平台

2.PlayerSettings关键的几个点

这个地方仅用OpenGLES2

导入之后的项目先build一下以防有错误不能编译通过。

2.嵌入自己的IOS项目中

说明:

以下所有的文件结构和TARGETS配置都可以参考Unity导出来的工程结构和配置。

1、将Unity项目下面的四个文件复制到iOS项目根目录下:

2、在自己iOS项目里面引用这个几个文件,右键分别选择Classes和Libraries、MapFileParser.sh拖入项目,在Options里面勾选

  “Creategroups”,不要选"Copyitemsifneeded”

   

  2.1、剩下一个Data文件,拖入到项目中,这里的选项是“Createfolderreferences”,

 

   完成之后,文件结构是这个样子:

                            2.2、接下来删除多余的引用:

在Classes->Native目录,将目录下的.h文件全部删除(注意:

只有.h,因为里面还有.cpp,在Unity2017导出的版本可以不删,也没影响,这一步其实可以忽略)

         

      

     2.3、再删除Libraries->libil2cpp,这个文件的引用,同上面操作步骤一样的

                             

3、对工程环境的配置(参考导出的Unity工程项目)

3.1添加引用库

参考Unity导出的项目中BuildPhases->LinkBinaryWithLibraries

与其保持一致。

4、3.2、添加头文件和库的搜索路径(参考导出的Unity工程项目)

 

      3.3其他设置(均可参考Unity导出的项目) 

            

(上面注意:

如果自己的iOS项目有pch文件,那就把Prefix.pch里面的文件拷贝到自己的pch文件中,反之也行)

      

           3.4添加用户定义的设置

上面是Unity5.3.4的,下面是2017的,只是版本号改了

3.5添加运行脚本

  

设置修改完成。

 

3.代码修改部分

创建PrefixHeader.pch文件:

File->New->Other->PCHfile

删除里面的所有代码并插入以下内容:

#ifndefPrefixHeader_pch

#definePrefixHeader_pch

#ifdef__OBJC__

#import

#import

#endif

#include"Preprocessor.h"

#include"UnityTrampolineConfigure.h"

#include"UnityInterface.h"

#ifndef__OBJC__

#ifUSE_IL2CPP_PCH

#include"il2cpp_precompiled_header.h"

#endif

#endif

#ifndefTARGET_IPHONE_SIMULATOR

#defineTARGET_IPHONE_SIMULATOR0

#endif

#defineprintf_consoleprintf

#endif

现在在BuildSettings下面的AppleLLVM7.1-Language部分,找到调用的字段PrefixHeader,而不是/ENTER/PATH/HERE添加以前创建的文件的路径,例如:

YOUR_PROJECT_NAME/PrefixHeader.pch在我的情况是:

 UnityIntegration/PrefixHeader.pch

##步骤8

重命名SupportingFiles/main.m,以main.mm和AppDelegate.m对AppDelegate.mm

##第9步

转到Integration/Classes/main.mm,复制此文件中的所有代码并粘贴它,而不是代码SupportingFiles/main.mm

现在,在SupportingFiles/main.mm换线:

constchar*AppControllerClassName="UnityAppController";

有:

 constchar*AppControllerClassName="AppDelegate";

##第10步

转到BuildPhases,搜索"main"并在CompileSources部分删除与Classes文件夹对应的文件:

##步骤11

内部UnityAppController.h文件进行以下更改:

评论部分:

inlineUnityAppController*GetAppController()

{

return(UnityAppController*)[UIApplicationsharedApplication].delegate;

}

并粘贴:

NS_INLINEUnityAppController*GetAppController()

{

NSObject*delegate=[UIApplicationsharedApplication].delegate;

UnityAppController*currentUnityController=(UnityAppController*)[delegatevalueForKey:

@"unityController"];

returncurrentUnityController;

}

内部UnityAppController.mm文件进行以下更改:

#import"AppDelegate.h"

将空-(void)shouldAttachRenderDelegate方法替换为:

-(void)shouldAttachRenderDelegate{

AppDelegate*delegate=(AppDelegate*)[UIApplicationsharedApplication].delegate;

[delegateshouldAttachRenderDelegate];

}

##步骤12 VuforiaNativeRendererController.mm文件注释最后一行:

IMPL_APP_CONTROLLER_SUBCLASS(VuforiaNativeRendererController)

注意:

如果你改变你的Unity项目中的东西,选择Build->Append。

之后,你需要VuforiaNativeRendererController.mm再次评论这一行

##第13步让我们创建一个按钮,在我们的应用程序中打开Unity+Vuforia视图。

在ViewController.m添加以下部分:

#import"AppDelegate.h"

@property(nonatomic,strong)UIButton*showUnityButton;

-(void)viewDidLoad{

[superviewDidLoad];

self.view.backgroundColor=[UIColorblueColor];

self.showUnityButton=[UIButtonbuttonWithType:

UIButtonTypeSystem];

[self.showUnityButtonsetTitle:

@"SHOWUNITY"forState:

UIControlStateNormal];

self.showUnityButton.frame=CGRectMake(0,0,100,44);

self.showUnityButton.center=self.view.center;

[self.viewaddSubview:

self.showUnityButton];

[self.showUnityButtonaddTarget:

selfaction:

@selector(showUnityButton:

)forControlEvents:

UIControlEventTouchUpInside];

}

-(void)showUnityButton:

(UIButton*)sender{

[(AppDelegate*)[UIApplicationsharedApplication].delegateshowUnityWindow];

}

##步骤14

在这种回购,你可以找到既AppDelegate.h和AppDelegate.mm文件及其内容粘贴到您的文件。

不久,这些文件发生了什么:

我们UIWindow为main和Unity内容创建2个实例

在我们使用的窗口-(void)showUnityWindow和 -(void)hideUnityWindow方法之间切换

我们也有实例unityController的UnityAppController类型,因为我们采取了远离团结生成的应用程序委托控制,我们需要通过我们的应用程序委托传递给它的呼叫

在(BOOL)application:

(UIApplication*)applicationdidFinishLaunchingWithOptions:

(NSDictionary*)launchOptions我们创建这些窗口,根视图控制器,导航控制器等,所以应用程序将正常工作

#FinalBuilding并运行应用程序将显示如下:

我们按下ShowUnity按钮,它会打开Unity+Vuforia视图,该视图可以很好地识别标记并在中心显示漂亮的黄色按钮,这可以将我们带回到之前的视图控制器

有用的链接

https:

//the-nerd.be/2015/11/13/integrate-unity-5-in-a-native-ios-app-with-xcode-7/

 

主要参考链接:

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 数学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1