生成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.右键网站,不是项目,选择[属性页],在左侧[引用]中如果没有,就 ...
随机推荐
- Spring 实例化方式有几种?为什么会用到 Cglib?
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! <Spring 手撸专栏>目录 [x] 第 1 章:开篇介绍,我要带你撸 Spri ...
- CRC校验原理简介及C代码实现说明
1 原理 参考文档:CRC校验 (qq.com) 参考书籍:<计算机网络(第7版)-谢希仁> 1.1 原理简介 CRC是一种检错方法. 在发送端,先把数据划分为组,假定每组k个比特.现假定 ...
- 缩放 transform
转换属性 transform 转换是css3中的一个特征,可以实现元素的缩放,位移,变形. 作用: 使元素在位置或者形状上发生一定的改变. 属性: transform 属性值: scale:缩放(一般 ...
- .NET平台系列16 .NET5/Asp.Net Core 在全球Web框架权威性能测试 Web Framework Benchmarks 中的吊炸天表现
系列目录 [已更新最新开发文章,点击查看详细] TechEmpower Web Framework Benchmarks 是许多Web应用程序框架执行基本任务(如JSON序列化.数据库访问和服 ...
- pika详解(三)SelectConnection及其他Connection
pika详解(三)SelectConnection及其他Connection 本文链接:https://blog.csdn.net/comprel/article/details/94661147 ...
- selenium-元素无法定位解决办法
selenium-元素无法定位解决办法 有时会出现元素定位失败的情况,以百度首页为例,定位输入框,报错如下: selenium.common.exceptions.NoSuchElementExc ...
- 看懂redis配置文件
看懂redis 配置文件: https://blog.csdn.net/liqingtx/article/details/60330555 redis 数据库缓存双写一致性解决方案: https:// ...
- JVM--你常见的jvm 异常有哪些? 代码演示:StackOverflowError , utOfMemoryError: Java heap space , OutOfMemoryError: GC overhead limit exceeded, Direct buffer memory, Unable_to_create_new_native_Thread, Metaspace
直接上代码: public class Test001 { public static void main(String[] args) { //java.lang.StackOverflowErro ...
- 【题解】Luogu p2964 BZOJ 2017[Usaco2009 Nov]硬币游戏
题目描述 Farmer John's cows like to play coin games so FJ has invented with a new two-player coin game c ...
- Python 机器学习实战 —— 监督学习(下)
前言 近年来AI人工智能成为社会发展趋势,在IT行业引起一波热潮,有关机器学习.深度学习.神经网络等文章多不胜数.从智能家居.自动驾驶.无人机.智能机器人到人造卫星.安防军备,无论是国家级军事设备还是 ...