生成Dll在Unity中使用
我发现很多大佬,插件开发者以及Unity官方都在用Dll来保证既可让使用者正常使用也可有效防止使用者看到自己写的代码
版本说明
Visual Studio版本:2019 16.10.3
Unity版本:2019.4.16f1c1
Dll介绍
DLL (Dynamic Link Library) —— 中文:动态链接库
我们 Windows 系统中就有着海量的 dll文件
当多个程序同时使用一个函数库时, DLL 即减少在磁盘和物理内存中加载的代码的重复量,同时也提高了响应速度
好处:
- 程序在运行之初无需加载所有代码,只有在程序执行到某个函数调用时,才从 DLL 中取出
- 使用 DLL 文件还可以减小程序的体积
- 封装好的 DLL 文件,由于函数已经封装到 DLL 文件中,不会变更。
所以编辑器不会对我们的 DLL 进行编译,而是直接运行,程序执行需要时调用的
许多大神,或是插件开发者,都是将代码封装为DLL ,并加密。
这样既提高了运行效率,也保证了代码的基本安全性,不被他人看到
而本教程,就是教大家讲自己写的通用代码/需要的代码,封装为 DLL 文件,导入项目即可调用使用
创建类库


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

添加现有项到项目


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

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


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

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

拿UnityEngine.UI来说,他从2019.3开始就把Unity UI分开了,在package manager里可以看到Unity UI变成了插件的形式
2019.2之后,路径已经从 Unity安装目录下的
Editor\Data\UnityExtensions移动到了 package里,通过package编译后生成的dll在工程目录下的library里

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

导出Dll文件

注意:这里可能会遇到 未能解析主引用“xxx.dll”的错误输出
是因为你导入的dll中的.net高于当前类库.net
请看我的这篇文章:点击跳转
如果没遇到上面问题,你可能会看到以下输出:

具体的dll文件在:

导入Unity正常使用
我们把做的dll文件导入unity到Plugins文件夹下面,如果没有可以自己右键创建Folder

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

可以正常引用命名空间,说明我们成功了
那么如果你能坚持把一篇文章看到最后,我在这里祝你‘代码永无bug’
生成Dll在Unity中使用的更多相关文章
- C#使用ProtocolBuffer(ProtoBuf)进行Unity中的Socket通信
首先来说一下本文中例子所要实现的功能: 基于ProtoBuf序列化对象 使用Socket实现时时通信 数据包的编码和解码 下面来看具体的步骤: 一.Unity中使用ProtoBuf 导入DLL到Uni ...
- (Unity)Unity自定义Debug日志文件,利用VS生成Dll文件并使用Dotfuscated进展混淆,避免被反编译
Unity自定义Debug日志文件,利用VS生成Dll文件并使用Dotfuscated进行混淆,避免被反编译. 1.打开VS,博主所用版本是Visual Studio 2013. 2.新建一个VC项目 ...
- Dll的编写 在unity中加载
1. 在VS中新建Dll项目 2.在头文件中对函数进行声明 extern "C" int _declspec(dllexport) testunity(); 3.在源文件中写函数体 ...
- Unity中调用DLL库
DLL -- Dynamic Link Library(动态链接库文件),这里以Window平台为例. Unity支持的两种语言生成的DLL库(C++.C#),这里以C#为例,C++网上可以搜索很详细 ...
- VS2017中 C# dll引用(C生成dll,C++生成dll)小结 - 简书
原文:VS2017中 C# dll引用(C生成dll,C++生成dll)小结 - 简书 dll引用小结 一.dll与应用程序 动态链接库(也称为DLL,即为“Dynamic Link Library” ...
- 如何利用.snk文件生成DLL文件中的Publickeytoken
1.在该路径下C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\bin查找是否有sn.exe. 没有的话,从网上下载,注意需要的版本. 2.打开c ...
- JNI中使用cl命令生成DLL文件
问题描述: 在使用JNI调用DLL时,首先需要生成DLL文件 问题解决: (1)现在使用VS2008的cl.exe程序,生成DLL文件 (1.1)cl.exe环境搭建 注: cl. ...
- VS2010中使用CL快速 生成DLL的方法
方案一: 1.命令行中输入cl example.cpp,生成example.obj和example.lib文件.有可能还会提示“没有入口点”的错误.这是因为我们的CPP中是要生成dll文件的,并没有m ...
- vs2012中程序集生成无法自动在网站Bin目录下生成Dll文件?(已解决!)
最近,突然发现生成程序集后,网站bin目录下dll没有更新,也没有自动生成dll文件,通过近半个小时的摸索和实验,找到了解决方法: 1.右键网站,不是项目,选择[属性页],在左侧[引用]中如果没有,就 ...
随机推荐
- 微信小程序setdata修改数组或对象
1.this.setdata修改数组的固定一项的值 changeItemInArr: function() { this.setData({ 'arr[0].text':'changed data' ...
- vue 打包优化
vue 打包优化 路由按需加载 通过vue写的单页应用时,可能会有很多的路由引入.当打包构建的时候,javascript包会变得非常大,影响加载.如果我们能把不同路由对应的组件分割成不同的代码块,然后 ...
- 永远的Ace 团队作业4—团队项目需求建模与系统设计(1)
项目 内容 课程班级博客链接 https://edu.cnblogs.com/campus/xbsf/2018CST/ 这个作业要求链接 https://www.cnblogs.com/nwnu-da ...
- BAD SLAM:捆绑束调整直接RGB-D SLAM
BAD SLAM:捆绑束调整直接RGB-D SLAM BAD SLAM: Bundle Adjusted Direct RGB-D SLAM 论文地址: http://openaccess.thecv ...
- Velodyne VLP-16激光雷达数据分析
Velodyne VLP-16激光雷达数据分析 Velodyne VLP-16激光雷达保持了 Velodyne 在 LiDAR 中的突破性重要功能:实时收发数据.360 度全覆盖.3D 距离测量以及校 ...
- CVPR2020:点云三维目标跟踪的点对盒网络(P2B)
CVPR2020:点云三维目标跟踪的点对盒网络(P2B) P2B: Point-to-Box Network for 3D Object Tracking in Point Clouds 代码:htt ...
- BP-Wrapper:无锁竞争的缓存替换算法系统框架
BP-Wrapper:无锁竞争的替换算法系统框架 最近看了一个golang的高性能缓存ristretto,该缓存可以很好地实现如下功能: Concurrent High cache-hit ratio ...
- 俄罗斯方块(c++)
这个俄罗斯方块是用c++基于windows控制台制作的. 源码地址:https://github.com/Guozhi-explore 话不多说,先上图感受一下:(控制台丑陋的界面不是我的锅emmm) ...
- 基于Android平台的图书管理系统的制作(1)
在学习了郭神的第一行代码前半段之后,想通过一次实践来完成对已学知识的巩固.于是码下了这个图书管理系统客户端. IDE Android studio,语言 JAVA.XML: 在刚开始设计的时候对于这个 ...
- Binding(一):数据绑定
这节开始分几期来讲一下WPF中Binding的相关用法,本节主要讲使用Binding进行数据绑定. Binding的作用 在WinForm中,我们要想对控件赋值,需要在后台代码中拿到控件对象进行操作, ...