首先了解下使用DLL的优势,程序运行时不用加载所有代码,只有运行到引用时,才从DLL库中取出。并且使用DLL文件还可以减小程序体积,封装好的DLL文件,由于函数已经封装到DLL文件中,防止意外变更。所以编译器不会对我们的 DLL 进行编译,而是直接运 行,程序执行需要时调用的,许多搞插件开发的,都是将代码封装为 DLL ,并加密。这样既提高了运行效率,也保证了代码的基本安全性。
创建DLL
1.创建库
以 为例
打开 Visual Studio 2015(我用的vs2015),新建项目:文件→→新建→→项目,选择 Visual C# 类库 (.NET Framework)
我这里将命名空间改为MyDLL。随意!
2.下面添加代码:
添加代码注意:
a.所有需要通过 dll 调用的函数,访问修饰符都需要设为公有即public static
b.若想要调用 Unity的API ,就需要导入 Unity 中的2个 DLL 到库中
导入UnityAPI所需两个DLL:
1.先找到这两个DLL文件:
添加引用
方式1:
方式2:
右键引用
点击浏览,根据刚才找到库文件的路径
添加即可。这样程序才能访问到我们DLL库中的函数了。
添加测试函数
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading; 6 using UnityEditor; 7 using UnityEngine; 8 namespace MyDLL 9 { 10 public class Class1 11 { 12 /// <summary> 13 /// 加法运算 14 /// </summary> 15 /// <param name="a"></param> 16 /// <param name="b"></param> 17 /// <returns></returns> 18 public static int Addition(int a,int b) { 19 return a + b; 20 } 21 /// <summary> 22 /// 乘法运算 23 /// </summary> 24 /// <param name="a"></param> 25 /// <param name="b"></param> 26 /// <returns></returns> 27 public static int Multiplication(int a, int b) 28 { 29 return a * b; 30 } 31 /// <summary> 32 /// 减法运算 33 /// </summary> 34 /// <param name="a"></param> 35 /// <param name="b"></param> 36 /// <returns></returns> 37 public static int Subtraction(int a, int b) 38 { 39 return a - b; 40 } 41 42 } 43 }
3.配置生成解决方案
在解决方案中,右键项目选择属性,打开设计界面--应用程序,Unity需要输出 3.5版本及以下版本的dll
保存-》右键解决方案-》生成解决方案,或者
4.找到生成的DLL
生成后,找到我们的DLL文件,文件在我们库项目中的 bin/Debug
目录下
我的文件:
5.调用创建的DLL文件
将找到的自己创建的DLL文件放入Unity的Plugins文件夹下(这里要注意的是Unity 2017.3版本后,库文件需要放在 Plugins文件夹下,才可以正常启用,在这里我是vs2015,无所谓)
1 using System.Collections; 2 using System.Collections.Generic; 3 using UnityEngine; 4 5 public class DLLtext : MonoBehaviour { 6 7 void Start () { 8 Debug.Log(MyDLL.Class1.Addition(1, 2)); 9 Debug.Log(MyDLL.Class1.Multiplication(3, 2)); 10 Debug.Log(MyDLL.Class1.Subtraction(4, 2)); 11 } 12 }
打印结果: