不知道还有没有人记得我曾经说过我在做一个FlappyBird来练习。当时的进度就是完成了基本的开始游戏,计分和死亡检测,后来就没有继续了。这两天想了想,还是打算捡起来,然后想先做一个暂停功能。
Flappy Bird的暂停界面属于现在手游的典型类型。当玩家按下暂停键时,当前画面上方会弹出一个暂停菜单。菜单一般包括“继续”、“重启”、“退出游戏”等,一些基本的选项操作游戏菜单制作,如果玩家按下“继续”,会回到游戏界面继续操作。
说起来并不复杂,但原理其实同样简单。一般来说,有两种思路:
今天先介绍第一种方法(不是因为这个方法比较简单orz)
在介绍这个之前,我们首先要了解游戏场景自身的一个属性“持久性”——持久性。当你将该属性设置为True并离开场景时,场景中的所有数据将保存为你离开时的状态。并且在这个状态下会直接带到下一个场景游戏菜单制作,然后就可以回到这个场景继续刚才所有未完成的操作。
了解了这个属性之后贴图笔刷,就很容易了。我们首先需要创建一个没有后台暂停菜单的游戏场景
那么当我们在游戏场景中按下暂停键的时候,我们只需要简单的两行代码
room_persistent = true; //把持久化属性设置为true
room_goto(room_pause); //跳转去暂停菜单场景
global.current_room = room //把当前场景保存到一个全局变量中
如果我们想继续游戏,只需要给“继续”按钮的对象添加点击事件即可
room_goto(global.current_room); //返回暂停前的游戏场景
这里我们使用一个全局变量来记录暂停前的游戏场景。这个操作是针对一些有多个游戏场景的游戏设置的。如果你的游戏很简单,像FlappyBird,只有一个固定的游戏场景。也可以对跳转的roomid进行硬编码,达到同样的效果,但是为了养成良好的习惯,最好不要使用硬编码的方式。
今天介绍的这个方法真的很简单UI界面,但是可能会占用更多的内存。
毕竟暂停前暂时保存游戏数据还是很有必要的,不过对于一些小游戏来说基本够用了:)
附言。HB的教程第10章中文版也已经上传到B站了
【GameMaker Studio 2中文教程】-【制作横版射击游戏第10期-自动生成敌人】-【原作者HeartBeast】