Unity中调用DLL库
DLL —— Dynamic Link Library(动态链接库文件),这里以Window平台为例。
Unity支持的两种语言生成的DLL库(C++、C#),这里以C#为例,C++网上可以搜索很详细的资料。
1) 添加引用关系
如果有对UnityEngine、UnityEditor的引用,需要先添加引用关系。

路径通常位于Unity安装目录下的Editor/Data/Managed路径下。
2) 生成DLL文件
建立项目时,选择“类库”。目标框架.Net Framework的版本,只能选择3.5及以下版本。

3) 在项目中引用DLL文件
Unity会自动加载相应的DLL文件,所以DLL文件只要存放于Assets目录下即可,当然为了统一管理,一般放在Plugins目录下。
这里有一个需要注意的点,如果DLL文件放在Editor下,那么只能是Editor目录下的C#文件才可以引用,如果想在项目运行时的C#中进行引用,那DLL文件就不能放在Editor目录下。以上目录只与名字相关,与层级无关,路径可以是Assets/a/b/c/d/e/../XX.DLL
放置好DLL后,注意刷新Visual Studio中的解决方案。
参考链接:
在 Unity 工程 (Project) 中使用 DLL(动态库)
如何查看DLL中的方法是否已经导出呢?
C#:dnSpy
C++:depends
理解如何使用之后,我们做一个示例:在Unity加载并解析Excel文件。这里用的库是 EPPlus ,使用的版本是3.5

假设我们只会在编辑器中使用,那么可以将DoNet35目录下的二个文件,放到这样的目录中:ThirdParty/EPPlus/Editor 这样就只有编辑器里才能使用到这个类库。使用方法也很简单
ExcelPackage package = new ExcelPackage(new FileInfo(filePath)); List<string> keys = new List<string>();
List<string> values = new List<string>(); ExcelWorksheet sheet = package.Workbook.Worksheets[1];
int rows = sheet.Dimension.Rows;
for (int row = 2; row <= rows; row++)
{
string key = sheet.Cells[row, 1].Value.ToString();
string value = sheet.Cells[row, 2].Value.ToString(); keys.Add(key);
values.Add(value);
} //
在Unity中能读取excel就很方便了,这样就比较方便地做技能编辑器、加载数据配置、提取游戏中的文字等。
Unity中调用DLL库的更多相关文章
- Java(使用JNA)调用DLL库与C#调用DLL库的对比
前言:在项目中经常使用DLL库对硬件进行操作,在发卡过程中使用频率尤为多,今天就Java与C#中调用DLL库的使用区别做一个介绍,本文着重具体的代码编写,具体过程看以下代码. 前提条件: 笔者已经封装 ...
- Unity中调用Windows窗口句柄以及根据需求设置并且解决扩展屏窗体显示错乱/位置错误的Bug
问题背景: 现在在搞PC端应用开发,我们开发中需要调用系统的窗口以及需要最大化最小化,缩放窗口拖拽窗口,以及设置窗口位置,去边框等功能 解决根据: 使用user32.dll解决 具体功能: Unity ...
- 在VS2012中采用C++中调用DLL中的函数 (4)
这两天因为需要用到VS2012来生成一个DLL代码,但是之前并没有用过DLL相关的内容,从昨天开始尝试调试DLL的文件调用,起初笔者在网络上找到了3片采用VSXXX版本进行调试的例子,相关的内容见本人 ...
- 在C++中调用DLL中的函数 (3)
1.dll的优点 代码复用是提高软件开发效率的重要途径.一般而言,只要某部分代码具有通用性,就可将它构造成相对独立的功能模块并在之后的项目中重复使用.比较常见的例子是各种应用程序框架,ATL.MFC等 ...
- 在C++中调用DLL中的函数
如何在C++中调用DLL中的函数 应用程序使用DLL可以采用两种方式:一种是隐式链接,另一种是显式链接.在使用DLL之前首先要知道DLL中函数的结构信息.Visual C++6.0在VC\bin目录下 ...
- java中调用dll文件的两种方法
一中是用JNA方法,另外是用JNative方法,两种都是转载来的, JNA地址:http://blog.csdn.net/shendl/article/details/3589676 JNativ ...
- 【原创】在VS2012中采用C++中调用DLL中的函数(4)
这两天因为需要用到VS2012来生成一个DLL代码,但是之前并没有用过DLL相关的内容,从昨天开始尝试调试DLL的文件调用,起初笔者在网络上找到了3片采用VSXXX版本进行调试的例子,相关的内容见本人 ...
- 在C++中调用DLL中的函数(3)
1.dll的优点 代码复用是提高软件开发效率的重要途径.一般而言,只要某部分代码具有通用性,就可将它构造成相对独立的功能模块并在之后的项目中重复使用.比较常见的例子是各种应用程序框架,ATL.MFC等 ...
- C#中调用Dll动态链接库
C#中调用Dll动态链接库 起始 受限于语言的不同,我们有的时候可能会用别人提供的函数及方法 或者其他的什么原因.反正就是要调!!! 恰巧别人所使用的的语言跟自己又不是一样的 这个时候想要调用别人的函 ...
随机推荐
- Centos6.5下通过shell脚本快速安装samba服务器
使用方法如下: 上传脚本到linux服务器授权
- thinkphp 3.1.3 配置debug开启报错
今天配置了一下thinkphp3.1.3 报错 无法加载模块:index 错误位置 FILE: D:\phpStudy\WWW\wwqq\thinkphp\Common\functions.php L ...
- 2018牛客网暑假ACM多校训练赛(第六场)I Team Rocket 线段树
原文链接https://www.cnblogs.com/zhouzhendong/p/NowCoder-2018-Summer-Round6-I.html 题目传送门 - https://www.no ...
- sql对于字符串的处理
- day5 列表的增删改查
1,列表的增删改查,其他操作.2,元祖.3,列表的嵌套操作.4,开一点dict. 昨日内容回顾: 字符串的方法:1,find通过元素找索引,可切片,找不到返回-12,index,找不到报错.3,spl ...
- POJ 3258 River Hopscotch (最大最小距离)【二分】
<题目链接> 题目大意:现在有起点和终点两个石块,这两个石块之间有N个石块,现在对这N个石块移除M个石块,使得这些石块之间的最短距离最大,注意,起点和终点这两个石块不能被移除. 解题分析: ...
- ssh centos 上传文件
ssh centos 上传文件命令(ftp开不起的情报况下): rz -be 下载文件: sz
- 使用Nginx部署静态网站
这篇文章将介绍如何利用Nginx部署静态网站. 之前写过2篇有关Nginx的文章,一篇是<利用nginx,腾讯云免费证书制作https>,另外一篇是<linux安装nginx> ...
- Numpy np.array 相关常用操作学习笔记
1.np.array构造函数 用法:np.array([1,2,3,4,5]) 1.1 numpy array 和 python list 有什么区别? 标准Python的列表(list)中,元素本质 ...
- BZOJ.4558.[JLOI2016]方(计数 容斥)
BZOJ 洛谷 图基本来自这儿. 看到这种计数问题考虑容斥.\(Ans=\) 没有限制的正方形个数 - 以\(i\)为顶点的正方形个数 + 以\(i,j\)为顶点的正方形个数 - 以\(i,j,k\) ...