【问题标题】:How to include custom library files in Unity build如何在 Unity 构建中包含自定义库文件
【发布时间】:2018-02-12 04:56:06
【问题描述】:

当我在编辑器中运行我的 Unity 应用程序时,它能够读取我的 .dll 和 .dll 需要的其他自定义文件,并且工作正常。但是,当我进行构建时,它只包含构建的 Plugins 文件夹中的 .dll 文件,而不包含其他自定义文件。有没有办法强制 Unity 也包含其他文件?在构建之前,我尝试将它们都放在 Plugins 和 Resources 文件夹中,并且在这两种情况下它只保留 .dll。

【问题讨论】:

  • 您说 dll 文件工作正常。哪些类型的其他自定义文件不起作用?
  • 自定义文件是 .obf,但我认为这无关紧要。该库带有 .dll 和 .obfs。 .dll 依赖 .obf 文件作为自定义帮助程序库文件来工作。因此,只要我找到一种方法来强制 Unity 在构建中不过滤掉 .obfs,它就应该可以工作。

标签: unity3d build


【解决方案1】:

自定义文件是 .obf,但我认为这无关紧要

这是非常相关的。 Unity 不支持所有类型的库。

以下是支持的库扩展:

对于 Windows,您可以使用 .dll

对于 Linux,支持 .so

对于Android,只能使用.aarrar.so

对于 iOS,使用 .a,但您也可以使用非编译代码,例如 ,.m,.mm,.c.cpp.

不支持 .obf。如果您想将它添加到您的项目中以便您可以加载并执行它,那么您就不走运了。

如果您只是想让 Unity 将其包含到您的最终项目构建中以便您可以阅读它,那么您可以。这并不意味着您可以加载并执行它。

首先,将扩展名从 ".obf" 重命名为 ".bytes"。将其放在 Resources 文件夹中,并使用Resources.Load 函数将其读取为TextAsset。您可以使用TextAsset.bytes 访问数据。

TextAsset dataAsset = (TextAsset)Resources.Load("YourObfName", typeof(TextAsset));
byte[] data = dataAsset.bytes;

不确定阅读它有多大帮助,但这里是为了向您展示如何将其包含到构建中并阅读它,但除非有 C# API 来执行它,否则您无法执行它,我不认为任何此类 API 都存在。

【讨论】:

  • 感谢您的回复!但是,回到我的问题,我要问的是如何让 Unity 将文件包含在 build_Data 文件夹中。我说文件类型无关紧要,因为确实如此。我可能一直在问您如何在 Unity 构建中包含 .pdf 文件。我知道 Unity 不支持所有文件,我想知道如何强制它在构建中包含其中一些不受支持的文件。我不是在问如何阅读 C# 中的文件
  • 同样,它是相关的,因为您的标题显示“库文件”。 .pdf 文件不是库,而是资源文件。我认为您不了解图书馆是什么。如您的问题下的comment 中所述,您要加载的文件示例是一个真正的库,但由于其扩展名而不受支持。您可以通过重命名扩展来强制 Unity 将其添加到您的构建中,但您不能将其作为插件加载。再读一遍这个答案。
  • 1.同样,您不能将它添加到 build_Data 文件夹,因为它不受支持。 2.您可以强制Unity将其添加到构建中的资源数据中。请参阅答案以了解如何做到这一点。就是这样。
猜你喜欢
  • 2017-01-25
  • 1970-01-01
  • 2015-01-03
  • 2011-03-04
  • 2013-01-06
  • 2020-06-16
  • 2016-11-03
  • 2021-10-28
  • 1970-01-01
相关资源
最近更新 更多