在unity3d中读取.txt文件指定行列数据?

如何在unity3d中读取.txt文件指定行列数据?这个问题是我在写一个类似节奏大师类的音乐游戏中遇到的,具体情况是这样的,因为每首音乐的节奏和高低音都是不一样的,我没有想到用程序识别音乐中节奏和高低音的方法,就想出了一个读取本地txt文件来识别的方法,同时读取文件中的音乐名等等详细信息。.

给大家看一下我读取的txt文件书写格式:

歌曲信息
序号 1
歌名 小兔子乖乖
时长 118
速度 110
音乐节点 7 10 12 13 14 15 16 17…

说明:这个节奏文件竖排以“回车”来分割,横排以“tab”分割,程序里面就是“\t”,文件命名为:1.txt。

说完文件,我们来看看具体的文件读取格式代码,以下就是我用来读取txt文件的代码,基本是源代码复制过来的。

/// <summary>
/// ///读取文本信息
/// </summary>
public void Music_txt(int FileName)
{
//读取txt文件filename的内容
var fileAddress = System.IO.Path.Combine(Application.streamingAssetsPath, FileName + “.txt”);
FileInfo fInfo0 = new FileInfo(fileAddress);
if (fInfo0.Exists)
{
StreamReader r = new StreamReader(fileAddress);
//StreamReader默认的是UTF8的不需要转格式了,因为有些中文字符的需要有些是要转的,下面是转成String代码
//byte[] data = new byte[1024];
// data = Encoding.UTF8.GetBytes(r.ReadToEnd());
// s = Encoding.UTF8.GetString(data, 0, data.Length);
s = r.ReadToEnd();
//te.text = s;
//Debug.Log(s);
}
lineArray = s.Split(“\n”[0]);
line=s.Split(“\t”[0]);//按\t分割数据
Array = new string[lineArray.Length][];
for (int i = 0; i < lineArray.Length; i++)
{
Array[i] = lineArray[i].Split(“\t”[0]);
}
Debug.Log(“filename:”+FileName);
Debug.Log(“音乐节点最大值:”+Array[5][line.Length-5]);//获取第6行最后一位的数据line.Length-5为音乐节点的最大值
Debug.Log(“减五为音乐节点总数”+ line.Length.ToString());
//歌曲信息
SongName.text = Array[2][1];//读取歌曲名字
SongTime.text = Array[3][1];//读取歌曲时长
SongSpeed.text = Array[4][1];//读取歌曲速度
}

说明:

System.IO.Path.Combine();这个方法里面包含两个参数,第一个参数是要读取文件的目录地址,第二个是要读取文件的文件名,它的作用是获取了要读取文件的具体位置。

StreamReader(fileAddress);这个方法称为流读取器,它的功能是读取一个文件中的所有信息,但是前提是要传给他一个文件的具体地址的值。

有了以上两个方法我们不难获得文件中的详细信息,接下来我们要做的就是如何把获取的信息进行进一步的加工和分割,这个时候我们用到一下方法排列数据:

s.Split(“\n”[0]);这个方法的功能简单说就是按一定的格式分裂数据,其中“s”是要分裂的数据变量,传入的值是告诉“Split”按照怎样的格式分裂数据,“Split(“\n”[0])”意思就是按照回车进行分裂数据。“Split(“\t”[0])”意思就是按照tab进行分裂数据。

分裂好了数据之后我们用一个数组“Array = new string[lineArray.Length][];”来规定我们的数据信息,然后用for循环把数据信息按照行的方式进行规划,就是以下这样的代码:

Array = new string[lineArray.Length][];
for (int i = 0; i < lineArray.Length; i++)
{
Array[i] = lineArray[i].Split(“\t”[0]);
}

于是,我们便把我们想要的数据进行了统一的规划和处理,数组“Array”的第一个数据是行,第二个数据是列,Array[2][1];便是第三行第二列的数据。

学程序的小伙伴们,是不是很简单啊?好了今天的如何在unity3d中读取.txt文件中指定行列数据?就讲到这里,大家有问题或者王时代有错误的地方欢迎大家在评论区指出,或者关注王时代微信微博我们共同交流共同进步!

unity3d读取txt文件

赞(0) 打赏
转载必须注明出处及文章链接:网赚世界 » 在unity3d中读取.txt文件指定行列数据?
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