如何正确包含.bundle到Unity3d包

时间:2013-02-14 16:56:29

标签: ios unity3d

我有一个带有静态库的unity3d的iOS插件,这个库使用来自.bundle的一些图像。但是,我无法弄清楚如何将我的捆绑包包含在Unity Package中。当我将我的包放到包中并尝试从Unity3d编辑器构建项目时,最终我没有将生成的包包含在生成的XCode项目中。

所以我有两个问题:

1)有没有办法将它复制到生成的项目?

2)是否可以在unity3d插件中指定额外的框架(我依赖于AdSupport.framework)也可以包含在生成的项目中。

更新:您可以将捆绑包复制到Assets / WebPlayerTemplates,以便Unity3d不会从那里导入任何内容,此目录也会导出到unitypackage。最后一步是使用postbuild脚本将你的包包含到生成的Xcode项目中,我使用了XUPorter

3 个答案:

答案 0 :(得分:2)

Unity将文件夹 Assets / Plugins / iOS 中的每个文件复制到Xcode项目的Library文件夹中。这对于你的lib文件和其他东西来说是完美的,但是当它归于目录结构时它会失败。资源包是目录,因此Unity只复制目录的 .meta 文件,并拒绝复制内部文件。

解决方法是手动复制捆绑包并将其导入Xcode(菜单文件/添加文件到“Unity-iPhone”)。之后,您应始终以追加模式导出iOS项目(默认情况下,CMD + B会执行此操作)。有两个缺点:

  • 当您更新到较新版本的Unity时,项目经常被替换,因此您的捆绑已经消失。如果您使用git进行版本控制,我建议将软件包添加到存储库,Subversion用户必须做额外的工作。
  • 每当软件包项目中的软件包发生更改时,您都必须复制它。如果这种情况经常发生,那么您可以在构建过程中设置预执行操作,即编写一个从libraty项目复制资源包的小shell脚本。这可以在编辑方案中完成: Edit Scheme / Build /  Pre-actions
    同样,这可能会在Unity更新中被覆盖,您必须再次手动设置预执行。

答案 1 :(得分:1)

我发现没有办法以这样的方式配置Unity3d,它包含额外的框架和包来生成Xcode项目(即Marmalade SDK允许你通过配置这样做),我使用mod_pbxproj和Unity3d控制台生成XCode项目的工具,并在构建完成时将所有必要的包和框架注入项目。

有一个更好的选择,请参阅问题本身。

答案 2 :(得分:0)

实际上,有一种方法。不确定是否在您的答案/评论之后添加了此内容;

  1. 在Unity编辑器中的目录中找到.bundle文件,然后单击它。
  2. 从“检查器”面板中,仅从包含平台 enter image description here
  3. 中选择 iOS
  4. 在检查器面板中单击应用
  5. 在为iOS进行构建时,导出Xcode项目时,您会看到.bundle。[检查构建阶段/复制捆绑包资源]。