Unity3d 如何在Unity build中包含自定义库文件

Unity3d 如何在Unity build中包含自定义库文件,unity3d,build,Unity3d,Build,当我在编辑器中运行Unity应用程序时,它能够读取我的.dll文件和.dll文件所需的其他自定义文件,并且工作正常。但是,当我进行构建时,它只包含构建的Plugins文件夹中的.dll文件,而不包括其他自定义文件。有没有办法强迫Unity也包含其他文件?在构建之前,我尝试将它们都放在Plugins和Resources文件夹中,在这两种情况下,它都只保留.dll 自定义文件是.obf,但我认为这与此无关 这是非常相关的。Unity不支持所有类型的库 以下是受支持的库扩展: 对于Windows,您可

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


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

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

以下是受支持的库扩展:

对于Windows,您可以使用.dll

对于Linux,支持.so

对于Android,您只能使用.aar、rar和.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


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

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

以下是受支持的库扩展:

对于Windows,您可以使用.dll

对于Linux,支持.so

对于Android,您只能使用.aar、rar和.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。

您说dll文件工作正常。什么类型的其他自定义文件不起作用?自定义文件是.obf,但我认为这与此无关。该库附带.dll和.obfs。.dll依赖.obf文件作为自定义帮助程序库文件来工作。因此,只要我找到一种方法来强制Unity在构建中不过滤.obfs,它就应该可以工作。您说过dll文件可以正常工作。什么类型的其他自定义文件不起作用?自定义文件是.obf,但我认为这与此无关。该库附带.dll和.obfs。.dll依赖.obf文件作为自定义帮助程序库文件来工作。因此,只要我找到一种方法来强制Unity在构建中不过滤.obfs,它就会工作。感谢您的回复!但是,回到我的问题,我要问的是如何让Unity将文件包含在build_数据文件夹中。我说文件类型是不相关的,因为它确实是。我可能会问你如何在Unity build中包含.pdf文件。我知道Unity不支持所有文件,我想知道如何强制它在构建中包含一些不受支持的文件。我不是问我怎么能读C#中的文件,这是相关的,因为你的标题是“库文件”。pdf文件不是库,而是资源文件。我想你不明白什么是图书馆。您要加载的文件的示例(如问题下方的中所述)是一个真正的库,但由于其扩展名而不受支持。您可以通过重命名扩展来强制Unity将其添加到构建中,但不能将其作为插件加载。请再次阅读此答案。1.同样,您无法将其添加到build_数据文件夹,因为它不受支持。2.您可以强制Unity将其添加到构建中的资源数据中。请参阅答案以了解如何做到这一点。就这样。谢谢你的回复!但是,回到我的问题,我要问的是如何让Unity将文件包含在build_数据文件夹中。我说文件类型是不相关的,因为它确实是。我可能会问你如何在Unity build中包含.pdf文件。我知道Unity不支持所有文件,我想知道如何强制它在构建中包含一些不受支持的文件。我不是问我怎么能读C#中的文件,这是相关的,因为你的标题是“库文件”。pdf文件不是库,而是资源文件。我想你不明白什么是图书馆。您要加载的文件的示例(如问题下方的中所述)是一个真正的库,但由于其扩展名而不受支持。您可以通过重命名扩展来强制Unity将其添加到构建中,但不能将其作为插件加载。请再次阅读此答案。1.同样,您无法将其添加到build_数据文件夹,因为它不受支持。2.您可以强制Unity将其添加到构建中的资源数据中。请参阅答案以了解如何做到这一点。就这样。