第一次写博客,有什么不对的地方,欢迎大家指出

(1)打开vs(本人用的是vs2013)然后建一个项目,如下图所示,选择.ENT3.5的框架,或者低于3.5的,这是因为Unity里面用的框架可能在3.5以下,不然会报错,然后给自己的dll改名字选择路径(这个路径等一下要用)

(2)进入项目之后,如果你不需要用到unity里面的类或者封装的方法,你就直接写你想要封装的方法,如下:

 namespace MyDll   //命名空间(在unity里面是没有namespace)所里在unity里面使用的时候,需要在脚本上面加using MyDll
{
public static class Compute //类名
{
public static int GetMax(params int[] arr) //静态类,当然这里你可以自己写成非静态的也可以,只不过在Unity里面需要实例化
{
for (int i = ; i < arr.Length; i++) //这里是一个冒泡排序
{
for (int j = ; j < arr.Length - i - ; j++)
{
if(arr[j] >arr[j+])
{
int temp = arr[j];
arr[j] = arr[j+];
arr[j + ] = temp;
}
}
}
return arr[arr.Length - ];
}
}
}

当然,咱们主要讲的是unity,但是vs里面的类是继承不了MonoBehaviour,所以咱们需要导入unity的dll,这样才可以使用unity里面封装的方法

导入步骤

然后选择左边浏览 - 最近 - 下面浏览,选择你要导入的unity封装的dll的路径,点击确定就可以导入成功了,我这里导入的是 UnityEngine.dll

(unity封装的dll你可以在unity里面建一个项目,建一个脚本,打开vs右边有个引用,打开之后,鼠标选中,在下面就可以看到路径了)

然后写跟上面一样, 添加一个类(右键MyDll-添加- 类)等, 例如

 using UnityEngine;  //导入命名空间(当然如果需要使用UI的话,你只需要再倒入)UnityEngine.UI就可以了,方法都是一样的
/// <summary>
/// 封装一个摄像机控制脚本
/// </summary> [AddComponentMenu("Camera/Controller")] //这是把该类最为一个组件添加到里面unity属性面板下面AddComponent的菜单栏,字符串表示路径
public class CameraController : MonoBehaviour (这个类你也可以写到自己想要的命名下,在用的时候需要导入命名空间就行了)
{
public Transform target; //摄像机跟随的目标
private Vector3 offset; //目标和摄像机的偏移量 void Awake()
{
offset = transform.position - target.position; //求偏移量
transform.LookAt(target.position); //初始看向目标点
} private void CameraFollow()
{
transform.position = target.position + offset; //保持摄像机和目标点的偏移量不变,就实现了跟随
} void Update()
{
CameraFollow();
CameraScroll();
} private void CameraScroll()
{
if (Input.GetAxis("Mouse ScrollWheel") != )
{
Vector3 temp = offset.normalized * Input.GetAxis("Mouse ScrollWheel"); //求出应该滑动的方向和距离
offset = offset + temp; //应该移动所处的偏移量 }
}
}

(3)目前咱们已经写好了两个类了,下面我们需要生成dll了, 在VS最上面的菜单栏有一个"生成" - "生成解决方案", 或者直接F6

(4)然后我们到自己的刚才的项目文件夹里面,找到dll文件(因为很好找,这里我就不细说了)

(5)找到之后把他导入到我们的unity工程里面,放在Project里面(尽量建一个文件夹Plugins,放在里面,以防出错)

(6)这时候我就可以用了,下面是使用的例子

6.1这里先说一下unity封装的用法

6.1.1如果你刚才在类上面加了[AddComponentMenu("Camera/Controller")]   就可以再属性面板AddComponent找到Camera-Controller就是你封装的这个类,直接选择就可以

因为在封装的时候,已经继承了MonoBehaviour ,所以是可以继承的(如果没有加上这句代码,应该也是可以加载的)

6.2再说一下封装的算法

6.2.1如果你刚才加了命名空间,在使用里的方法的时候,需要using空间名, 然后使用的方法就和平时的一样了,如下

 using UnityEngine;
using System.Collections;
using MyDll; //导入命名空间 public class TTTT : MonoBehaviour
{
void Awake()
{
Debug.Log(Compute.GetMax(,,,,)); //刚才封装的方法
}
}

(7)最后一点,如果没有调框架的话,会出现以下错误(这个困惑我很长时间,因为我看到其他的帖子上面都没有提到怎么可以解决这个错误的,后来把.NET框架调低之后好了)

享受一下大神的感觉, unity中用C#自己封装dll的更多相关文章

  1. 刚看完了一本关于javascript的书感觉受益匪浅,原来不懂的东西这么多,想问问怎么成为大神?求教!!!!!!

    刚看完了一本关于javascript的书感觉受益匪浅,原来不懂的东西这么多,想问问怎么成为大神?求教!!!!!!

