我发现很多大佬,插件开发者以及Unity官方都在用Dll来保证既可让使用者正常使用也可有效防止使用者看到自己写的代码

版本说明

Visual Studio版本:2019 16.10.3

Unity版本:2019.4.16f1c1

Dll介绍

DLL (Dynamic Link Library) —— 中文:动态链接库

我们 Windows 系统中就有着海量的 dll文件

当多个程序同时使用一个函数库时, DLL 即减少在磁盘和物理内存中加载的代码的重复量,同时也提高了响应速度

好处:

  1. 程序在运行之初无需加载所有代码,只有在程序执行到某个函数调用时,才从 DLL 中取出
  2. 使用 DLL 文件还可以减小程序的体积
  3. 封装好的 DLL 文件,由于函数已经封装到 DLL 文件中,不会变更。
    所以编辑器不会对我们的 DLL 进行编译,而是直接运行,程序执行需要时调用的

许多大神,或是插件开发者,都是将代码封装为DLL ,并加密。

这样既提高了运行效率,也保证了代码的基本安全性,不被他人看到

而本教程,就是教大家讲自己写的通用代码/需要的代码,封装为 DLL 文件,导入项目即可调用使用

创建类库

生成Dll在Unity中使用_Unity

生成Dll在Unity中使用_.net_02

框架不用在意。Unity支持最低2.0而Visual studio最低也是2.0,当然越高越好

生成Dll在Unity中使用_.net_03

添加现有项到项目

生成Dll在Unity中使用_封装_04

生成Dll在Unity中使用_.net_05

现在你添加的脚本肯定会报错,引用了没有找到的类

生成Dll在Unity中使用_加载_06

引入dll到项目

引用下面只有这些dll,我们要引用Unity提供的dll

生成Dll在Unity中使用_插件开发_07

生成Dll在Unity中使用_封装_08

unity dll文件地址在​​Root\Editor\Data\Managed​

生成Dll在Unity中使用_加载_09

但有的时候就比如你脚本中用到了UnityEngine.UI,同样的道理

生成Dll在Unity中使用_.net_10

UnityEngine.UI来说,他从2019.3开始就把Unity UI分开了,在package manager里可以看到Unity UI变成了插件的形式

2019.2之后,路径已经从 Unity安装目录下的​​Editor\Data\UnityExtensions​​移动到了 package里,通过package编译后生成的dll在工程目录下的library

生成Dll在Unity中使用_加载_11

这是Unity UI文档的链接:​​点我​

下面是UnityEngine.UI程序集的具所在位置:(同样道理,每当创建新项目默认的插件的dll也都会出现在Library里)

生成Dll在Unity中使用_加载_12

导出Dll文件

生成Dll在Unity中使用_Unity_13

注意:这里可能会遇到 未能解析主引用“xxx.dll”的错误输出

是因为你导入的dll中的.net高于当前类库.net

如果没遇到上面问题,你可能会看到以下输出:

生成Dll在Unity中使用_插件开发_14

具体的dll文件在:

生成Dll在Unity中使用_.net_15

导入Unity正常使用

我们把做的dll文件导入unityPlugins文件夹下面,如果没有可以自己右键创建Folder

生成Dll在Unity中使用_插件开发_16

我们随便在脚本中引入刚导入的程序集dll看看效果

生成Dll在Unity中使用_插件开发_17

可以正常引用命名空间,说明我们成功了

那么如果你能坚持把一篇文章看到最后,我在这里祝你‘代码永无bug’