Unity - 读取文本文件(Android 和网络播放器)
Unity - Reading text files (Android & Web Player)
我正在尝试在 Unity 中读取文本文件。我有问题。
在桌面上,当我生成Stand Alone时,我需要手动复制文本文件。我不知道如何包含在我的应用程序中。
在 web 应用程序中(和 Android),我手动复制文件但我的游戏找不到它。
这是我的 "Read" 代码:
public static string Read(string filename) {
//string filePath = System.IO.Path.Combine(Application.streamingAssetsPath, filename);
string filePath = System.IO.Path.Combine(Application.dataPath, filename);
string result = "";
if (filePath.Contains("://")) {
// The next line is because if I use path.combine I
// get something like: "http://bla.bla/bla\filename.csv"
filePath = Application.dataPath +"/"+ System.Uri.EscapeUriString(filename);
//filePath = System.IO.Path.Combine(Application.streamingAssetsPath, filename);
WWW www = new WWW(filePath);
int timeout = 20*1000;
while(!www.isDone) {
System.Threading.Thread.Sleep(100);
timeout -= 100;
// NOTE: Always get a timeout exception ¬¬
if(timeout <= 0) {
throw new TimeoutException("The operation was timed-out ("+filePath+")");
}
}
//yield return www;
result = www.text;
} else {
#if !UNITY_WEBPLAYER
result = System.IO.File.ReadAllText(filePath);
#else
using(var read = System.IO.File.OpenRead(filePath)) {
using(var sr = new StreamReader(read)) {
result = sr.ReadToEnd();
}
}
#endif
}
return result;
}
我的问题是:
如何将我的 "text file" 添加为游戏资源?
我的代码有问题吗?
Unity 提供了一个名为 Resources 的特殊文件夹,您可以在其中保存文件并在运行时通过 Resources.Load
在您的项目中创建一个名为 Resources 的文件夹,并将您的文件放入其中(在本例中,您是文本文件)。
举个例子。它假定您将文件直接粘贴到 Resources 文件夹(不是 Resources 中的子文件夹)
public static string Read(string filename) {
//Load the text file using Reources.Load
TextAsset theTextFile = Resources.Load<TextAsset>(filename);
//There's a text file named filename, lets get it's contents and return it
if(theTextFile != null)
return theTextFile.text;
//There's no file, return an empty string.
return string.Empty;
}
我正在尝试在 Unity 中读取文本文件。我有问题。
在桌面上,当我生成Stand Alone时,我需要手动复制文本文件。我不知道如何包含在我的应用程序中。
在 web 应用程序中(和 Android),我手动复制文件但我的游戏找不到它。
这是我的 "Read" 代码:
public static string Read(string filename) {
//string filePath = System.IO.Path.Combine(Application.streamingAssetsPath, filename);
string filePath = System.IO.Path.Combine(Application.dataPath, filename);
string result = "";
if (filePath.Contains("://")) {
// The next line is because if I use path.combine I
// get something like: "http://bla.bla/bla\filename.csv"
filePath = Application.dataPath +"/"+ System.Uri.EscapeUriString(filename);
//filePath = System.IO.Path.Combine(Application.streamingAssetsPath, filename);
WWW www = new WWW(filePath);
int timeout = 20*1000;
while(!www.isDone) {
System.Threading.Thread.Sleep(100);
timeout -= 100;
// NOTE: Always get a timeout exception ¬¬
if(timeout <= 0) {
throw new TimeoutException("The operation was timed-out ("+filePath+")");
}
}
//yield return www;
result = www.text;
} else {
#if !UNITY_WEBPLAYER
result = System.IO.File.ReadAllText(filePath);
#else
using(var read = System.IO.File.OpenRead(filePath)) {
using(var sr = new StreamReader(read)) {
result = sr.ReadToEnd();
}
}
#endif
}
return result;
}
我的问题是:
如何将我的 "text file" 添加为游戏资源?
我的代码有问题吗?
Unity 提供了一个名为 Resources 的特殊文件夹,您可以在其中保存文件并在运行时通过 Resources.Load
在您的项目中创建一个名为 Resources 的文件夹,并将您的文件放入其中(在本例中,您是文本文件)。
举个例子。它假定您将文件直接粘贴到 Resources 文件夹(不是 Resources 中的子文件夹)
public static string Read(string filename) {
//Load the text file using Reources.Load
TextAsset theTextFile = Resources.Load<TextAsset>(filename);
//There's a text file named filename, lets get it's contents and return it
if(theTextFile != null)
return theTextFile.text;
//There's no file, return an empty string.
return string.Empty;
}