[英]LibGDX writing to text file and receiving various errors
我當前使用LibGDX創建的游戲具有“高分”功能,其中高分保存在文本文件中,然后被覆蓋或讀取到屏幕上。 我在這里遇到很多錯誤。 我嘗試設置權限以允許外部文件寫入,我嘗試將.txt文件放在其他目錄中。 我嘗試使用Gdx.files.internal() and Gdx.files.external()
沒有任何工作。 這是我獲得和設置高分的兩種方法。
private int getHighScore()
{
FileHandle scoreFile = Gdx.files.local("data/high_score.txt");
String text = scoreFile.readString();
int highScore = Integer.parseInt(text);
return highScore;
}
private void setHighScore(int newScore)
{
FileHandle scoreFile = Gdx.files.local("data/high_score.txt");
String score = Integer.toString(newScore);
scoreFile.writeString(score, false);
}
在游戲中死亡時(應該顯示分數),我從LibGDX收到此錯誤:
03-06 22:31:37.437: ERROR/AndroidRuntime(14533): FATAL EXCEPTION: GLThread 4617
com.badlogic.gdx.utils.GdxRuntimeException: File not found: /data/data/hasherr.floppyfish.android.core/files/data/high_score.txt (Local)
at com.badlogic.gdx.files.FileHandle.read(FileHandle.java:133)
at com.badlogic.gdx.backends.android.AndroidFileHandle.read(AndroidFileHandle.java:77)
at com.badlogic.gdx.files.FileHandle.readString(FileHandle.java:198)
at com.badlogic.gdx.files.FileHandle.readString(FileHandle.java:186)
at hasherr.ghostly.main.state.DeathState.getHighScore(DeathState.java:122)
at hasherr.ghostly.main.state.DeathState.render(DeathState.java:87)
at hasherr.ghostly.main.state.StateManager.render(StateManager.java:37)
注意這里:
找不到文件:/data/data/hasherr.floppyfish.android.core/files/data/high_score.txt(本地)
/data/data/hasherr.floppyfish.android.core/files/data/high_score.txt
不是我的游戲中的目錄/文件。 data/high_score.txt
是,這就是我要訪問的文件。 我對Gdx.files.local(path)
方法不是很熟悉,所以我不確定它是從哪里獲取的。
如何使程序使用此文本文件而不會引發錯誤?
首先,我建議,以確保中, Highscores.txt
存在於Gdx.files.local("data/high_score.txt");
。 為此,您可以使用: boolean exists = Gdx.files.local("Highscores.txt").exists();
。 如果此布爾值為false
,則可以讀取“ no Highscores”,而不是讀取.txt
。 正如@MelihYıldız'所說, Gdx.files.local
指向私有應用程序存儲。 但是,如果使用它來write
和read
數據,則無需關心它在哪里。 只要確保您始終使用相同的FileHandle
。 要了解所有不同的Gdx.files.xxx,可以閱讀此內容 。 它說明了在何處存儲數據以及哪種應用程序類型可以訪問它。 對於Highscores
您還可以考慮使用Preferences
。 快速教程 。 請注意, Preferences
是存儲HTML5應用程序數據的唯一可能性。 如果您想使您的App成為Webapp,則應該仔細考慮一下。
Gdx使用您的應用程序文件夾。
在文檔的“文件處理”部分中:
文件也可以存儲在內部存儲器中,在此處可讀可寫。 每個已安裝的應用程序都有一個專用的內部存儲目錄。 該目錄再次只能由該應用程序訪問。 可以將這種存儲視為應用程序的專用工作區。
在圖表中,您可以看到本地:
本地文件相對於桌面上應用程序的根目錄或工作目錄存儲, 而相對於 Android上應用程序的內部(私有)存儲而言。 請注意,本地和內部在桌面上基本相同。
您應該使用Gdx.files.internal("data/high_score.txt");
相反,如果您想存儲在設備內部存儲器中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.