《TenderUnity 从0开始Unity》这一系列的教程中会从C#基础开始(不知道什么是C#?没关系后面会讲),本人会根据对Unity的理解并结合对C#的使用,希望帮助观看文章的朋友从0开始接触Unity并结合C#编程进行Unity的使用
注:本人并非游戏编程的高手,只是属于水平一般的码农(或者更差),之所以写这一系列的文章是希望可以帮助自己的几个相处多年的朋友入门游戏编程。如果是大神看到有错的地方希望指出,也希望看到文章的朋友一起学习。至于更新博文的话会看机会而定,毕竟这个博客已经开通很久但一直没有时间去写博文,如果有很长一段时间没有写博文的话,望理解,话不多说,现在开始。
《TenderUnity 从0开始Unity》这一系列的教程会结合《C#入门经典 第六版》这本书进行续写,如果已经把这本书熟读于心的话相信已经很成功,可不关注这一系列的博文,谢谢。
最开始的这一篇的内容会非常枯燥,因为涉及到一些基本理论常识,因此需要耐心看,我会在一些重要的点上面用红色表示,方便回忆观看。
1.1 什么是.Net Framework
.Net Framework是微软为开发应用程序创建的一个具有革命意义的平台。
① .Net Framework不仅仅可以运行在除了Windows系统之外的其他系统上,在其他系统上一样可以运行,只需要通过Mono(下面会解释什么是Mono)
② .Net Framework可以创建多种应用程序,如桌面应用程序,Web应用程序等等
③ .Net Framework可以用于多种语言,这些语言都可以访问.Net Framework彼此之间通信。(笔者认为,Unity中的JS与C#可以相互调用,C#可以调用C++动态库与此有一定的关系)
1.2 什么是Mono
Mono是.Net Framework的开源版本(包括了C#编辑器)(开源,即公开源代码,你可以看到代码的实现),这个开源版本可以运行在其他的操作系统上(Mac/Linux/PC/Android/IOS……)。Unity正是通过借助Mono,架构在Mono这个基础上进行的开发。这也是为什么Unity可是实现发布多个平台程序的重要原因。
打开Unity的菜单栏→ File→Build Settings即可预览发布的平台(不会打开Unity?没事,后面会告诉你怎么打开Unity),我们在这个截图中可以看到Unity支持发布的平台多种多样,我们必须记住这个(如果连发布都不懂的话还怎么把自己的游戏拿给别人玩呢对吧),具体的发布教程我们后面会讲,这里我们先知道Unity支持发布多平台即可。
1.3 .Net Framework内容
.Net Framework = 庞大的代码库(简称FCL) + CLR(公共语言运行时:负责管理用.Net库开发的所有应用程序的执行)
客户语言(如C#)中通过面向对象编程技术(OOP)来使用这些代码。
在这里我们用下图来表示,希望能够帮助理解:
之所以将.Net Framework分得这么细的子模块的目的是:不同操作系统可以根据各自的特性,支持其中的部分或全部模块。例如,智能手机支持所有的核心.Net功能,但不需要某些更高级的模块。(如Unity支持了.Net Framework 2.0版本的功能,但是高版本的功能可能会不支持,因此Unity在使用高版本.Net Framework的新功能的时候需要注意版本是否支持的问题)。
.Net Framework定义了基本类型。类型是数据的一种表达方式,指定最基本的类型(如32位带符号的整数)有助于使用.Net Framework的各种语言之间进行交互操作(在上面我们说到语言之间可以通过.Net Framework相互通信,既然如此肯定是相互认识的,因此基本类型是肯定需要的)
1.4 使用.Net Framework编写应用程序
使用.Net Framework编写应用程序 = 使用.Net代码库编写代码
在Unity开发中基本上都是使用 VS(Visual Studio)+ UnityVS插件(可进行调试程序) 进行代码的编写,Unity中编写代码有安装的时候自带的Monodevelop编辑器,但是因为功能并不如VS的强大,因此实际开发中绝大多数仍是使用了VS进行代码的编写(不管你用不用,反正我是用了~)
1.5 Visual Studio简介
VS是一款强大的集成开发环境(IDE),支持C#语言的编写(当然可以支持其他语言,甚至你还可以用文本编辑器当作编辑器),优点是便于把.Net功能集成到代码中,我们还可以使用扩展的插件(如上面讲述到的在Unity中调试的UnityVS插件,以及高亮插件等等,这些都能为编写代码提供巨大的方便,后面我们会讲到)
目前VS最新版本是VS2015,如果是windows 10的用户建议可以安装这个版本(用的爽爽哒~)。
注:为了后面能安装顺利UnityVS插件,希望各位安装VS的时候直接将VS安装至C盘中,也不要更改默认的安装名称,因为在UnityVS插件的安装过程中是会直接前往C盘检测VS,如果改变的话可能会造成安装UnityVS的失败。这里具体的我们后面会讲到。
1.6 关于代码的编译
我们知道,我们写的C#代码其实就是一段文本,如图所示在Unity中写一段简单的控制台输出代码(具体打印我们后面再讲):
<pre name="code" class="csharp">using UnityEngine;
using System.Collections;
public class HelloWorld : MonoBehaviour {
// Use this for initialization
void Start ()
{
//这里简单的在控制台上输出了一段文本“Hello World”
Debug.Log("Hello World");
}
}
现在我们思考个问题,代码是如何编译运行的。为了方便理解,我做了这张图,图略大,望理解:
1.7 C#简介——大致理解即可
C#与C++相比(C++也是开发大型游戏的首屈一指的语言哦~)
1、语法更简单;2、略长但更健壮调试更简单;
3、唯一彻头彻尾为.Net Framework设计的语言,是在移植到其他操作系统上的.Net版本中使用的主要语言。
关于解决方案:
在使用VS开发应用程序时,可以通过创建解决方案来完成。在VS术语中,解决方案不仅是一个应用程序,还包含了项目,可以是C#编写的WPF项目和Web项目,可以包含多个项目。
这样,即使相关的代码最终在硬盘上的多个位置编译成多个程序集,也可以把他们组合到一个地方,这样就可以处理“共享”代码(这些代码放到上述图片的GAC中),同时,应用程序也使用这段共享代码。可以在多个代码中单步调试指令。
使用UnityVS打开Unity程序之后的项目解决方案如下:
结尾语:这一篇我们只是大致学习了一些关于.Net Framework的内容,其实大多数都是原理性的东西,比较容易不理解,需要耐心。
在后面我们将会开始结合Unity的使用去学习C#,这个过程可能会先介绍Unity的大致使用。待定……毕竟这篇文章花了我大致6+小时的时间,有点累呀~