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

本文介绍了Unity开发中C#的基础知识,包括.Net平台的概念、C#语言特点、两种C#脚本的区别及其应用场景,帮助读者理解Unity开发的核心要素。

这部分文章基于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 的读写;

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

170727_ahLY_3791427.png

5.Mono 子类继承关系

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

6.GameObject 与gameObject

GameObject

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

gameObject

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

转载于:https://my.oschina.net/u/3791427/blog/1816160

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值