草庐IT

ios - 在 Swift 项目中集成 Unity

coder 2023-09-10 原文

好吧,我已经看过并尝试过类似问题“如何将 Unity iOS 代码集成到 Swift 项目”中的大部分教程。但是我所有的尝试都失败了,链接器错误“架构 arm_64 没有这样的符号”或“架构 x86_64 没有这样的符号”。我在 Unity 端尝试了不同的构建选项,但没有成功。 所有这些教程/文章的共同缺点是:它们都已过时,我发现文章的最新版本 Unity 是 2018.2.2f1,我的 Unity 版本是 2018.2.20f1。 那么,有人知道如何将 Unity 2018.2.20+ iOS 构建的代码集成到 Swift 4.2 (XCode 10) 项目中吗? 任何帮助将不胜感激。

最佳答案

以下是我如何将 unity 集成到我的 swift 项目中。

  1. 创建新的 Xcode 项目(使用 swift)

  2. (创建桥接 header 步骤)创建新类文件 -> 新建 -> Cocoa touch 类并选择语言 Objective C,它将要求创建桥接 header ,选择创建

  3. 转到 https://github.com/jiulongw/swift-unity并下载 zip 文件

  4. 打开下载的文件并解压缩。转到 Xcode 文件夹 -> DemoApp-> 你会发现 Unity 文件夹 复制粘贴到你的项目(如果你拖放它,确保你选中了在目标位置复制的复选框)

  5. 并排打开新的 Xcode 项目和自动生成的 unity 项目,以便轻松复制粘贴

  6. Classes Folder 从 unity Xcode 项目复制到您的 Xcode 项目到第 4 步的 unity 文件夹

  7. Library Folder 从 unity Xcode 项目复制到您的 Xcode 项目到第 4 步的 unity 文件夹

  8. Data 文件夹从 unity Xcode 项目复制到您的 Xcode 项目到第 4 步的 unity 文件夹

  9. 重要 转到 Xcode 项目点击左侧的项目名称,将有两个选项项目和目标。在中央主窗口中选择项目,您可以看到Configuration展开它,然后针对您的项目名称选择Unity from drop drown

  10. Goto Classes 您在步骤中复制的文件夹 并删除 ma​​in.mm 文件或注释所有内容

  11. 转到您在第 3 步中下载的文件夹 将 AppDelegate.swift 的所有代码复制到您的 AppDelegate.swift 文件

  12. 在您的 Xcode 项目中搜索 YourProjectFileName-Bridging-Header 并复制粘贴

    #ifndef BRIDGING_HEADER #define BRIDGING_HEADER

    #import #import "UnityUtils.h" #import "UnityAppController.h" #import "UnityInterface.h"

    #endif/* BRIDGING_HEADER */

  13. 复制粘贴 LaunchScreen-iPad.xibLaunchScreen-iPhone.xib 到您的项目并删除 LaunchScreen.storyboard

  14. 编译它 :] 它应该编译成功(在我的情况下我得到的错误是 DeviceSettings.mm 缺少 return 语句所以我只是在 } 之前添加了 return deviceUnknown;)

  15. 您可以查看第 3 步下载的 view controller.swift 文件,了解如何在您的屏幕上显示统一 View

注意:集成unity后无法在模拟器中运行,必须在真机中运行。 最好在同一台机器上安装 unity 和 xcode。有时所有的框架只获取文件夹的引用,所以在不同的机器上你可能会遇到这个问题

最后你的项目应该是这样的

关于ios - 在 Swift 项目中集成 Unity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53887526/

