- Home /
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("\n"[0]);
for (line in lines) {
word = line;
// guiText.text += line + "\n";
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 += "\n";
}
FTR here's the trivial way to use a text file in Unity http://answers.unity3d.com/answers/40481/view.html
Answer by Bampf · Apr 07, 2011 at 05:05 PM
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.
Ah! I understand now. Thanks Bampf.
For some reason accessing this site from this computer doesn't recognise me as the same drum who asked the question, so I can't mark it as correct. I will give both you guys a vote up and mark correct tomorrow when I'm back in the office.
Thanks again.
Answer by Eric5h5 · Apr 07, 2011 at 09:14 AM
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.
I see. I'll certainly look at TextAsset, but I think I'm confused because I have a lot of audio and some imagery in the project which is in the Resources folder and is called in by script in the same way and both work fine on web-player or stand-alone builds. I was assu$$anonymous$$g text would be much the same.
Your answer
Follow this Question
Related Questions
Simple text GUI 2 Answers
Restrict characters in GUI.TextField 4 Answers
How to display EULA from Doc in Unity? 0 Answers
How to find the origin point of a text line? 0 Answers
Scrolling Text 1 Answer