Unity手册:https://docs.unity3d.com/cn/current/Manual/UnityManual.html
本系列文章是关于unity在游戏开发方向上的教程,服务于对unity一无所知的新人或稍有所知的学习者,因为其本质上是一个针对新人的导航。阅读本系列文章,要求读者有一定的编程基础和英语基础,至少要有一定C#语法基础。
本系列文章参考的是unity的用户手册,系列中给出的范例代码适用于2018.7.f1版本。在阅读本系列文章的过程中,请读者多多参考用户手册。毕竟本教程是新手向的,有很多地方必然不会涉猎,而(在此基础上)要想完全掌握unity,参考手册是必然的。同时,我会在讲解特定部分的时候给出其在用户手册的位置URL以供读者参考,希望读者能够善加利用,达到事半功倍的效果。
Ps:本教程使用的是未经汉化的Unity软件,也希望读者不要图一时看着方便去安装汉化版(汉化在19年之后的版本支持),有些名词还是记着英文的方便。
正式使用Unity之前在使用unity之前,读者也许需要知道下面的知识:
1 Unity的定义现在提到unity,大部分人的第一印象都是:“unity是一个游戏引擎”。这句话对也不对。Unity是一个用于创建2/3D、AR等内容的工具/引擎(请注意是内容而不是游戏,unity在建筑、动画等领域也有广泛的用途),但是目前其最出众的是在游戏创建上的表现,所以才会让人产生“unity是游戏引擎”的错觉。
在官网的说明中(https://unity.cn/projects/about-unity),描述unity为创作引擎、开发工具。其支持维度为2/3D、AR、MR、VR,开发语言为C#。另外,使用unity制作的程序可以被编译到各种平台上使用,由于unity引擎的灵活性,这些程序也将拥有良好的可移植性。
2 Unity的安装与登录比起大多数专业软件,unity在中国化的道路上先进了太多太多,甚至到了让人钦佩的地步。Unity有专门的中国官网和中文社区(即unity.cn,英文官网为unity.com),还有中文版本的文档。
Unity本体可以直接在中文官网下载,需要注意的是,在安装unity之前可以先安装一个Unity Hub,hub可以用于管理电脑中不同版本的unity editor。
使用unity需要一个账户,以及一个授权版本。由于目前unity已经支持了微信登陆,我们可以直接使用微信扫码登陆,免去另行注册帐号的繁琐。unity的授权分为personal、plus、pro、enterprise四种,其区别见https://store.unity.cn/compare-plans。作为学习者,推荐读者使用personal授权,它能够体验大多数内容,并且是免费的。
Unity基本名词概念-本节相关内容请读者参考:
-https://docs.unity.cn/cn/current/Manual/Glossary.html,《术语表》
在使用unity之前最先要理解通顺的就是unity中的名词概念,这是最基础也是最根本的内容。读懂unity中的特殊名词,才能进一步理解unity引擎的运作模式和它带给使用者的开发方式。
作为一个粗浅的教程,我只向读者们用我自己的理解去解释下面三个名词(默认在游戏开发中)。
1 游戏对象游戏对象可以说是整个unity游戏世界里最基础的成员,摄像机、精灵、地图、灯光等所有出现在场景中的对象都是游戏对象。如果要做个类比,可以将空游戏对象比作Ruby中的Class类(unity中空对象自带一个组件transform),将各种不同的游戏对象(精灵等)比作Class的派生类。
2 组件在游戏对象的名词解释中,我们把游戏对象比作编程语言中的类。从这个类比出发,组件则对应着编程语言中的属性/方法,它被附加到游戏对象上,依附游戏对象表现,游戏对象可以看做是组件的容器。游戏对象的功能由附加到游戏对象的组件来定义。组件给了游戏对象不同的功能,从而使各个游戏对象表现出期望表现的形式,令游戏得以成功运行。不同的游戏对象间之所以不同,是因为他们有不同的属性(组件)。
所有的游戏对象都可以看做一个空游戏对象+组件。例如创建新项目之后预设场景里的主摄像机(下图),它就是由一个空游戏对象+组件camera构成。
3 场景场景是一个.unity文件,由unity本身创建。在游戏中的所有游戏对象都将被放置在某个场景内。一个游戏可以有多个场景。读者可以将场景想象成游戏对象的“舞台”或者说是“容器”,再具象一点可以是RPG游戏里的关卡地图。
Unity手册中指出,场景“实际上就是以碎片化的方式设计和构建游戏”。
Unity界面-本节相关内容请读者参考:
-https://docs.unity.cn/cn/current/Manual/GettingStarted.html,《首次启动unity》
-https://docs.unity.cn/cn/current/Manual/ProjectTemplates.html,《项目模板》
-https://docs.unity.cn/cn/current/Manual/LearningtheInterface.html,《了解界面》
– https://docs.unity.cn/cn/current/Manual/UsingTheEditor.html,《主要窗口》
1.1 项目界面在安装登录完毕之后,我们终于能够打开unity了。与IDEA等软件一样,unity在进入主界面之前还有一个项目选择的界面。这个界面十分简单,因此我们略过此界面的讲解。又由于我们是第一次使用unity,为了进入主界面需要新建一个项目。新建项目界面如下:
其中两个需要讲解的部分为unity analytics与template。
Unity analytics是一个对unity游戏进行分析的数据平台,开发者可以使用其查看游戏玩家的身份等信息。
Template是创建unity项目时采用的模板,简单地来说,它的五个选项从上到下可以视为:标准2D模板、标准3D模板、含有渲染器和后期处理的3D模板、为高端平台设置的高清模板(配置要求高)、性能优先的轻量模板(高优化)、性能优先的轻量VR模板。
在本教程中,我们使用标准的2D/3D模板预设。
随意选择一个模板,创建项目,就可以进入unity的主界面。unity主界面的大致情况如下(我调整过了,跟初始布局可能会有出入,不过不是大问题):
我们把unity的界面除去菜单栏分为五个部分,如上图红框所示,并一一讲解。
2.1 主界面-场景视图(Scene)、动画(Animator)与控制台(Console)即上图中1部分(下略)。
可以看到本部分包含了三个选项卡场景(scene)、animator和console。
Scene顾名思义就是场景选项卡,是游戏中场景的查看器。在unity中,无论预设是2D还是3D,游戏场景都是3D的。这就导致unity场景的操控要较一般2D场景更为复杂一些。没有3D建模经验的读者可能对unity场景的操控感到陌生(下图为场景工具栏),如果读者对这些内容有兴趣,可以学习3D建模相关的内容。如果读者只想要达到基础操控的目的,可以直接在场景中添加一个正方体(Hierarchy->3D object->Cube),然后依次点击按钮切换状态并尝试移动物体,用实践的方式快速学习。
Animator即是动画控制器。它用于读取和修改游戏对象的动画组件animator。
Console是控制台,其用途与IDE中控制台的功能基本一致,在调试中显示警告和错误。我们也可以在代码中使用Console.log来在控制台显示信息。
2.2 主界面-游戏视图(Game)、动画时间轴(Animation)本部分包含两个选项卡game与animation。
Game显示的是游戏测试中的画面,其与游戏正式发布后运行游戏看到的画面相同。要进行和暂停游戏测试,点击下图所示的按钮:
Animation用于编辑组件animation,看起来像是一个时间轴。
2.3 主界面-层次(Hierarchy)本部分包含选项卡hierarchy。
Hierarchy就是常规的层次视图,显示了项目中的所有场景及其下的所有游戏对象。通过层次视图可以简单清晰地观察到场景中游戏对象间的层次关系。
2.4 主界面-项目(Project)本部分包含选项卡project。
Project选项卡包含了左右两部分,左边显示的是文件夹,右边显示的是当前选中文件夹下的内容(包括文件和文件夹,也就是说这是一个小型的项目文件资源管理器)。同时,我们可以在选项卡上方的搜索栏里搜索项目资源,也可以搜索unity assent store中的资源。
在选项卡文件夹显示的最上方有一个标签favorites,它用于存储一些特殊的搜索结果(可以说是一种索引吗)。在搜索栏中搜索一个关键词,然后在右上角点击星标,就可以将搜索结果加入favorites标签。
2.5 主界面-检查(Inspector)本部分包含选项卡inspector。
Inspector选项卡用于显示和编辑游戏对象和其他项(比如说项目整体设置和游戏资源)的详细状况,在显示游戏对象时,其显示游戏对象安装的组件以及其属性。