一.静态内部读取txt文本
这是最简单的方式,建立TextAsset,直接把文本文件拖上,就可以用了,具体步骤如下
(1)首先把要读取的txt文件导入Assets下(如图中的Data.txt)
(2)建立C#脚本,代码如下
using UnityEngine;
using System.Collections;
public class LoadTxt : MonoBehaviour {
public TextAsset TxtFile; //建立TextAsset
private string Mytxt; //用来存放文本内容
// Use this for initialization
void Start () {
Mytxt = TxtFile.text;
print(Mytxt); //输出验证
}
// Update is called once per frame
void Update () {
}
}
注意:C#脚本中的类名必须与文件名保持一致,改文件名的同时也要进入脚本相应改掉类名
(3)把脚本拖给一个游戏对象,并把文本文件托至Inspector面板中该脚本的Txt File一栏
(4)运行(成功输出文档内容“123456789”)
注意:txt文本的编码格式要改为UTF-8格式,否则读不出来,虽然不会报错
二.动态内部读取txt文本
(1)在 Assets下新建一个 Resources文件夹,把 要读取的txt文件导入 Resources 下(如图中的Data.txt)
(2)建立C#脚本,代码如下
using UnityEngine;
using System.Collections;
public class LoadTxt : MonoBehaviour {
public TextAsset TxtFile; //建立TextAsset
private string Mytxt; //用来存放文本内容
// Use this for initialization
void Start () {
Mytxt = ((TextAsset)Resources.Load("Data")).text;
print(Mytxt); //输出验证
}
// Update is called once per frame
void Update () {
}
}
(3)把脚本拖给一个游戏对象, 运行(成功输出文档内容“987654321”)
三.外部读取txt文本
实际运用中上述的两种方法使用的并不多,大多都是用的外部读取,具体步骤如下:
建立C#脚本,代码如下
using UnityEngine;
using System.Collections;
using System.IO; //需要导入System.IO,主要使用它的File类
public class LoadTxt : MonoBehaviour {
private string Mytxt; //用来存放文本内容
// Use this for initialization
void Start () {
Mytxt = ReadFile("C:\\Users\\Eniac\\Desktop\\Data.txt",1); //txt文件的绝对路径
print(Mytxt); //输出验证
}
// Update is called once per frame
void Update () {
}
//按路径读取txt文本的内容,第一个参数是路径名,第二个参数是第几行,返回值是sring[]数组
string ReadFile(string PathName, int linenumber)
{
string[] strs = File.ReadAllLines(PathName);// 读取txt文本的内容,返回sring数组的元素是每行内容
if (linenumber == 0)
{
return "";
}
else
{
return strs[linenumber - 1]; //返回第 linenumber行内容
}
}
}
(成功输出文档内容“abcdefghi”)
注:关于路径又有绝对路径和相对路径,绝对路径就不解释了,相对路径要注意下,如果用Application.dataPath除了要注意移动平台之外,特别要注意Application.dataPath在编辑环境下和在生成exe之后是不一样的,编辑状态下,返回的是Asset位置,生成后Assets不再存在,返回位置是_Data文件夹