Unity官方教程 2D UFO(上)

2D UFO 游戏.gif

前言

Unity官方教程 2D UFO 原版视频教程地址,点我点我

抱着总结和方便回顾的念头把Unity官方教程写一遍。朋友—Zui,两年前写的球球和飞机非常精彩,我乃是继承他的“遗风”(→_→)。

这个2D UFO游戏个人认为是Roll-a-Ball的2D版,实现起来更加简单,更适合新手入门。官方视频未知所用Unity版本,现在Unity最新的版本是Unity 2017,部分界面和实现方式已经有差异。

电脑环境:Windows10
Unity版本:2017.2.0
脚本/代码编辑器:Microsoft Visual Studio Community 2017 15.4.4 (装Unity的时候带上的)

你将学会操作什么?

  • 如何创建一个新的项目(Project)
  • 如何下载资源包(Asset Store)
  • 如何添加基本的游戏对象(GameObject)
  • 如何给游戏对象添加脚本(Script)
  • 如何制作预制件(Prefab)
  • 如何实现计分板和游戏结束提示(UI Text)
  • 如何发布游戏(Build)

一、创建一个新的项目(New Project)

第1步:通过菜单栏File-->New Project打开创建新项目对话框

第一次安装unity的同学打开软件的时候默认就是创建新项目对话框页面。

New Project

第2步:确定项目名称、存放路径和游戏模式

创建新项目对话框
  • Project name:项目名称
  • Location:项目存放路径,可选择电脑任意目录(不会放C盘吧?(꒪Д꒪)ノ)
  • 3D/2D:在这里我们当然选择2D
    最后点击 Creat project 按钮创建新项目。

第3步:调整项目视图布局

编辑器主界面

有可能你创建出来的项目视图布局和上图不一样,可以编辑右上角Layout按钮来改变布局。上图布局是Tall(可以通过鼠标调整每个窗口宽度)。其他模式可以自行选择体验。

Layout

二、 从Asset Store下载素材资源包

为了方便我们跟随视频学习,Unity官方已经提供2D UFO游戏的所有素材供我们免费下载——Unity Asset Store。

第1步:通过菜单栏Window-->Asset Store按钮打开资源商店

image.png

第2步:查找和下载资源包

资源商店窗口默认会在Game窗口右侧展开,在Search搜索栏输入游戏名字并回车,找到游戏后点击标题打开详情页,点击蓝色按钮Download确认下载。

搜索结果

第3步:导入资源到本地打开的项目

下载完成后会提示是否Import到项目内,点击Import按钮会打开导入资源选择页面。默认全选,无需改动,点击右下角的Import按钮即可。

Import

导入完毕之后关闭Asset Store页面,回到编辑器主界面,可以看到Project窗口下的Assets文件夹多出了三个文件夹_Completed-Assets、Sprites、TutorialInfo。本教程中,除了Sprites,其他没有用武之地٩(๑❛ᴗ❛๑)۶。

Assets

三、创建第一个游戏场景(Scene)

第1步:创建一个文件夹存放场景文件

Unity中,游戏场景、脚本、预制件、美术等所有资源文件都放在Assets文件夹下。游戏越复杂文件可能就越多,如果不对这些资源文件合理进行分类的话,那么查找和管理起来就非常困难。所以在学习Unity的过程中要有意识地培养自己合理分类资源文件的习惯,这点不要忘记!那现在就开始创建一个Scenes文件夹来存放游戏场景文件吧~

创建办法有3种:

  1. 菜单栏Assets-->Create-->Folder
  2. Project窗口下的Assets文件夹右键快捷方式创建
  3. 左键选中Project窗口下的Assets文件夹,点击Project正下方Create右侧小三角,选择Folder。
Create Folder

第2步:保存场景文件到Scenes文件夹

通过菜单栏File-->Save Scenes(快捷键Ctrl+S)保存场景文件,记得是保存在Scenes文件夹,我们命名主场景文件为Main

保存场景

可以看到,Hierarchy窗口下出现了Main场景。

Main

四、添加游戏对象——背景(Background)

有了游戏场景,我们就可以开始在场景中添加一些我们需要的游戏对象了。首当其冲需要添加的是游戏背景,也就是UFO背后那张棋盘。选中Sprites文件夹,鼠标左键按住Background文件不动,拖到Hierarchy窗口空白处松开。

Background

