Unity - 阅读文本文件(Android和Web Player)

时间:2015-01-19 18:17:45

标签: android unity3d filereader unity-web-player

我试图在Unity中读取文本文件。我有问题。

  1. 在桌面版中,当我生成Stand Alone时,我需要手动复制文本文件。我不知道如何在我的申请中加入。

  2. 在网络应用程序(和Android)中,我手动复制文件但我的游戏无法找到它。

  3. 这是我的"阅读"代码:

    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;
        }
    

    我的问题是:

    1. 如何包含我的&#34;文本文件&#34;作为游戏资源?

    2. 我的代码有问题吗?

1 个答案:

答案 0 :(得分:2)

Unity提供了一个名为资源的特殊文件夹,您可以通过 Resources.Load

保存文件并在运行时加载它们。

Resources.Load on Unity docs

在项目中创建一个名为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;
}