この記事は、以下に該当するお客様向けのご案内です。
- 特定のディレクトリや他のアセットの中にあるテキストファイルからデータを読み書きしたいと考えている。
原因:
-
解決策:
ディレクトリからファイルを読み込みたくない場合は、図1のように TextAsset 型のプロパティを使ってエディタから直接アサインすることができます。また、TextAsset.text プロパティを使用してファイルのテキストを取得することもできます。
図1: TextAsset に割り当てられたテキストファイル
特定のディレクトリにあるテキストファイルからデータを読み書きするもう一つの方法は、System.IO 名前空間の StreamWriter クラスと StreamReader クラスを使ってバイトストリームから文字列にアクセスし、テキストファイルを TextAsset としてロードする方法です。
次のエディタスクリプトの例では、ファイルが存在すればファイルのデータを出力、または指定したパスのファイルにテキストを書き込んでいます。
using UnityEngine;
using UnityEditor;
using System.IO;
public class HandleTextFile
{
[MenuItem("Tools/Write file")]
static void WriteString()
{
string path = "Assets/Resources/test.txt";
//Write some text to the test.txt file
StreamWriter writer = new StreamWriter(path, true);
writer.WriteLine("Test");
writer.Close();
//Re-import the file to update the reference in the editor
AssetDatabase.ImportAsset(path);
TextAsset asset = Resources.Load("test");
//Print the text from the file
Debug.Log(asset.text);
}
[MenuItem("Tools/Read file")]
static void ReadString()
{
string path = "Assets/Resources/test.txt";
//Read the text from directly from the test.txt file
StreamReader reader = new StreamReader(path);
Debug.Log(reader.ReadToEnd());
reader.Close();
}
}
スクリプトを実行するには、 Tools > Read/Write File をクリックしてください。
実行時にファイルを読み書きする場合は、いくつか修正を加える必要があります。以下に、すべてのプラットフォームで動作する例をします。
using UnityEngine;
using System.IO;
public class RuntimeText: MonoBehaviour
{
public static void WriteString()
{
string path = Application.persistentDataPath + "/test.txt";
//Write some text to the test.txt file
StreamWriter writer = new StreamWriter(path, true);
writer.WriteLine("Test");
writer.Close();
StreamReader reader = new StreamReader(path);
//Print the text from the file
Debug.Log(reader.ReadToEnd());
reader.Close();
}
public static void ReadString()
{
string path = Application.persistentDataPath + "/test.txt";
//Read the text from directly from the test.txt file
StreamReader reader = new StreamReader(path);
Debug.Log(reader.ReadToEnd());
reader.Close();
}
}
コメント
0件のコメント
記事コメントは受け付けていません。