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 实例 - 方法重载

    先来看下方法重载(Overloading)的定义:如果有两个方法的方法名相同,但参数不一致,哪么可以说一个方法是另一个方法的重载. 具体说明如下: 方法名相同 方法的参数类型,个数顺序至少有一项不同 ...

  2. vue-cli3使用cdn引入

    1. index.html引入: <script src="https://cdn.bootcss.com/moment.js/2.20.1/moment.min.js"&g ...

  3. JUnit中Assert简单介绍

    junit中的assert方法全部放在Assert类中,总结一下junit类中assert方法的分类.1.assertTrue/False([String message,]boolean condi ...

  4. 下载文件时HttpServletResponse设置响应头的Content-Disposition属性

    Content-Disposition属性有两种类型 inline :将文件内容直接显示在页面 attachment:弹出对话框让用户下载 弹出对话框下载文件 resp.setHeader(" ...

  5. 关于KiCAD

    关于KiCAD 使用背景 一直以来公司都在用AD作为EDA软件,但是最近公司频繁收到律师函,所以决定找一款开源的软件来代替AD,目前市场上开源的只找到了KiCAD和Easy EDA(中文版立创EDA) ...

  6. day07 python列表 集合 深浅拷贝

    day07 python   一.知识点补充     1."".join() s = "".join(('1','2','3','4','5'))  #将字符串 ...

  7. poj 3744 矩阵快速幂+概率dp

    题目大意: 输入n,代表一位童子兵要穿过一条路,路上有些地方放着n个地雷(1<=n<=10).再输入p,代表这位童子兵非常好玩,走路一蹦一跳的.每次他在 i 位置有 p 的概率走一步到 i ...

  8. flutter进行自动编译操作步骤

    环境: mac os 操作系统 xcode最新版本 10.2.1 flutter进行编译报错解决方案: (null): warning: (armv7) /Users/tommy/Desktop/Pr ...

  9. 分布式项目pom

    <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit ...

  10. DNS稳定保障系列1--服务双保障“辅助DNS”产品介绍

    背景 2016 年 10 月 21 日,DNS 服务商 dyn 的服务器遭遇黑客大流量的 ddos 攻击,使得美国大量互联网公司如 twitter,github等都出现解析失败,无法提供服务.如下图可 ...