在创建游戏的某个时刻,有必要在外部存储信息并能够检索此信息。例如,你可能希望存储有关登录或高分的详细信息,或者可能存储玩家在你的关卡中的进度。 无论是什么原因,你都需要知道在使用 GameMaker Studio 2 时如何使用文件函数。
认识到 GameMaker Studio 2 是 沙盒型 的非常重要,这意味着在使用可用的文件系统函数时存在许多限制和微小的复杂性,值得注意的是文件系统的工作方式在不同的目标平台上略有不同。有关详细信息,请参阅以下部分:
如果你已获得 Steam 的许可,可以在游戏中使用专用 API,你会发现还有一组新的文件函数可供你使用。 这些在本手册的 Steam API 部分中有说明。
Finally, you should also note that there are some distinct differences between certain target platforms which whould be taken into account when using the file functions. These are:
- iOS: On iOS, if you are loading an included file from a folder, ie: with a path something like "Backgrounds/background1.png", you do NOT need to include the folder as part of the path and simply supplying the file name is sufficient. 但在其它的平台中你必须在路径中包括文件夹。
- macOS and Ubuntu (Linux): On the macOS and Ubunutu, filenames and paths are case sensitive on these platforms, and so to prevent any potential issues, GameMaker Studio 2 will automatically make all names/paths use lower case by default.
- HTML5: On HTML5, saving and loading to and from local storage will work as explained within the different function pages, however if you are loading a file from a server, you must only use the function buffer_load_async() as loading synchronously has been deprecated on most browsers and will eventually be obsoleted.
以下部分都涉及不同类型的文件处理:
显然,有时你需要引用存储文件的目录,而 GameMaker Studio 2 也有一些与你可能需要的不同目录相关的特殊函数:
处理外部文件时,最终用户总是可以打开并更改其中包含的信息,从而改变你的游戏。 这可能导致(例如)游戏元素损坏或在线欺诈分数,因此 GameMaker Studio 2 为你提供了一些基本的编码函数以及对字符串和文件执行 md5 检查以确保它们具有的功能,使文件在使用之前保持其完整性。还提供了两个用于编码和解码 JSON(JavaScript Object Notation)格式字符串的函数。
- base64_encode
- base64_decode
- json_encode
- json_decode
- md5_string_utf8
- md5_string_unicode
- md5_file
- sha1_string_utf8
- sha1_string_unicode
- sha1_file
- zip_unzip
- load_csv
注意: 编码不是加密!base64 编码使文件难以被肉眼读取,需要用户进行解码,但是不能防止破解。 建议你将这些函数与你自己的加密混合使用(互联网上有许多形式的加密和脚本)。