除了Flappy Bird之类的小游戏,许多游戏都需要保存和载入进度,以便玩家可以随时中断游戏,之后又能继续玩下去,在GameMaker Studio中有几种方法都可以实现类似的功能,常用的有以下几种方法:
- 自带函数game_save()
- ini配置文件保存
- ds_map/ds_list存储
大家可以根据自己游戏的复杂程度和自己的喜好来选用,今天先介绍前两种。
自带函数game_save()
在GameMaker Studio中自带两个存档和读档的方法:
- game_save()
- game_load()
这两个方法在调用时都只需要在括号中填入字符串格式的文件名作为参数即可
game_save("save.dat")
game_load("save.dat")
如上的代码就是将当前游戏的一些静态内容保存到一个名为"save.dat"的文件中(或从中读取),如各种变量等,但这个方法无法指定哪些内容需要保存,而哪些又需要排除,并且无法保存游戏中创建的动态资源,诸如数据结构(ds_list、ds_map等)。并且当你开启了某个场景(room)自带的物理特性以后这个方法就会失效无法使用。另外好像这种方法保存的文件在重新编译更新游戏版本时是无法继承的。所以这个方法其实还是十分有局限性的,只有当游戏非常简单对保存的数据内容非常有限时可以考虑用一下。
ini配置文件保存
这可能是最普遍的一种方法,可以自定义需要保存的值,而且不算复杂,但是使用这种方法首先要对ini配置文件有基本的理解,不清楚的可以先去了解一下——INI文件
使用ini配置文件保存数据的方法如下:
ini_open("saveData.ini"); //打开ini文件,如果不存在则新建
ini_write_real("Variables", "score", score); //第一个值是section,第二个值是key,第三个值是对应要写入的value
ini_write_string("Variables","string",string); //同上,不过这是写入字符串的方法
ini_close(); //用完记得关闭文件否则容易内存溢出
在使用ini_open的方法打开/新建了一个ini配置文件以后,就可以将你所需要的值全部存入这个文件,比如血量、分数、人物等级等等,甚至可以把每一个对象的坐标都保存到文件里,方便下次载入时能让画面完全恢复原装。而当你载入游戏时就需要用以下方法进行读取:
ini_open("saveData.ini");
score = ini_read_real("Variables","score",0); //如果文件中没有对应的值则会将第三个参数保存到文件里
string = ini_read_string("Variables","string","Hello world"); //同上,只是字符串的方法而已
ini_close();
用这个方法你可以把你之前保存的数据依次读取出来,然后加载到你当前的游戏中来,这里要注意的是如果在存档文件中没有获取到对应的值时,会将此处第三个参数的内容作为默认值写入存档文件,切记。
ini保存很好用♥