我正在使用SDL在C中为Android和iOS开发游戏。我已经完成了Android版本,现在我将它移植到iOS。为了保存游戏数据,我正在将二进制文件写入SDL_GetPrefPath返回的目录。这在Android上运行得很完美,但在iOS设备上却有不同的结果。我说“设备”,因为它在部署到我的iPhone 5s时似乎只是一个问题,而不是在iOS模拟器上。
游戏开始时会读取保存数据。
prefPath = strcat(SDL_GetPrefPath("<org>", "<app>"), "save.bin");
SDL_RWops* rw = SDL_RWFromFile(prefPath, "rb");
if (rw != NULL)
{
...
SDL_RWread(rw, ...);
...
SDL_RWclose(rw);
}
大多数情况下,这可以正常工作,但有时我会在输出窗口中收到此错误。
DEBUG: Error reading from datastream
写入文件时显示的错误更加复杂,但只是稍微有用。
DEBUG: Couldn't open /var/mobile/Containers/Data/Application/<GUID>/Library/
Application Support/<org>/<app>/save.bin
更糟糕的是,有时候当我运行游戏并且没有出现这些消息时,保存数据的所有更新都会在下一次运行时莫名其妙地丢失。
我想知道的是,这种保存游戏的方法是否适合iOS。我是否应该切换到一种更加特定于平台的保存数据的方法,这种方法可以保证有效,或者是否存在一些根本性的误解?提前谢谢。