首先说一下生成dll文件的必要性:给第三方公司提供Unity插件,又不希望对方看到具体的实现过程,这时候就需要将核心代码封装编译成dll文件,供第三方调用。或是多个项目都要用到同一个模块或同样的功能,则可以把该模块或是功能编译成dll,方便复用和维护。
查阅了网上现成的资料,几乎都是使用vs,将Unity脚本封装编译成dll文件的,这次分享给大家的是如何使用mono编译器编译dll文件。步骤上与vs是大同小异的。
第一步,新建项目:
第二步:
第三步:
本篇文章讨论的是如何吧unity中的脚本文件转为dll文件, 如果想使用unity的api,则需要引入unity的,分别是 ,UnityEditor.dll 和 UnityEngine.dll,它们的地址如下:
在mono中引入Unity的dll:
第四步:下面回到Unity,新建一个C#脚本test:脚本如下,将脚本拖拽到摄像机上,作为摄像机的组件:
第五步:接着把unity中的脚本文件添加到解决方案中:
第六步:按下F5,生成解决方案。然后去生成解决方案的目录下找到刚刚生成的dll文件。
第七步:最重要的时刻到了,就是把刚刚生成好的dll文件,拖延到unity中,可以在unity中建一个名为Plugins这个文件夹,专门用于存放那个dll文件,也可以不用Plugins这个文件夹,直接将dll文件拖放到Assets目录下。
特别蛋疼坑爹的地方出现了,大家注意啦,特别特别注意!!!!!!!!!!打开Console输出面板会看见居然报错了,导入动态链接库报了错误。
解决这个错误的方法是在Options中,修改目标框架为Mono/.Net3.5或是以下版本。这是因为我用的Unity版本是5.3.4f1,支持的.NET Framework的版本为3.5。而我创建的项目的默认.NET Framework 3.5版本为4.5.2。
修改完成之后,重新F5运行,生成新的dll文件,重新导入Unity。并且检查这里。
按照上述操作之后,就可以解决动态链接库报错的问题。
第八步:删除Unity中的test脚本。
再将dll文件下的test脚本添加到摄像机丢失的脚本位置:
运行程序后,正确的打印出了我们创建的test脚本里面的结果。但是再查看脚本文件内容,已经看不到,因为内容被封装成dll文件了。
第九步:上面我们讲的是如何把unity的脚本文件编译成dll,接着讲unity又是如何使用这个dll文件, 下面我们试验一下在unity中调用一下dll中自身的类文件(非unity脚本文件)。
新建C#脚本test01。
也将脚本test01挂载在摄像机上面,并且运行程序,查看输出结果