基于unity开发了解C#语言中的委托与事件(一)

这部分文章基于unity开发主要介绍的内容包含C#语言中的泛型类,泛型方法,委托,多播委托,事件,匿名方法,Lambda 表达式等知识点。

在正式开始之前,我们先来简单了解些前置知识。

1.什么是.Net平台?

①.Net 平台是“微软开发者全家桶”,是一个优化过的“开发解决方案”

②.Net 平台不单单包含C#,还包含ASP.Net,VB.Net,F#等语言,另外使用.Net 平台能开发的方向涵盖手机应用,桌面应用,Web 应用等方向。

③使用.Net 平台开发出来的产品,都不是直接运行在电脑的CPU 和内存里的,而是运行在.Net 虚拟机(.Net Framework)里面的。

2.是C# 语言,C#语言是.Net 平台下主推的一门编程语言。

①我们使用C#写的代码,并不是真正的代码;

C 语言编写的的代码,编译后直接是二进制格式,双击就可以运行;

所有.Net 平台下的语言写的代码,编译后不是二进制,而是“IL 中间语言”,双击运行,需要经过.Net 虚拟机环境进行二次解析才能运行;

④所以说.Net 平台开发的程序相对于C,C++开发的程序,效率较低。

3.Mono 虚拟机

Mono 是第三方公司开发的一个开源项目,目的就是让.Net 开发出来的产品可以跨平台运行使用C#脚本开发的Unity 项目,之所以能在Android,IOS等其他平台正常运行,依赖的就是Mono 环境。

4.两种C#脚本

在Unity 项目开发过程中,我们可以使用“两种C#脚本”;

其一:Mono 子类C#脚本,在Project 面板上直接右键创建出来的C#脚本,这种脚本默认直接继承MonoBehaviour 类。

①这种脚本其实就是Unity 中的自定义组件,可以直接挂载到Unity 场景中任何游戏物体上

不需要我们使用new 关键字进行实例化,只有挂载到了游戏物体上,运行起来后,unity 引擎会自动完成该脚本的对象实例化;

脚本中含有生命周期方法(Awake,Start,Update......);

其二:非Mono 子类C#脚本,取消对MonoBehaviour 类的继承。

①这种就是普通的C#脚本,不是Unity 中的组件,也就无法挂载到游戏物体上

必须使用new 关键字进行类的对象的实例化

没有继承Mono,也就没有生命周期方法

所有在Mono 类中定义的方法,都无法使用,比如:Invoke 和协程。

那么何时使用非Mono 子类C#脚本呢?

①当该脚本不需要挂载到游戏物体上的时候;

②开发过程中的数据实体类;

③工具类,例如专门负责xml 的读写;

做个简单的表格归类,如下图所示:

5.Mono 子类继承关系

Object[对象] --> Component[组件] --> Behaviour[行为类] -->MonoBehaviour[Mono 行为类] --> MyScript[我们写的类]

6.GameObject 与gameObject

GameObject

这是一个类,这个类中有很多静态方法,我们直接使用类名.方法名()进行使用。是类就会有对象,Unity 中所有的游戏物体都会实例化出一个该类的对象。我们使用gameObject 来访问。

gameObject

是Component 脚本中定义的一个“自读属性”返回值类型GameObject。代表的是当前脚本所挂载到的游戏物体本身的实例对象。

猜你喜欢

转载自my.oschina.net/u/3791427/blog/1816160