有关ios - 在 Swift 项目中集成 Unity的更多相关文章

  1. ruby - 如何在 buildr 项目中使用 Ruby 代码? - 2

    如何在buildr项目中使用Ruby?我在很多不同的项目中使用过Ruby、JRuby、Java和Clojure。我目前正在使用我的标准Ruby开发一个模拟应用程序,我想尝试使用Clojure后端(我确实喜欢功能代码)以及JRubygui和测试套件。我还可以看到在未来的不同项目中使用Scala作为后端。我想我要为我的项目尝试一下buildr(http://buildr.apache.org/),但我注意到buildr似乎没有设置为在项目中使用JRuby代码本身!这看起来有点傻,因为该工具旨在统一通用的JVM语言并且是在ruby中构建的。除了将输出的jar包含在一个独特的、仅限ruby​​

  2. ruby-on-rails - 项目升级后 Pow 不会更改 ruby​​ 版本 - 2

    我在我的Rails项目中使用Pow和powifygem。现在我尝试升级我的ruby​​版本(从1.9.3到2.0.0,我使用RVM)当我切换ruby​​版本、安装所有gem依赖项时,我通过运行railss并访问localhost:3000确保该应用程序正常运行以前,我通过使用pow访问http://my_app.dev来浏览我的应用程序。升级后,由于错误Bundler::RubyVersionMismatch:YourRubyversionis1.9.3,butyourGemfilespecified2.0.0,此url不起作用我尝试过的:重新创建pow应用程序重启pow服务器更新战俘

  3. ruby-on-rails - 新 Rails 项目 : 'bundle install' can't install rails in gemfile - 2

    我已经像这样安装了一个新的Rails项目:$railsnewsite它执行并到达:bundleinstall但是当它似乎尝试安装依赖项时我得到了这个错误Gem::Ext::BuildError:ERROR:Failedtobuildgemnativeextension./System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/rubyextconf.rbcheckingforlibkern/OSAtomic.h...yescreatingMakefilemake"DESTDIR="cleanmake"DESTDIR="

  4. ruby - 如何验证 IO.copy_stream 是否成功 - 2

    这里有一个很好的答案解释了如何在Ruby中下载文件而不将其加载到内存中:https://stackoverflow.com/a/29743394/4852737require'open-uri'download=open('http://example.com/image.png')IO.copy_stream(download,'~/image.png')我如何验证下载文件的IO.copy_stream调用是否真的成功——这意味着下载的文件与我打算下载的文件完全相同,而不是下载一半的损坏文件?documentation说IO.copy_stream返回它复制的字节数,但是当我还没有下

  5. Ruby 文件 IO 定界符? - 2

    我正在尝试解析一个文本文件,该文件每行包含可变数量的单词和数字,如下所示:foo4.500bar3.001.33foobar如何读取由空格而不是换行符分隔的文件?有什么方法可以设置File("file.txt").foreach方法以使用空格而不是换行符作为分隔符? 最佳答案 接受的答案将slurp文件,这可能是大文本文件的问题。更好的解决方案是IO.foreach.它是惯用的,将按字符流式传输文件:File.foreach(filename,""){|string|putsstring}包含“thisisanexample”结果的

  6. Ruby 从大范围中获取第 n 个项目 - 2

    假设我有这个范围:("aaaaa".."zzzzz")如何在不事先/每次生成整个项目的情况下从范围中获取第N个项目? 最佳答案 一种快速简便的方法:("aaaaa".."zzzzz").first(42).last#==>"aaabp"如果出于某种原因你不得不一遍又一遍地这样做,或者如果你需要避免为前N个元素构建中间数组,你可以这样写:moduleEnumerabledefskip(n)returnto_enum:skip,nunlessblock_given?each_with_indexdo|item,index|yieldit

  7. Unity 热更新技术 | (三) Lua语言基本介绍及下载安装 - 2

    ?博客主页:https://xiaoy.blog.csdn.net?本文由呆呆敲代码的小Y原创,首发于CSDN??学习专栏推荐:Unity系统学习专栏?游戏制作专栏推荐:游戏制作?Unity实战100例专栏推荐:Unity实战100例教程?欢迎点赞?收藏⭐留言?如有错误敬请指正!?未来很长,值得我们全力奔赴更美好的生活✨------------------❤️分割线❤️-------------------------

  8. FOHEART H1数据手套驱动Optitrack光学动捕双手运动(Unity3D) - 2

    本教程将在Unity3D中混合Optitrack与数据手套的数据流,在人体运动的基础上,添加双手手指部分的运动。双手手背的角度仍由Optitrack提供,数据手套提供双手手指的角度。 01  客户端软件分别安装MotiveBody与MotionVenus并校准人体与数据手套。MotiveBodyMotionVenus数据手套使用、校准流程参照:https://gitee.com/foheart_1/foheart-h1-data-summary.git02  数据转发打开MotiveBody软件的Streaming,开始向Unity3D广播数据;MotionVenus中设置->选项选择Unit

  9. unity---接入Admob - 2

    目录1.AdmobSDK下载地址2.将下载好的unityPackagesdk导入到unity里​编辑 3.解析依赖到项目中

  10. Unity 3D 制作开关门动画,旋转门制作,推拉门制作,门把手动画制作 - 2

    Unity自动旋转动画1.开门需要门把手先动,门再动2.关门需要门先动,门把手再动3.中途播放过程中不可以再次进行操作觉得太复杂?查看我的文章开关门简易进阶版效果:如果这个门可以直接打开的话,就不需要放置"门把手"如果门把手还有钥匙需要旋转,那就可以把钥匙放在门把手的"门把手",理论上是可以无限套娃的可调整参数有:角度,反向,轴向,速度运行时点击Test进行测试自己写的代码比较垃圾,命名与结构比较拉,高手轻点喷,新手有类似的需求可以拿去做参考上代码usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;u

随机推荐