在Unity中引用Dll的两种方法

来源:互联网 发布:软件测试费 编辑:程序博客网 时间:2024/05/17 05:04





原址:http://blog.sina.com.cn/s/blog_9afc14d001018og9.html


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的两种方法







----------------------------------------------   fen  ge  xian  ------------------------------------------------






转载请著名出处:http://oulehui.blog.163.com/blog/static/79614698201011835819382/
JS用法
import System;
import System.Runtime.InteropServices;
@DllImport("user32.dll")
public static function MessageBox(Hwnd : int,text : String,Caption : String,iType : int) : int {};

function Start()
{
MessageBox(0, "API Message Box", "Win32 API", 64) ;
}
function Update () {
}


补充C#用法

C文件
float FooPluginFunction () { return 5.0F; }
将DLL放在 Assets->Plugins文件夹中,文件夹自己建立

C#脚本
using UnityEngine;
using System.Runtime.InteropServices;

class SomeScript : MonoBehaviour {
   // This tells unity to look up the function FooPluginFunction
   // inside the plugin named "PluginName"
   [DllImport ("PluginName")]
   private static extern float FooPluginFunction ();

   void Awake () {
      // Calls the FooPluginFunction inside the PluginName plugin
      // And prints 5 to the console
      print (FooPluginFunction ());
   }
}







原创粉丝点击