可以看到,Hierarchy窗口下新增了一个Background游戏对象。新增游戏对象之后最好进行重命名(更好地说明它的作用),重命名有2个方法:

  • 左键点击选中要改名的GameObject,稍微等一会,再左键点击一下,进入编辑改名状态。和平时修改电脑文件名字是一样的~
  • 选中要改名的GameObject,在右侧的Inspector窗口下方名字栏处修改,改好回车。
    在这里我们不改名( • ̀ω•́ )✧ Background这个名字挺好的。
重命名

接下来要做一件很重要的操作(官方和Zui强力推荐)——重置(reset)游戏对象的Transform属性:在右侧的Inspector中找到组件Transform,点击它右上角的小齿轮,选择reset选项,如下图:

reset transform

官方建议我们每次新增GameObject之后都进行双标动作:改名和重置Transform。改名是方便解释对象的作用,重置是让游戏对象的位置回到原点,避免因为不在原点产生一些诡异的事情。

背景添加成功之后,可以看到Scene窗口的背景不完全可见,鼠标滚轮控制缩放,鼠标左键拖动,调整到Scene窗口可以看到完整的背景,方便后续操作。

鼠标切到Game窗口,背景图片看起来还是很大,无法窥得全貌,这是由于正交摄像机的Size太小,可视范围太少。鼠标选中Main Camera游戏对象,在Inspector内的组件Camera找到Size,把它的数值改成28(可以根据自己的窗口大小来调整这个数值)。

Game窗口

Tips:鼠标放在Size输入框前面一点,出现左右两个箭头的时候,按住鼠标左键上下移动可以微调数值。其他有输入项的都可以使用这个操作~

五、添加主角——UFO

前面都是浮云,到现在为止我们的游戏主角终于要登场了,泪流满面(;へ:)……添加UFO和Background的操作是一样的,在Sprites文件夹里面把UFO拖到Hierarchy窗口即可。添加完GameObject不要忘记双标动作了,这次我们把UFO重命名为Player,因为它就是我们玩家所能操控的对象。

Player

这个主角有点太胖了,格子都装不下了,让我们给它减减肥。选中Player,把TransformScale内的x和y都改成0.75(2D游戏不用改z)。看,格子这么合身!

Transform属性说明:Position位置,Rotation旋转角度,Scale缩放比例。

在Player的Inspector窗口下有一个组件Sprite Renderer,有一个选项Sorting Layer,它控制渲染层级的顺序。在这里我们需要把UFO也就是player的这一项改成Player,然后把Background的改成Background。很绕→_→ 这个改了之后,背景就不会盖在上面挡住UFO了~

image.png

六、让UFO走起——添加刚体(Rigidbody2D)和脚本(script)

UFO死气沉沉地一动也不动,我们总不能干瞪着眼看它,这样不叫游戏。那么接下来就该让它走起来了~它不会无缘无故地走起来,需要我们去给它施加一个物理作用力,控制它往我们指定的方向走。这就涉及到物理引擎的控制了,具体我们接下来看怎么实现吧。

第1步:给UFO添加刚体组件

刚体能让UFO被物理引擎所控制,这样便能模拟现实,通过受到物理作用力来实现真实的物理表现效果比如移动和碰撞,方便后续实现拾取金币和撞墙。

给UFO添加刚体组件的2种方法:

  • 选中Player,通过菜单栏Component-->Physics 2D-->Rigidbody 2D添加。
  • 选中Player,通过Inspector的Add Component-->Physics 2D-->Rigidbody 2D添加
Add Component

第2步:给UFO添加脚本组件

OK,现在UFO有刚体了,它可以接受物理作用力了,那么如何给它发出指令让它走起来?通过给UFO添加脚本并且编辑脚本可以实现对它的操作。

不过,首先我们要意识到,脚本也是资源文件,所以是需要存放在Assets文件夹里面的。还记得之前提过的资源分类吗?在Assets下创建一个Scripts文件夹,用来存放所有的脚本文件。

Scripts文件夹

给GameObject添加脚本的方法是选中GameObject(也就是我们的主角Player),点击Inspector窗口的Add Component按钮,在弹出来的菜单中选择New Script

New Script

此时要求输入脚本名称和选择语言类型,这里我们将脚本命名为PlayerController,然后语言选择C Sharp。

PlayerController

