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


声明:本文转载自https://my.oschina.net/u/3791427/blog/1816160,转载目的在于传递更多信息,仅供学习交流之用。如有侵权行为,请联系我,我会及时删除。

这部分文章基于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。代表的是当前脚本所挂载到的游戏物体本身的实例对象。

本文发表于2018年05月21日 20:00
(c)注:本文转载自https://my.oschina.net/u/3791427/blog/1816160,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如有侵权行为,请联系我们,我们会及时删除.

阅读 1810 讨论 0 喜欢 0

抢先体验

扫码体验
趣味小程序
文字表情生成器

闪念胶囊

你要过得好哇,这样我才能恨你啊,你要是过得不好,我都不知道该恨你还是拥抱你啊。

直抵黄龙府,与诸君痛饮尔。

那时陪伴我的人啊,你们如今在何方。

不出意外的话,我们再也不会见了,祝你前程似锦。

这世界真好,吃野东西也要留出这条命来看看

快捷链接
网站地图
提交友链
Copyright © 2016 - 2021 Cion.
All Rights Reserved.
京ICP备2021004668号-1