c# 调 C++ (C) 在unity3d中

来源:互联网 发布:程序员自我评价怎么写 编辑:程序博客网 时间:2024/04/30 09:54
///////////////////  DLL.h /////////////////////////////
#define _DLLExport __declspec (dllexport)
extern “C” int _DLLExport MyADD(int x,int y);


//////////////////   DLL.cpp ////////////////////////////
//加载头文件 
#include “DLL.h” 
//设置函数 
int _DLLExport MyADD(int x,int y) 
{ return x+y; }


//这个DLL文件放在你的Unity工程的assert的Plugins


///////////////////  C#      /////////////////////////////
public class UserClass:MonoBehaviour
{
    [DllImport("DLL")]
    public static extern void MyADD(int x,int y) ;

}


Unity3d-在Unity项目中使用Mono DLL(动态链接库)

最近研究了下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类可以以平时的方式直接在其他脚本中使用。


0 0
原创粉丝点击