享受一下大神的感觉, unity中用C#自己封装dll

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

(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 = 0; i < arr.Length; i++)  //这里是一个冒泡排序
            {
                for (int j = 0; j < arr.Length - i - 1; j++)
                {
                    if(arr[j] >arr[j+1])
                    {
                        int temp = arr[j];
                        arr[j] = arr[j+1];
                        arr[j + 1] = temp;
                    }
                }
            }
            return arr[arr.Length - 1];
        }
    }
}

当然,咱们主要讲的是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") != 0)
        {
            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(3,10,7,5,4));   //刚才封装的方法
    }
}

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

时间: 2024-08-05 23:30:03

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

前端大神总结的学习方法【引用】

下面是一些前端大师的学习方法,目前我正在学习,希望对大家有用! 转载出处: https://github.com/qiu-deqing/FE-learning FE-learning 必备基础技能 基本开发工具 学习方法和学习目标 入门之路 继续提高 一些个人经历 LingyuCoder的学习经历 工具 技能 语言基础 进阶 项目 未来 其他 入门书 一些不错的网站 历程 MrRaindrop的学习经历 缘起 项目,下一个项目 收集癖和知识管理 跟对神 读书 前端的定位 最后 结合个人经历总结的

怼完Sophia怼深度学习!细数完大神H5微信牛牛棋牌源码架设出售是这样怼人的...

十多个小时前,深度学习大神Yann LeCun语出惊人,他宣布放弃H5微信牛牛棋牌源码架设出售( h5.super-mans.com Q2012035031 ?17061863513 vx同)H5微信牛牛棋牌源码架设出售这个词.因为媒体对这个词的炒作言过其实,混淆了大家真正的工作,而"可微分编程"才是对此更好的描述: "将各种参数化的函数模块网络组装起来,做成新软件,同时以某种基于梯度的优化再将其训练出来" 这跟普通的编程工作也没多大差别,除了参数化的自动微分,以及

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

Implement wildcard pattern matching with support for '?' and '*'. '?' Matches any single character. '*' Matches any sequence of characters (including the empty sequence). The matching should cover the entire input string (not partial). The function p

jquery-图片轮播(新手请大神指教一下)

这是我刚学jquery写的,感觉效果不是很好. #scrollPics{ height: 330px; width: 980px; margin-bottom: 10px; overflow: hidden; position:relative;}.slider ul{ padding: 0px;}.slider ul li{ float: left; list-style: none; width: 980px;}.num{ position:absolute; right:5px; bott

听阿里大神的笔记

https://www.yuntipub.com/pricing http://www.infoq.com/cn/ <code><编码> <程序员的自我修养> elk 日志分析 [email protected]书名: JAVA大型网站性能调休 KVM性能调休 深入理解计算机原理 JAVA并发实战------重点 周志明 JAVA网络编程精解 spring cload zookpeer 需要有拿得出手的东西 infoQ社区 赠衔接(华黎) 大型网站系统和中间件实践 监控

有关UITableViewCell的侧滑删除以及使用相关大神框架MGSwipeTableCell遇到的小问题

提起笔,却不知道从何写起了,今天一整天都耗费在了这个可能根本不算是问题的小问题上,至今仍有一种蛋蛋的忧桑..(噢,不是提笔,是键盘手T_T) 表格视图在项目中就像是每日的家常便饭,在cell上添加侧滑删除功能这种需求也是遍地可见.而就是这么一个家常菜却坑了我一天,可能我是真的闲的蛋疼吧,好吧,其实,讲道理还是我太菜,人艰不拆. 好了废话不多说,运用系统自带的API实现侧滑删除功能其实非常简单: //- (void)tableView:(UITableView *)tableView commit

我眼中的大神精神(之前所写,一直没有完成,以后慢慢完成)

吸收了鄙人以前的教训,在我读了一些书之后,发现好的经典的教材都有些共性:它们首先让读者对这本书的内容有完整的了解,先用最浅显的语言去讲解,去比喻哪怕被人前期诟病不专业,也要把整体框架完整而明了的呈现给读者,即使读者不明白其中细节,但是只要看完这些,读者就可以和别人骄傲的说他理解这方面的原理.然后再在每一章分别去细致专业而严谨的讲解,然后每一章之后都会有经典的练习题和思考题给读者.从这些经典教材的写作思路也就不难从中提炼出一种学习的方法. 八.学习原理 九.最正确的学习方式  没有所谓的最正确的学

有时候,大神,和神是没有区别的,这,

微软认证:系统类 Microsoft Certified Professional Microsoft Certified Systems Administrator Microsoft Certified Systems Engineer Microsoft Certified Database Administrator 思科认证:网络类 Cisco Certified Network Associate Cisco Certified Design Associate Cisco Cert

【知乎转载】机器学习、数据挖掘 如何进阶成为大神?

著作权归作者所有. 商业转载请联系作者获得授权,非商业转载请注明出处. 作者:淩清风 链接:https://www.zhihu.com/question/37256015/answer/85198013 来源:知乎 我不是大神. 背景:某二本院校大四学生: 说一说自己的学习经历吧.不知道能不能对题主有所帮助. 跟大多数人一样,是从Andrew Ng大神的coursera课程接触到机器学习.在学那门课的时候也就老老实实的看完,看到最后,听到Andrew说看完这些课程的人基本上已经超过硅谷半数的工程