点击Create and Add后,我们就成功给UFO添加一个脚本组件了。接下来你们肯定以为要编辑脚本了对不对?NO,NO,NO(贱笑.jpg)。点击Assets文件夹,可以看到文件夹内出现了一个名为PlayerController的脚本文件。由此我们知道,每次给游戏对象新增的脚本文件默认是放在Assets文件夹。根据资源分类原则,要先记得把这个脚本文件拖到刚才创建的Scripts文件夹内。

然后通过双击这个脚本文件,或者点击脚本组件右上角的小齿轮按钮,在弹出来的菜单中选择Edit Script便可打开脚本编辑器了。

Assets文件夹

第3步:编写脚本

下面没有编程经验的同学,可以直接按照例子来抄写代码,以后做的多了自然也就容易理解了。
新打开的脚本是这样的:

PlayerController

里面默认自带了2个方法,Start和Update,Update在这个例子里用不到。我们添加一个FixedUpdate的方法,该方法主要适用于处理物理逻辑,代码如下:

PlayerController代码

简单说明下:

  • 新增了两个变量成员,rb2D是刚体组件,speed是控制UFO移动的速度。
  • Start方法划线部分,用GetComponent方法获得当前脚本所挂载的游戏对象(Player)里的刚体组件并且赋值给rb2D
  • FixedUpdate方法,定义了两个浮点变量分别代表键盘水平和垂直方向的输入,根据这两个值确定移动二维向量movement,最后由刚体rb2D调用AddForce方法给UFO添加一个力使其移动。

Tips:脚本新增的Public变量成员,会在Unity编辑器中脚本组件内显示并且可以修改赋值,比如此例中的speed

speed

OK,现在回到Unity,把Speed改成10,然后运行游戏,激动人心的时刻要到了!

最左运行游戏,变成蓝色就代表好了

咦?为什么UFO在做自由落体运动?尴尬ヾ(。ꏿ﹏ꏿ)ノ゙......前面提到,刚体能让UFO处于物理引擎控制之下,所以添加了刚体的UFO是可以受到物理作用力包括重力的!那怎么样让它不受重力影响呢?把Rigidbody2D组件的Gravity Scale项的数值改成0就可以了。

Gravity Scale

现在再运行游戏,UFO不会再自由落体了。按WASD或者方向键试试,可以看到UFO走起来的效果了。修改Speed的值可以改变速度哦。

传送门:Unity官方教程 2D UFO(下)


【扩展补充】

好的习惯:
  • 每创建一个GameObject 就进行双标动作:改名、reset Transform
  • 每新建一个Script,先拖入到scripts文件夹再编辑
  • Script编辑完毕之后,如有新增的public成员变量,要记得在Inspector该脚本下该选项填充数值,或者把对应对象内容拖入到框内。
Q&A:

Q1:Game窗口里面棋盘外面区域是一片蓝色,怎么修改成自己想要的颜色?
A1:选择Hierarchy窗口内的Main Camera,在右侧Inspector的Camera组件内修改Background背景色即可。同学可以把RGB设置成75 75 75,灰色调和Scene窗口一致。

Q2:在脚本里面,Update()和FixedUpdate()有什么不同?为什么在这里我们要使用FixedUpdate()?
A2:Update() 和 FixedUpdate()在游戏中的作用是都会在更新的时候自动循环调用。他们的区别主要就是

  • Update()是在每次渲染新的一帧的时候才会调用,也就是说,这个方法被调用的频率和设备的性能有关。性能好的机器上fps高,同样的时间传输的帧数多,Update被调用的次数多,而性能差的机器就相反。这会导致同一个游戏在不同的机器上效果不一致,有的快有的慢。

  • FixedUpdate()是在固定的时间间隔执行,不受游戏帧率的影响,所以非常适用于处理物理逻辑。因此人们处理Rigidbody的时候经常使用FixedUpdate()。

Q3:那Start()是什么鬼?
A3:游戏初始化的时候调用Start方法,后续不会再调用。而Update之类的都是反复根据他们的规则在调用执行~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 156,069评论 4 358
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,212评论 1 287
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 105,912评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,424评论 0 202
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 51,741评论 3 285
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,194评论 1 206
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,553评论 2 307
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,289评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 33,923评论 1 237
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,251评论 2 240
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,775评论 1 255
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,144评论 2 249
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,698评论 3 228
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 25,936评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,658评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,214评论 2 267
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,159评论 2 258

推荐阅读更多精彩内容