美文网首页
Unity3d 如何调用DLL中方法

Unity3d 如何调用DLL中方法

作者: EvilPomelo | 来源:发表于2017-01-11 15:47 被阅读233次

    托管代码是一microsoft的中间语言(IL),它不直接运行在机器上而是运行在.net的CLR中。IL被封装在一个叫程序集(assembly)的文件中,一般输出形式为.dll或.exe文件,程序集中包含了描述你所创建的类,方法和属性(例如安全需求)的所有元数据。

    当程序集中某些方法被调用的时候,运行库把具体的方法编译成适合本地计算机运行的机械码。(这就是即时编译) 随着程序集的运行,运行库会持续地提供各种服务,例如自动垃圾回收、运行库类型检查和安全支持等。这些服务使得能编译成IL的源代码具有跨平台的特性。我们常用的C#只能编译成托管代码,而C++可以编译成托管代码和非托管代码。非托管代码就是直接编译成目标计算机的机器码。

    Unity3D中调用托管代码并不需要引入特性,我们演示一遍Unity3D中如何调用托管代码:

    1、创建类库项目,注意选择.net3.5版本,高版本Unity3d不支持

    Paste_Image.png

    2、编写任意方法并生成Dll

    namespace ManageDll
    {
    public class Class1
    {
        public string GetMessage()
        {
            return "成功调用非托管代码的方法";
        }
    
        public int Add(int a, int b)
        {
            return a + b;
        }
    }
    
    Paste_Image.png

    3、找到项目源文件\bin\Debug下的dll文件将其拷贝到Unity3d中Plugins中

    Paste_Image.png

    4、编写个测试脚本,注意引用DLL的命名空间

    using UnityEngine;
    using System.Collections;
    using ManageDll;
    public class UsingDll : MonoBehaviour 
    {
    void Start()
     {
        Class1 test = new Class1();
        string a = test.GetMessage();
        print(a);
        int b = test.Add(2, 3);
        print(b);
     }
    }
    

    5、将测试脚本挂载到场景中任意GameObject上,观察输出,调用成功

    Paste_Image.png

    调用非托管Dll需要使用Dlllmport特性,有兴趣的可以自行搜索。

    相关文章

      网友评论

          本文标题:Unity3d 如何调用DLL中方法

          本文链接:https://www.haomeiwen.com/subject/wmnvvttx.html