PlayerPrefsではなく、自前ファイルに入出力

アプリのデータを保存したいときは、PlayerPrefsを使うのが便利です。
特に意識しなくても、各プラットフォームに対応する場所にデータを保存してくれます。

ただし保存できる型は int, float, stringのみ。ファイルサイズにも制限があるようで、

PlayerPrefsを使わずに、自前のファイルに保存したいときは以下のようにしています。

※プラットフォームは、AndroidとUnityEditorを想定

using UnityEngine;
using System.Collections;
using System;
using System.IO;

public class FileIO : MonoBehaviour {
// ファイル名
const string myFileName = "myApp";

void Start() {
WriteFile("my app data");
Debug.Log(ReadFile());
}

// ファイル書き込み
public void WriteFile(string str) {
try {
string path = pathForDocumentsFile();

System.IO.StreamWriter sw = new System.IO.StreamWriter(path, false, System.Text.Encoding.UTF8);
sw.Write (str);
sw.Close();
}
catch(Exception exception) {
}
}

// ファイル読込み
public string ReadFile() {
try {
string path = pathForDocumentsFile();

System.IO.StreamReader sr = new System.IO.StreamReader(path, System.Text.Encoding.UTF8);
string result = sr.ReadToEnd();
sr.Close();
return result;
}
catch(Exception exception) {
}
return null;
}

// ファイルの保存先パスを取得
public string pathForDocumentsFile()
{
// Androidの場合
if (Application.platform == RuntimePlatform.Android)
{
string path = Application.persistentDataPath;
path = path.Substring(0, path.LastIndexOf( '/' ) );
return Path.Combine (path, myFileName);
}
// それ以外(UnityEditorを想定)
else
{
string path = Application.dataPath;
path = path.Substring(0, path.LastIndexOf( '/' ) );
return Path.Combine (path, myFileName);
}
}
}

関連記事
[タグ] ファイル

コメント

非公開コメント

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。