生成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.右键网站,不是项目,选择[属性页],在左侧[引用]中如果没有,就 ...
随机推荐
- 201871030139-于泽浩 实验三 结对项目—《D{0-1}KP 实例数据集算法实验平台》项目报告
201871030139-于泽浩 实验三 结对项目-<D{0-1}KP 实例数据集算法实验平台>项目报告 项目 内容 课程班级博客链接 2018级卓越班 这个作业要求链接 软件工程结对项目 ...
- RCNN系列、Fast-RCNN、Faster-RCNN、R-FCN检测模型对比
RCNN系列.Fast-RCNN.Faster-RCNN.R-FCN检测模型对比 一.RCNN 问题一:速度 经典的目标检测算法使用滑动窗法依次判断所有可能的区域.本文则预先提取一系列较可能是物体的候 ...
- nvGRAPH API参考分析(一)
nvGRAPH API参考分析(一) 本文通过描述nvGRAPH库函数的输入/输出参数,数据类型和错误代码来指定其行为. 1. 返回值nvgraphStatus_t 除以下内容外,所有nvGRA ...
- ARM系列处理器和架构
从一只ARM到另一只ARM! ARM处理器和架构 当前可用的处理器 ARM1 ARM2 ARM3 ARM4和5 ARM6 ARM7 ARM8 强壮有力的ARM ARM9 ARM10 ARM架构 v1 ...
- 2、java数据结构和算法:单链表: 反转,逆序打印, 合并二个有序链表,获取倒数第n个节点, 链表的有序插入
什么也不说, 直接上代码: 功能点有: 1, 获取尾结点 2, 添加(添加节点到链表的最后面) 3, 添加(根据节点的no(排名)的大小, 有序添加) 4, 单向链表的 遍历 5, 链表的长度 6, ...
- Java 将PPT幻灯片转为HTML
本文以Java程序代码为例展示如何通过格式转换的方式将PPT幻灯片文档转为HTML文件.这里的PPT幻灯片可以是.ppt/.pptx/.pps/.ppsx/.potx等格式. 代码实现思路:[加载PP ...
- Python OpenCV图片转视频 工具贴(三)
Python OpenCV图片转视频 粘贴即用,注意使用时最好把自己的文件按照数字顺序命名.按照引导输入操作. # 一键傻瓜式引导图片串成视频 # 注意使用前最好把文件命名为数字顺序格式 import ...
- Spring Security 快速上手
Spring Security 框架简介 Spring Security 说明 Spring Security 基于 Spring 框架,提供了一套 Web 应用安全性的完整解决方案 关于安全方面的两 ...
- 【NX二次开发】多功能对话框UF_UI_message_dialog
多功能对话框 1 extern DllExport void ufsta(char *param, int *returnCode, int rlen) 2 { 3 UF_initialize(); ...
- 《吃透MQ系列》之扒开Kafka的神秘面纱
大家好,这是<吃透 MQ 系列>的第二弹,有些珊珊来迟,后台被好几个读者催更了,实属抱歉! 这篇文章拖更了好几周,起初的想法是:围绕每一个具体的消息中间件,不仅要写透,而且要控制好篇幅,写 ...