生成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.右键网站,不是项目,选择[属性页],在左侧[引用]中如果没有,就 ...
随机推荐
- Win10 安装 Python3 (上)
Python3 For Windows 10 installer 参考 The full installer 安装 随后可以看到,installer 在用户环境变量PATH中,添加了三项: 卸载 使用 ...
- Nginx 配置实例-配置虚拟主机
Nginx 配置实例-配置虚拟主机 配置基于域名的虚拟主机 1. 配置域名为 aaa.domain.com 的虚拟主机 1.1 nginx 中虚拟主机的配置 1.2 相关目录及文件的创建 1.3 验证 ...
- node.js学习(7)流和管道
1 导入模块 输入流 # 读取流 # 写入流 # # 管道 # 压缩 # 解压缩
- AI人工智能天机芯芯片
AI人工智能天机芯芯片 描述 2019年刊出的<自然>封面文章,展示了清华大学类脑计算研究中心团队研发的新型人工智能芯片"天机芯(Tianjic)".这是世界首款异构融 ...
- 视觉SLAM技术应用
视觉SLAM技术应用 SLAM技术背景 SLAM技术全称Simultaneous localization and mapping,中文为"同时定位与地图构建".SLAM可以在未知 ...
- ADAS测试
ADAS测试 1. ADAS和自动驾驶测试 AD和高级驾驶辅助系统(ADAS)正在不断增加新的雷达.摄像头.激光雷达和GNSS传感器,甚至也在改变 ...
- pytorch空间变换网络
pytorch空间变换网络 本文将学习如何使用称为空间变换器网络的视觉注意机制来扩充网络.可以在DeepMind paper 阅读更多有关空间变换器网络的内容. 空间变换器网络是对任何空间变换的差异化 ...
- vue中dom节点转图片
今天项目中有个需求,需要将页面的一部分转为图片,相当于存证之类的 然后我查阅了下百度,发现了几种可行的方法,特此来记录下 1.html2canvas插件 安装:npm install --save h ...
- python+selenium基础篇,文件上传
1.百度查询图片,上传文件 2.实现代码如下: from selenium import webdriverfrom time import sleepdr=webdriver.Firefox()dr ...
- Postman 的基本功能按钮解释、发送post请求及get请求、查看响应信息
一.界面功能按钮: 二.postman模拟发送post请求: 三.postman模拟get请求: 选择请求类型-->输入请求URL-->点击send发送 四.查看响应信息