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. 排序(分组后排序&整排)

    一.整排 要求:根据score进行排名,分数相同,名次相同,且连续 表如下图: sql语句: 方法一:select a.score, (select count(distinct b.score) f ...

  2. 时间同步服务器NTP

    NTP服务器        NTP(Network Time Protocol)[网络时间协议],它是用来同步网络中各个计算机的时间的协议,它可以提供高精准度的时间校正(LAN上与标准间差小于1毫秒, ...

  3. python学习之路,2018.8.9

    python学习之路,2018.8.9, 学习是一个长期坚持的过程,加油吧,少年!

  4. OpenSuSe开启sshd服务

    需要测试OpenSuSE11 x64上mysql性能,发现很多东西与centos以及红帽有差别.其中最切身的就是sshd服务的开启. 安装好OpenSuSE 11后,发现ssh连接不上去,可以ping ...

  5. CTU OPEN 2017 Shooting Gallery /// 区间DP

    题目大意: 给定n 给定n个数 选定一个区间留下其他消去 要求区间两端的两个数一样 若成功留下一个区间 则在选定区间的基础上 继续进行上述操作 直到无法再选出这样的区间 求最多操作数 按区间长度由短到 ...

  6. Process Array

    http://xiaorui.cc/2016/05/10/%E6%BA%90%E7%A0%81%E5%88%86%E6%9E%90multiprocessing%E7%9A%84value-array ...

  7. 当vue页面异步加载的数据想在页面上渲染怎么办

    <template> <div class="test"> <div v-for="(item, index) in arr" : ...

  8. matlab filtfilt 函数

    紧接上一篇,简单分析matlab中的非常好用的 filtfilt 函数,一款零相移滤波函数. 其matlab中的语法如下: y = filtfilt(data,x);1非常简单,不是一般的简单!然而, ...

  9. Eclipse编辑Spring配置文件xml时自动提示类class包名

    第一步,先查看下自己的Eclipse是什么版本,步骤如下: 1.1 点击Eclipse菜单‘Help  -> About Eclipse’,如下图: 1.2 点击Eclipse图标如下,看清楚哦 ...

  10. nodejs 模板引擎jade的简单使用

    1.jade html head style script body div ul li li jade1.js var jade=require('jade'); var str=jade.rend ...