Welcome to my site

Androidのデータセーブ

PCのGodot上ではデータファイルの読み書きに問題はなかったのですが、androidにエクスポートすると読み込みはできても書き込みができないという事態に陥りました。
google先生に聞いてみると、https://ask.godotengine.org/47367/how-to-save-game-progress-on-android に丁寧に解決方法が載っていました。
ユーザーデータはuser://に保存する必要があります。Android では、これが唯一の書き込み可能なパスになります。
とのことでした。
読み込むファイルはどこでもいいけど、書き込み先はuser://でなければならいということのようです。
早速コードを書き足しました。


func _create_savedata():
    var f = File.new()
    var fil = File.new()

    f.open("res://data/save.txt", File.READ)
    var line = f.get_csv_line()

    fil.open("user://save.txt", File.WRITE)
    fil.store_csv_line(line)

    f.close()
    fil.close()

上記はデフォルトのセーブデータ "res://data/save.txt" を "user://save.txt" にコピーしてセーブデータを読み書きできるようにしたものです。

これで"user://save.txt"に書き込みが可能になります。
ちなみにこのデータはWindowsのPC上では
C\:Users\ユーザー\AppData\Roaming\Godot\app_userdata\プロジェクト名\save.txt
に作成されていました。

アンドロイドの実機上ではuser://でデータの読み書き込ができるわけですが、複数行のデータの書き込みがうまくいきません。
PC上では複数行のデータの読み書きができるのに、Androidの仕様なのか1行分しか書き込みができないようです。
仕方がないのでデータを作り直して、書き込みが必要なデータだけを1行にまとめてuser://にコピーして運用しています。
複数行でも書き込みできるよ、って方がおられたら、方法を教えてもらえると嬉しいです。