- Home /
Load Data From External Text File
The goal: (1) While developing my game on my PC, load story info from a text file, located in /Assets/Resources or anywhere else it needs to be. (2) While demonstrating the game in Web player format, load the same info from a text file, located at (eg.) www.example.com/code/myproject/test.txt, the same directory as the Build.unity3d file. (Ideally in a subdirectory.)
What I've got so far:
using UnityEngine;
using UnityEngine.UI;
using System.Collections;
using System.Collections.Generic;
using System.IO;
public class TextFileLoader : MonoBehaviour
{
public WWW www;
// For showing/storing the result
public string result;
public Text output_text;
IEnumerator Start()
{
Debug.Log("Data path: " + Application.dataPath);
www = new WWW( Application.dataPath + "/demo.txt" );
Debug.Log(www.url);
yield return www;
result = www.text;
Debug.Log("Result: " + result);
output_text.text = result;
}
}
I run this locally on my computer, with the text file in both the main Assets directory and in Assets/Resources. Result: debug statements say "C:/Users/Kris/Documents/Unity/WizardGame/Assets", and "C:/Users/Kris/Documents/Unity/WizardGame/Assets/demo.txt". In other words, the variable "www.text" is being set to the full path of my file, not its contents. Which is odd because if I pause Unity, variable "result" is blank even though I explicitly set it and the debug statement says it's not blank! If I build my project and run, it actually works now, but it doesn't work while I'm just hitting the Play button within the editor. That's bad because it greatly lengthens the build-and-test cycle.
How can I make this code work in the editor, without having to build each time I want to test? My fallback plan will be to use Resources.Load and then change the code at the last minute before uploading my project, but that's bad practice.
(Unity 4.6.)
Answer by kilian277 · Jul 24, 2016 at 09:38 PM
You could try to use the PersistentDatapath in unity which also works in the editor and is much handier to use because it's a seperate folder in the %AppData% from Windows.
Info on the persistentDatapath
Then you could also use a StreamWriter and Reader from the .NET framework.
Or use File.ReadAllText();
, depending on your usage whether binary , ascii text file , line per line.
And detect wheter yo uare using a Editor build or real standalone (webplayer) build to adjust your code.
Your answer
![](https://koobas.hobune.stream/wayback/20220612085436im_/https://answers.unity.com/themes/thub/images/avi.jpg)
Follow this Question
Related Questions
Is WWW class usable in Android platform? 1 Answer
Unity download audio 1 Answer
How to check if loading from another level or game start? 1 Answer
Why can't I build Web Player in Unity while I have no problems with building standalone versions? 2 Answers
Help to solve freezes when web client start playing downloaded audioclip 0 Answers