在Unity中引用Dll的两种方法

来源:互联网 发布:linux 删除别名 编辑:程序博客网 时间:2024/06/10 00:25

Unity3D 能够很方便的集成一些外部插件,以便调用现有的动态链接库。下面会介绍Unity中如何集成Dll的两种方法。

1.   标准引用

这里所使用的语言是C#

1.1   新建C#类库项目,这里就不多介绍了。

1.2   项目建好后正常的编写代码。

【原创】在Unity中引用Dll的两种方法

以上是一个简单的测试代码。

1.3   将项目属性 -> 应用程序 -> 目标框架:改为 .NET Framework 3.5或以下 。这一步很重要,因为Unity3D(当前的Unity3D版本是3.5版) 支持的 .Net 3.5版。

如果选择的是4.0版会出现

Internal compiler error. See the console log for more information. output was:

Unhandled Exception: System.TypeLoadException: Could not load type 'System.Runtime.Versioning.

错误。

【原创】在Unity中引用Dll的两种方法

1.4   生成解决方案。到此,C# Dll工作完成。

1.5   导入DllUnity中。将Dll拷贝到Assets目录下任何一个目录都可以。一般是在Plugins目录中,因为Dll大多是外部功能块,同时也方便跨语言调用。

1.6   Unity中编写简单代码。

【原创】在Unity中引用Dll的两种方法

1.7   运行结果。

【原创】在Unity中引用Dll的两种方法

2.   Unity的方案

官网指出,Unity已经广泛支持基于CC++或者Objective-C语言的插件。原文说明http://docs.unity3d.com/Documentation/Manual/Plugins.html 以下示例可从官网获得,下载示例代码http://docs.unity3d.com/Documentation/Images/manual/SimplestPluginExample.zip

2.1   编写插件代码。

【原创】在Unity中引用Dll的两种方法

2.2   Unity要做些什么。

【原创】在Unity中引用Dll的两种方法

注意:在[DllImport ("ASimplePlugi")] 参数中不要加入 .dll 后缀。

2.3   运行结果如下。

【原创】在Unity中引用Dll的两种方法



在 Unity 项目中调试 DLL

许多 Unity 开发人员将代码组件编写为外部 Dll,以便可轻松地与其他项目共享开发的功能。Visual Studio Tools for Unity 可以轻松无缝地调试这些 DLL 中的代码以及 Unity 项目中的其他代码。

System_CAPS_note注意

Visual Studio Tools for Unity 此时仅支持托管 DLL。它不支持调试本机代码 DLL,如使用 C++ 编写的代码。

请注意,此处所述的方案假定你具有源代码(即你正在开发或重用自己的第一方代码)或具有第三方库的源代码,并计划在 Unity 项目中将其作为 DLL 进行部署。此方案未描述不具备源代码时的 DLL 调试。

调试 Unity 项目中使用的托管 DLL 项目

  1. 将现有的 DLL 项目添加到由 Visual Studio Tools for Unity 生成的 Visual Studio 解决方案中。不太常见的情况是:你可能会启动一个新的托管 DLL 项目,以便在 Unity 项目中包含代码组件;如果是这种情况,则可将新的托管 DLL 项目添加到 Visual Studio 解决方案。有关向解决方案添加新项目或现有项目的详细信息,请参阅如何:向解决方案添加项目。

    将现有的 DLL 项目添加到解决方案。

    在任一情况下,Visual Studio Tools for Unity 均将维护项目引用,即使不得不再次重新生成项目和解决方案文件,所以你只需要执行一次这些步骤。

  2. 引用 DLL 项目中正确的 Unity 框架配置文件。在 Visual Studio 的 DLL 项目属性中,将“目标框架”属性设置为正在使用的 Unity 框架版本。这是与你的项目作为目标的 API 兼容性相匹配的 Unity 基类库,如 Unity 完整、微型或 Web 基类库。这可以防止你的 DLL 调用存在于其他框架或兼容性级别中而不存在于你正在使用的 Unity 框架版本中的框架方法。

    将 DLL 的目标框架设置为 Unity 框架。
  3. 将 DLL 复制到 Unity 项目的资产文件夹。在 Unity 中,资产是与 Unity 应用一起打包和部署的文件,所以可以在运行时加载它们。由于 DLL 于运行时链接,因而必须将 DLL 作为资产部署。若要部署为资产,Unity 编辑器需要将 DLL 放置在 Unity 项目的“资产”文件夹中。可以采用两种方法执行此操作:

    • 修改 DLL 项目的生成设置,以包含将输出 DLL 和 PDB 文件从输出文件夹复制到 Unity 项目“资产”文件夹的生成后任务。

    • 修改 DLL 项目的生成设置,以将其输出文件夹设置为 Unity 项目的“资产”文件夹。DLL 和 PDB 文件都将放置在“资产”文件夹中。

    需要调试 PDB 文件(因为它们包含 DLL 的调试符号),并将 DLL 代码映射到其源代码形式。Visual Studio Tools for Unity 将使用来自 DLL 和 PDB 的信息来创建一个 DLL.MDB 文件,此文件是 Unity 脚本引擎所使用的调试符号格式。

  4. 调试代码。现在可以同时调试 DLL 源代码以及 Unity 项目的源代码,并使用所有熟悉的调试功能,如断点和单步调试代码。


1 0