Skip to main content

using System.Collections; using System.Collections.Generic; using System.Text.RegularExpressions; using UnityEngine; using System.Linq; using System.IO; using UnityEngine.UI;

public class GenerateLevel : MonoBehaviour {

using System.Collections; using System.Collections.Generic; using System.Text.RegularExpressions; using UnityEngine; using System.Linq; using System.IO; using UnityEngine.UI; public class GenerateLevel : MonoBehaviour { public Transform player;  public Transform ground; 

// public Transform floor_valid; public Transform floor_obstacle; //public Transform floor_checkpoint;

 // public Transform floor_valid; public Transform floor_obstacle; //public Transform floor_checkpoint;  //public const string sfloor_valid = "0";  public const string sfloor_obstacle = "0"; 

// public const string sfloor_checkpoint = "2"; public const string sstart = "S";

 // public const string sfloor_checkpoint = "2"; public const string sstart = "S"; public string textFile = "maze";   string textContents;  // Use this for initialization  void Start () {   Instantiate(ground);   TextAsset textAssets = (TextAsset)Resources.Load(textFile);   textContents = textAssets.text;   //string[] lines = System.IO.File.ReadAllLines("//maze.txt");   //string textFile;   //textFile = Resources.Load("assets/resources/maze").ToString();   string[][] jagged = ReadFile(textContents);   for (int y = 0; y < jagged.Length; y++)   {   for (int x = 0; x < jagged[0].Length; x++)   {   switch (jagged[y][x])   {   case sstart:   //Instantiate(floor_valid, new Vector3(x, 0, -y), Quaternion.identity);   Instantiate(player, new Vector3(0, 0.5f, 0), Quaternion.identity);   break;   //case sfloor_valid:   // Instantiate(floor_valid, new Vector3(x, 0, -y), Quaternion.identity);   //break;   case sfloor_obstacle:   Instantiate(floor_obstacle, new Vector3(x, 0, -y), Quaternion.identity);   break;   //case sfloor_checkpoint:   // Instantiate(floor_checkpoint, new Vector3(x, 0, -y), Quaternion.identity);   //break;   }   }   }  }    // Update is called once per frame  void Update () {    }  string[][] ReadFile(string file)  {   string text = System.IO.File.ReadAllText(file);   string[] lines = Regex.Split(text, "\r\n");   int rows = lines.Length;   string[][] levelBase = new string[rows][];   for (int i = 0; i < lines.Length; i++)   {   string[] stringsOfLine = Regex.Split(lines[i], " ");   levelBase[i] = stringsOfLine;   }   return levelBase; } } 

}

using System.Collections; using System.Collections.Generic; using System.Text.RegularExpressions; using UnityEngine; using System.Linq; using System.IO; using UnityEngine.UI;

public class GenerateLevel : MonoBehaviour {

public Transform player; public Transform ground; 

// public Transform floor_valid; public Transform floor_obstacle; //public Transform floor_checkpoint;

//public const string sfloor_valid = "0"; public const string sfloor_obstacle = "0"; 

// public const string sfloor_checkpoint = "2"; public const string sstart = "S";

public string textFile = "maze"; string textContents; // Use this for initialization void Start () { Instantiate(ground); TextAsset textAssets = (TextAsset)Resources.Load(textFile); textContents = textAssets.text; //string[] lines = System.IO.File.ReadAllLines("//maze.txt"); //string textFile; //textFile = Resources.Load("assets/resources/maze").ToString(); string[][] jagged = ReadFile(textContents); for (int y = 0; y < jagged.Length; y++) { for (int x = 0; x < jagged[0].Length; x++) { switch (jagged[y][x]) { case sstart: //Instantiate(floor_valid, new Vector3(x, 0, -y), Quaternion.identity); Instantiate(player, new Vector3(0, 0.5f, 0), Quaternion.identity); break; //case sfloor_valid: // Instantiate(floor_valid, new Vector3(x, 0, -y), Quaternion.identity); //break; case sfloor_obstacle: Instantiate(floor_obstacle, new Vector3(x, 0, -y), Quaternion.identity); break; //case sfloor_checkpoint: // Instantiate(floor_checkpoint, new Vector3(x, 0, -y), Quaternion.identity); //break; } } } } // Update is called once per frame void Update () { } string[][] ReadFile(string file) { string text = System.IO.File.ReadAllText(file); string[] lines = Regex.Split(text, "\r\n"); int rows = lines.Length; string[][] levelBase = new string[rows][]; for (int i = 0; i < lines.Length; i++) { string[] stringsOfLine = Regex.Split(lines[i], " "); levelBase[i] = stringsOfLine; } return levelBase; } 

}

using System.Collections; using System.Collections.Generic; using System.Text.RegularExpressions; using UnityEngine; using System.Linq; using System.IO; using UnityEngine.UI; public class GenerateLevel : MonoBehaviour { public Transform player;  public Transform ground;  // public Transform floor_valid; public Transform floor_obstacle; //public Transform floor_checkpoint;  //public const string sfloor_valid = "0";  public const string sfloor_obstacle = "0";  // public const string sfloor_checkpoint = "2"; public const string sstart = "S"; public string textFile = "maze";   string textContents;  // Use this for initialization  void Start () {   Instantiate(ground);   TextAsset textAssets = (TextAsset)Resources.Load(textFile);   textContents = textAssets.text;   //string[] lines = System.IO.File.ReadAllLines("//maze.txt");   //string textFile;   //textFile = Resources.Load("assets/resources/maze").ToString();   string[][] jagged = ReadFile(textContents);   for (int y = 0; y < jagged.Length; y++)   {   for (int x = 0; x < jagged[0].Length; x++)   {   switch (jagged[y][x])   {   case sstart:   //Instantiate(floor_valid, new Vector3(x, 0, -y), Quaternion.identity);   Instantiate(player, new Vector3(0, 0.5f, 0), Quaternion.identity);   break;   //case sfloor_valid:   // Instantiate(floor_valid, new Vector3(x, 0, -y), Quaternion.identity);   //break;   case sfloor_obstacle:   Instantiate(floor_obstacle, new Vector3(x, 0, -y), Quaternion.identity);   break;   //case sfloor_checkpoint:   // Instantiate(floor_checkpoint, new Vector3(x, 0, -y), Quaternion.identity);   //break;   }   }   }  }    // Update is called once per frame  void Update () {    }  string[][] ReadFile(string file)  {   string text = System.IO.File.ReadAllText(file);   string[] lines = Regex.Split(text, "\r\n");   int rows = lines.Length;   string[][] levelBase = new string[rows][];   for (int i = 0; i < lines.Length; i++)   {   string[] stringsOfLine = Regex.Split(lines[i], " ");   levelBase[i] = stringsOfLine;   }   return levelBase; } } 
Source Link

unity: read from text file to instantiate objects

I'm trying to use the following code to read a text file stored in the Resources folder or in a file on my computer, and instantiate objects in a Unity 3D scene accordingly. I'm having trouble getting it to work. I've tried attaching the script to either the main camera or an empty gameobject. Neither work so far...

I either end up with an error saying the path does not exist (when I put the text file into the project folder on my desktop), or a null exception, or that the path contains invalid characters.

Where am I going wrong?

I'm trying to use a jagged array because I'll need users to eventually be able to change the text file on-the-go to create a level.

The text file contains the following data: S 0 0 0 1 0 0 1 0 2 2 0 0 2 1

My script currently reads:

using System.Collections; using System.Collections.Generic; using System.Text.RegularExpressions; using UnityEngine; using System.Linq; using System.IO; using UnityEngine.UI;

public class GenerateLevel : MonoBehaviour {

public Transform player; public Transform ground; 

// public Transform floor_valid; public Transform floor_obstacle; //public Transform floor_checkpoint;

//public const string sfloor_valid = "0"; public const string sfloor_obstacle = "0"; 

// public const string sfloor_checkpoint = "2"; public const string sstart = "S";

public string textFile = "maze"; string textContents; // Use this for initialization void Start () { Instantiate(ground); TextAsset textAssets = (TextAsset)Resources.Load(textFile); textContents = textAssets.text; //string[] lines = System.IO.File.ReadAllLines("//maze.txt"); //string textFile; //textFile = Resources.Load("assets/resources/maze").ToString(); string[][] jagged = ReadFile(textContents); for (int y = 0; y < jagged.Length; y++) { for (int x = 0; x < jagged[0].Length; x++) { switch (jagged[y][x]) { case sstart: //Instantiate(floor_valid, new Vector3(x, 0, -y), Quaternion.identity); Instantiate(player, new Vector3(0, 0.5f, 0), Quaternion.identity); break; //case sfloor_valid: // Instantiate(floor_valid, new Vector3(x, 0, -y), Quaternion.identity); //break; case sfloor_obstacle: Instantiate(floor_obstacle, new Vector3(x, 0, -y), Quaternion.identity); break; //case sfloor_checkpoint: // Instantiate(floor_checkpoint, new Vector3(x, 0, -y), Quaternion.identity); //break; } } } } // Update is called once per frame void Update () { } string[][] ReadFile(string file) { string text = System.IO.File.ReadAllText(file); string[] lines = Regex.Split(text, "\r\n"); int rows = lines.Length; string[][] levelBase = new string[rows][]; for (int i = 0; i < lines.Length; i++) { string[] stringsOfLine = Regex.Split(lines[i], " "); levelBase[i] = stringsOfLine; } return levelBase; } 

}