我是Unity的新手。我有这样的问题。
我的游戏得分很高,我希望将其保存到移动设备上的文本文件中。在这种情况下,我想将该文本文件保存到我的SD卡,但我不知道如何。
下面的代码显示了它对文件的读写方式。它在我的计算机上运行得很好,但它不适用于模拟器或真正的移动设备。
我认为它对目录感到困惑。
void writeHighScore() {
string path = "\\sdcard\\colorbounce\\highscore.txt";
int highscore = 0;
// This text is added only once to the file.
if (!File.Exists(path))
{
System.IO.Directory.CreateDirectory("\\sdcard\\colorbounce\\");
// Create a file to write to.
using (StreamWriter sw = File.CreateText(path))
{
sw.WriteLine(score);
}
}
// Open the file to read from.
using (StreamReader sr = File.OpenText(path))
{
string s = "";
while ((s = sr.ReadLine()) != null)
{
highscore = int.Parse(s);
}
}
if (score > highscore) {
// This text is always added, making the file longer over time
// if it is not deleted.
using (StreamWriter sw = File.AppendText(path))
{
sw.WriteLine(highscore);
}
}
highScoreText.text = highscore.ToString ();
}
请帮我解决这个问题。 感谢。
答案 0 :(得分:1)
考虑使用PlayerPrefs来保存您的高分,例如:
void createToolbox(const char* windowName, HINSTANCE hInstance) {
// ...
// Do we need this?
// HINSTANCE hInstance = GetModuleHandle(NULL);
CreateWindow(windowClass, windowName,
WS_OVERLAPPEDWINDOW,
0, 0, 640, 480,
0, 0, hInstance, NULL);
// ...
}
更新:如果你想将一些数据保存到SD卡,请使用Application.persistentDataPath属性,这是最安全的。
答案 1 :(得分:1)
PlayerPrefs可能是保存高分的更好选择,但是如果您希望保存到文件,那么您可能希望在调试应用程序时使用Logcat,因为它可能会发出有关其无法访问的确切原因的有用错误/写信给你的位置。
一些提示:
您需要确保您的应用程序具有“写入外部”权限。没有它,Android将不允许您写入SD卡。
您需要确保您的设备中确实有SD卡。您可能需要检查模拟器以确保它是您的模拟器支持的功能。
访问路径时,您需要处理Android时的文件:// uri。