DLL (Dynamic Link Library)---动态链接库

首先了解下使用DLL的优势,程序运行时不用加载所有代码,只有运行到引用时,才从DLL库中取出。并且使用DLL文件还可以减小程序体积,封装好的DLL文件,由于函数已经封装到DLL文件中,防止意外变更。所以编译器不会对我们的 DLL 进行编译,而是直接运  行,程序执行需要时调用的,许多搞插件开发的,都是将代码封装为 DLL ,并加密。这样既提高了运行效率,也保证了代码的基本安全性。

创建DLL

1.创建库

以 为例

打开 Visual Studio 2015(我用的vs2015),新建项目:文件→→新建→→项目,选择 Visual C# 类库 (.NET Framework)

我这里将命名空间改为MyDLL。随意!

2.下面添加代码:

添加代码注意:

a.所有需要通过 dll 调用的函数,访问修饰符都需要设为公有即public static

b.若想要调用 Unity的API ,就需要导入 Unity 中的2个 DLL 到库中

导入UnityAPI所需两个DLL:

1.先找到这两个DLL文件:

添加引用

方式1:

方式2:

右键引用

点击浏览,根据刚才找到库文件的路径

添加即可。这样程序才能访问到我们DLL库中的函数了。

添加测试函数

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using UnityEditor;
using UnityEngine;
namespace MyDLL
{
public class Class1
{
/// <summary>
/// 加法运算
/// </summary>
/// <param name="a"></param>
/// <param name="b"></param>
/// <returns></returns>
public static int Addition(int a,int b) {
return a + b;
}
/// <summary>
/// 乘法运算
/// </summary>
/// <param name="a"></param>
/// <param name="b"></param>
/// <returns></returns>
public static int Multiplication(int a, int b)
{
return a * b;
}
/// <summary>
/// 减法运算
/// </summary>
/// <param name="a"></param>
/// <param name="b"></param>
/// <returns></returns>
public static int Subtraction(int a, int b)
{
return a - b;
} }
}

3.配置生成解决方案

在解决方案中,右键项目选择属性,打开设计界面--应用程序,Unity需要输出 3.5版本及以下版本的dll

保存-》右键解决方案-》生成解决方案,或者

4.找到生成的DLL

生成后,找到我们的DLL文件,文件在我们库项目中的 bin/Debug 目录下

我的文件:

5.调用创建的DLL文件

将找到的自己创建的DLL文件放入Unity的Plugins文件夹下(这里要注意的是Unity 2017.3版本后,库文件需要放在 Plugins文件夹下,才可以正常启用,在这里我是vs2015,无所谓)

 using System.Collections;
using System.Collections.Generic;
using UnityEngine; public class DLLtext : MonoBehaviour { void Start () {
Debug.Log(MyDLL.Class1.Addition(, ));
Debug.Log(MyDLL.Class1.Multiplication(, ));
Debug.Log(MyDLL.Class1.Subtraction(, ));
}
}

打印结果:

OK,到这就这样愉快的结束了!

欢迎指正!

