最近研究了下Unity对Dll的调用。查了一些资料,总结如下。
为什么要用DLL?
答:
1:你选择用来开发的编程语言并不被Unity支持(如 F#),这个时候你就可以考虑把这样的代码编译成DLL文件。
2:你并不想让代码公开,只是想提供调用接口,那么DLL是一个很好的选择。
怎么做?
答:回答这个问题,首先要解决“怎么创建Unity3d 支持的DLL”和“Unity3D要怎么使用DLL.”
1. 创建Unity3d支持的DLL
(1)选择合适的编译器(因为Unity并不能确保支持所有编译器编译的.Net代码)。
如:MonoDevelop Visual Studio
(2)确定代码是否基于Unity的API。
如果DLL文件不包含基于Unity的API的代码,你仍然可以使用合适的编译选项把它编译成DLL文件。
如果你想使用Unity的API,则你需要在编译器中引用Unity的DLL,有两个分别是UnityEngine.dll和UnityEditor.dll。
Mac系统上Unity的DLLS路径一般是:
/Applications/Unity/Unity.app/Contents/Frameworks/Managed/
Windows系统中,DLLS能在Unity应用的安装文件夹中找到。路径一般是:
C:\Program Files(x86)\Unity\Editor\Data\Managed
最后,准确的编译DLL将取决于编译器的使用。
例:Mono C#编译器的命令行,在Mac系统上mcs可能像下面这样
mcs -r:/Applications/Unity/Unity.app/Contents/Frameworks/Managed/UnityEngine.dll -target:library ClassesForDLL.cs
这里,-r指定了发布时被包含的库的路径,在这个例子中是UnityEngine的库。-target指定了发布时需要的文件;"library"被用于选着的发布一个DLL。最后,ClassForDLL.cs就是将要被编译的文件。 (假定这个文件是在当前工作目录,如果必要的话你可以指定文件使用的完整路径)。如果一切顺利,生成的DLL文件不久就会出现在源文件的同一文件夹下。
2. Unity3d使用DLL文件
一旦编译好,DLL文件就可以像其他资源一样被拖进Unity的工程里面。DLL资源上有个小三角形,用来揭示库里面单独的一些类。继承自MonoBehaviour类可以像普通的脚本拖到游戏对象上。Non-MonoBehaviour类可以以平时的方式直接在其他脚本中使用。
参考文献:http://docs.unity3d.com/Documentation/Manual/UsingDLL.html
附上一个 Demo,点击下载
原文链接:http://www.cnblogs.com/flamepenguin/p/3545979.html