  2. Unity中的ShaderToys——将大神们写的shader搬到unity中来吧

    http://lib.csdn.net/article/unity3d/38699 这篇文章翻译自国外的一篇文章(这里是原文链接),正在使用unity的你是否在shader toy上发现很多牛逼哄哄的 ...

  3. 前端自学vs跟大神系统学?你看着办

    前端自学vs跟大神系统学?你看着办 一名广告专业学生,在大三的时候对于广告行业的前景不是很看好,转而自学web前端,刚开始接触的前端语言是html(html应该不算编程语言),上手很容易,在w3csh ...

  4. 【web前端面试题整理04】阿里一行之大神面对面

    前言 这段时间我在河南一家公司当了一段时间的前端主管,最后可耻的匿了,原因各种各样,最主要的就是不想呆在郑州了. 其实这里的同事还是很不错的,面对老总最后的挽留我不是没有动心,而是这个地方确实不太好, ...

  5. 【leetcode】Wildcard Matching(hard) ★ 大神太牛了

    Implement wildcard pattern matching with support for '?' and '*'. '?' Matches any single character. ...

  6. 对话机器学习大神Yoshua Bengio(上)

    Yoshua Bengio教授(个人主页)是机器学习大神之一,尤其是在深度学习这个领域.他连同Geoff Hinton老先生以及 Yann LeCun(燕乐存)教授,缔造了2006年开始的深度学习复兴 ...

  7. 【同行说技术】iOS程序员从小白到大神必读资料汇总

    在文章<iOS程序员从小白到大神必读资料汇总(一)>里面介绍了很多iOS入门学习的资料,今天小编就发几篇技术进阶的文章,快来看看吧! 一.iOS后台模式开发指南 这个教程会教你在什么时候怎 ...

  8. 求C#开发大神指点职业规划或者开发路数(以后怎么走),谢谢

    背景:作为一名Asp.net Web类的开发人员,工作时间有点长,5年不到,属于是天赋不太强,但是比较努力型的人,开发过程中那事情基本上都会,各种前后端框架也会使用.目前在研究分布式缓存应用 Memc ...

  9. 兄台息怒,关于arguments,您的想法和大神是一样一样的----闲聊JS中的apply和call

    JavaScript提供了apply和call两种调用方式来确定函数体中this的指向,表现出来的特征就是:对象可以'借用'其他对象的方法.之前的几篇博客回顾了一些Web控件的一些开发方法,我们聊了如 ...

随机推荐

  1. mysql 5.6

    mysql 5.6的安裝: 1,提前安装依赖的库环境. yum install -y  make bison cmake gcc-c++ ncurses ncurses-devel  git 2,下载 ...

  2. mysql 5.5源码包安装

    注:由于mysql5.5的源码包安装与mysql之前的版本安装方法不同,故写一篇随笔记录.5.5的版本不再是./configure make make install 这里用到了cmake了,cmak ...

  3. 9. iptables 配置

    iptables 配置文件存放位置:  [root@Demon yum.repos.d]# vim /etc/rc.d/init.d/iptables   一.只给 Centos 6.5 打开 22 ...

  4. JSP 基础之 JSTL <c:forEach>用法

    在JSP的开发中,迭代是经常要使用到的操作.例如,逐行的显示查询的结果等.在早期的JSP中,通常使用Scriptlets来实现Iterator或者Enumeration对象的迭代输出.现在,通过JST ...

  5. u-boot基本命令

    1.查看环境变量 printenv 2.网络相关命令 设置开发板ip:setenv ipaddr 192.168.2.110 设置子网掩码:setenv netmask 255.255.255.0 设 ...

  6. python面向对象(上)

    创建类 Python 类使用 class 关键字来创建.简单的类的声明可以是关键字后紧跟类名: class ClassName(bases): 'class documentation string' ...

  7. Java、Tomcat 及 MySQL 环境配置

    Java开发环境的配置 首先我们要下载JDK. 到Oracle官网上去下载即可,目前最新版是Java SE 8u25. 开始我很混乱,Java SE 和 JDK是什么关系呢?最后查了一下 Java S ...

  8. php 函数 将数组转换成标量变量:extract()

    格式 extract( array var_array [, int extract_type] [,string prefix] ); 例子 $array4 = array('key1'=>' ...

  9. angular 入门教程1

    使用angularjs也有一年之久了.从初识angularjs时的激动和兴奋到现在淡定的使用,这其中也是有不少的心酸(刚用的时候和各种js插件的配合使用快把我弄疯了). 细想起来.用MVVM的这种js ...

  10. Nginx 变量漫谈(三)

    也有一些内建变量是支持改写的,其中一个例子是 $args. 这个变量在读取时返回当前请求的 URL 参数串(即请求 URL 中问号后面的部分,如果有的话 ),而在赋值时可以直接修改参数串.我们来看一个 ...