VisualStuido中将C#脚本封装打包DLL并调用的更多相关文章

  1. unity脚本封装成dll

    先申明一下这样做是有需要的.当我们需要把脚本提供给第三方使用,而又不希望对方看到具体的实现过程,这时候就需要将代码封装编译成dll文件,供第三方调用.或是多个项目都要用到同一个模块或同样的功能,则可以 ...

  2. 封装打包Python脚本

    1.前言 封装打包Python的好处,节省了安装各种各样包依赖的问题,同时可以加强我们代码隐私的安全性,这里我的演示环境是Python3.6 ,CentOS7的系统,同时打包工具采用pyinstall ...

  3. 将Python脚本封装成exe可执行文件 转

    将Python脚本封装成exe可执行文件 http://www.cnblogs.com/renzo/archive/2012/01/01/2309260.html  cx_freeze是用来将 Pyt ...

  4. unity3d进行脚本资源打包加载

    原地址:http://www.cnblogs.com/hisiqi/p/3204752.html 本文记录如何通过unity3d进行脚本资源打包加载 1.创建TestDll.cs文件 public c ...

  5. Unity3D研究院之脚本批量打包渠道包研究

    原地址:http://www.xuanyusong.com/archives/2418#comments 最近在研究Unity3D脚本批量打包,比如在Android平台下各种不同分辨率和不同内存大小的 ...

  6. Unity3D脚本批量打包渠道包

    最近在研究Unity3D脚本批量打包,比如在Android平台下各种不同分辨率和不同内存大小的机器,可能还有不同的渠道包,不同渠道可能用的SDK都不一样,这一切的一切都表明你的代码无法做到自适应的,除 ...

  7. vue项目构建实战基础知识:SPA理解/RESTful接口介绍/static目录配置/axios封装/打包时map文件去除

    一.SPA 不是指水疗.是 single page web application 的缩写.中文翻译为 单页应用程序 或 单页Web应用,更多解释请自行搜索. 所有的前端人员都应该明白我们的页面的 u ...

  8. .net core项目中引用.net framework封装的dll库

    https://blog.csdn.net/sharphou/article/details/80746551   A----------如何安装IIS [Server Hosting]------- ...

  9. [转载]robotium脚本封装为APK,实现脱离手机数据线,使用按钮点击控制用例

    原文地址:robotium脚本封装为APK,实现脱离手机数据线,使用按钮点击控制用例运行作者:机器,猫 最近一直在完成一些robotium的小功能,用来更方便的完成一些小功能的测试,或者可以说用来娱乐 ...

随机推荐

  1. java.lang -> Object

    java.lang -> Object 是什么 Object 类是类层次结构的根,是 Java 中唯一一个没有父类的类,Java 中所有对象包括数组都继承了 Object 类中的方法. 重要方法 ...

  2. jmeter beanshell postprocessor 使用

    String newtoken=bsh.args[0];print(newtoken);${__setProperty(newtoken,${token},)}; String newcompanyI ...

  3. redis的一些特性

    Redis内存回收 Redis复制原理 Redis提供的高可用方案 Redis提供的分片算法 Redis迁移

  4. DPS首战鞍山

    10月17日就即将飞机去鞍山了,不知不觉进入ACM的世界已经有一年了.虽然这一年我不够勤奋, 还是经常打LOL ,但是感觉自己真的学到了很多 . 在SCAU无数次选拔赛, 淘汰赛,个人排位赛 ,组队训 ...

  5. 解决.Net MVC 中出现 非介入式客户端验证规则中的验证类型名称必须唯一。下列验证类型出现重复: required 的bug

    最近在开动科技创新作品的开发,出现了一个让人很烦恼的错误,每次从浏览页跳转到编辑页时就会出现一下错误 非介入式客户端验证规则中的验证类型名称必须唯一.下列验证类型出现重复: required 上一下出 ...

  6. suffixes - 列出文件后缀。

    DESCRIPTION [描述] 文件后缀与文件名之间以点(.)间隔,通常包括一个或多个字母. 我们用文件后缀来描述文件的内容.很多标准的实用程序,如编译器,以后缀来识别文件类型. make(1) 就 ...

  7. JMeter 并发压力测试

    一,下载JMeter http://jmeter.apache.org/download_jmeter.cgi 二,创建默认配置 可以不用配置相同参数. 测试计划:右键添加线程组 线程组:右键添加  ...

  8. python_django_类视图的第一次忐忑碰触!!!

    我们Django学到这里,基础知识阶段是已经完成了!! 在我们前面接触到的视图都是基于函数的视图函数我们可以称它为FBV,而今天我们新接触的就是视图函数的另一类CBV:基于类的视图函数,我们这里拓展这 ...

  9. app混合开发 fastlick.js 在ios上 input标签点击 不灵敏 处理

    ios11 上有这个问题 而老版本的ios没有 会出现这个的原因是使用fastclick.js点击后input没有获取焦点,所以只需要在fasyclick的源码的这个位置 可以直接在源码内搜索关键字找 ...

  10. 关于C#的随机数

    一直都知道random随机数可能出现相同的情况,但是一直没具体看为什么,网上一看又是一大堆例子给你出来,一点也不清晰,今天看msdn记录一下,msdn是讲的真的清楚. 实例化随机数生成器 通过向Ran ...