Problem Reading A Text File

Hi,

I have a script which reads the contents of a text file and then outputs to the GUI. It works fine in the editor, in scene and game view, but when I build and run (either the web player or a Mac standalone) I'm not seeing the text. Am I overlooking anything?

This is the script. The file is just a plain text file and sits in the Resources folder in my Assets folder.

import System.IO;
var fileName = "ratfacts.txt";
var letterPause = 0.2;
var linePause = 10;
var sound : AudioClip;
private var word;

function Start () {
    var sr = new StreamReader(Application.dataPath + "/Resources/" + fileName);
    var fileContents = sr.ReadToEnd();
    sr.Close();
    var lines = fileContents.Split("

"[0]);
for (line in lines) {
word = line;
// guiText.text += line + "
";

        TypeText();
        if(word.length > 1){
            yield WaitForSeconds(linePause);
        }else{
            yield WaitForSeconds(2);
        }
    }
}

function TypeText () {
    for (var letter in word.ToCharArray()) {
        guiText.text += letter;
        if (sound)
            audio.PlayOneShot (sound);
        yield WaitForSeconds (letterPause);
    }
    guiText.text += "

";
}

There is no physical Resources folder in a build. Also, a webplayer can't load external files from disk anyway (only through the web). Sounds like you should just use a TextAsset rather than loading stuff, since you don't seem to need an actual external file.

The StreamReader constructor that takes a string is expecting a filename. In a webplayer, Application.dataPath will return a URL instead of a filename.

To read text from a URL in Unity, use the WWW class.

Your code can detect if its running in the webplayer or not by checking Application.isWebPlayer. That way you can have it pick which way it needs to read the file.

Edit: Resources.Load loads assets like textures and audio, regardless of whether you are in the webplayer or not. I'm guessing you used that to load textures and audio. It should also be possible to read in your text file that way. The object it returns will be of type TextAsset.