ios嵌入unity项目 Integrating Unity as a library into standard iOS app

Posted ( ・з・)

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ios嵌入unity项目 Integrating Unity as a library into standard iOS app相关的知识,希望对你有一定的参考价值。

参考:git地址
这个git地址是一个官方的示例,根据官方示例一步步操作。

  1. 下载工程项目uaal-example-master.zip

    解压后会看见

    其中NativeiosApp和UnityProject就是我们要用到的,NativeiOSApp里面包含了Xcode工程文件,UnityProject就是我们的unity工程文件。

  2. 打包UnityProject生成Xcode工程文件
    首先切换到ios平台 ,根据自己的项目设置Identification Section,Signing Team ID。设置Target Device和Target SDK (iPhone/ipad/iPhone+iPad;真机/虚拟机运行)。
    然后build。
    生成以下文件:

  3. 创建Xcode workspace
    (1).先用Xcode打开NativeiOSApp文件夹内的NativeiOSApp.xcodeproj。
    (2).依次点击File / New / Workspace 创建workspace

    (3).关闭NativeiOSApp.xcodeproj打开的Xcode工程。
    (4).把NativeiOSApp.xcodeproj 和刚刚打包的unity Unity-iPhone.xcodeproj导入到 创建的workspace中。(File / Add Files to “both”)
    (5).Add UnityFramework.framework
    ①选择NativeiOSApp General TARGETS 下翻到Frameworks, Libraries, and Embedded Content
    点击+ 添加Unity-iPhone/UnityFramework.framework(Unity-iPhone是我们添加)。
    ②点击Build Phases找到Link Binary With Libraries把里面的UnityFramework.framework删掉

  4. 修改NativeCallProxy.h文件为Public

  1. 设置data文件为UnityFramework

  2. 完成了,可以打包测试了!!!
    ps:持续测试中,有问题请指正,谢谢!

优化 - 步进可能会表现得很奇怪:iOS/Unity

【中文标题】优化 - 步进可能会表现得很奇怪:iOS/Unity【英文标题】:optimization - stepping may behave oddly : iOS/Unity 【发布时间】:2017-07-13 11:08:27 【问题描述】:

我正在尝试将 unity 集成到 iOS 应用程序中。我已经按照这个教程http://www.agnosticdev.com/blog-entry/swift/integrating-unity-and-vuforia-ios-swift-project

现在,当我启动我的应用程序时,它会崩溃并在控制台上显示此错误:was compiled with optimization - stepping may behave oddly; variables may not be available.

崩溃:

我试过谷歌搜索并找到这些链接:

    APPNAME was compiled with optimization - stepping may behave oddly; variables may not be available 'Project Name' was compiled with optimization - stepping may behave oddly; variables may not be available Xcode target compiled with optimization Xcode: Cannot set optimization level for debug

什么都没有改变。

我更改了项目和 pod 的优化级别。 我还在 pod 文件中添加了这一行:project 'MyProject', 'Debug - local'=>:debug, 'Debug - staging'=>:debug, 'Debug - PRODUCTION'=>:debug(在目标 'projectname' 之前)

我也统一取消选中Strip Engine Code

我能做些什么来克服这个错误? 任何帮助将不胜感激,谢谢。

【问题讨论】:

这很可能是因为某些数字类型变量在使用前没有初始化。启用优化后,它将选择垃圾值,而在其他情况下可能取 0。尝试使用僵尸 - developer.apple.com/library/content/documentation/… 它可能有助于找到确切的代码。 @AmreshKumar 谢谢我会寻找僵尸。 @SharadChauhan 我遇到了同样的问题。您找到解决方案了吗? @duong_dajgja 不,我从来没有找到。 【参考方案1】:

您正在调试的代码是 IL2CPP 代码,它可能在预先构建的优化库中(可能在 libiPhone-lib.a 中)。您的构建设置只会影响现在在您的 xcode 项目中编译的代码,因此它们不会影响预构建的库。要消除警告,您需要重建该库,并且需要 Unity 源代码来执行此操作。

更重要的是,这不是导致崩溃的原因。它只是告诉你,要找到崩溃的源头将会变得更加困难。

看起来它正在调用一个名为 LoadMetadataFile 的函数并在访问返回时崩溃。您可能可以在该函数调用上设置一个断点并查看其中的内容以找到下一个调试步骤(bl 指令在突出显示的崩溃行上方 5 行)。

以下是一些可能对您有所帮助的文档: 苹果调用约定文档: https://developer.apple.com/library/content/documentation/Xcode/Conceptual/iPhoneOSABIReference/Articles/ARM64FunctionCallingConventions.html

arm指令参考(打开到崩溃指令):http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0802a/LDRSW_imm.html

【讨论】:

【参考方案2】:

我有同样的问题,我解决了它添加到Apple LLVM - Custom Compiler FLags:

其他 C 标志:-DRUNTIME_IL2CPP=1

【讨论】:

以上是关于ios嵌入unity项目 Integrating Unity as a library into standard iOS app的主要内容,如果未能解决你的问题,请参考以下文章

如何将 Vuforia Unity 2017.3 构建 OC iOS 项目作为框架嵌入/集成到 Swift iOS 项目中

优化 - 步进可能会表现得很奇怪:iOS/Unity

集成Unity3D到iOS应用程序中

Unity嵌入Android项目开发

我可以将 Unity 与 iOS 混合使用吗?

如何使用iOS模拟器调试Unity项目?