IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> unity加载txt -> 正文阅读

[游戏开发]unity加载txt

开发游戏项目过程中,你会发现各式各样的配置表需要去读取解析供使用如商品、道具、活动、任务等等。一般情况下,一个游戏项目中尽量统一去使用一种格式的文件当配置表,本人当前所参与的项目中,以TXT文件当配置表为主。另外的特殊情况下,也会运用XML。本篇文章主要介绍Unity游戏项目中关于TXT、XML文件的读取解析。另外,也会简单介绍游戏中常用一些特殊的“数据格式”来配置表中特殊字段的特殊值如JSON格式,Bit位,时间戳,数组等。

1.TXT

根据TXT文件存储的位置与系统提供的的API的不同,大概有以下4种方式来读取解析。

(1)将存放于项目工程某一文件夹下的TXT文件直接拖到某一脚本的Inspector属性面板中赋值引用,该TXT变量类型为TextAsset。

/// 
/// txt文件
/// 
public TextAsset testTxtFile;
 
/// 
/// 读取TXT
/// 
 
private void ReadTxt()
{
    string content = testTxtFile.text;//获取到文本内容
    string[] allLines = content.Split('n');//根据换行符“划分”出多个“行文本”
 
  for (int i = 0; i < allLines.Length; i++)//读取解析所有行
  {
    //解析出一行中的各列
    string[] LineContent = allLines[i].Split(new string[]{" "},StringSplitOptions.RemoveEmptyEntries);
 
   for (int j = 0; j < LineContent.Length; j++)
   {
    Debug.Log(LineContent[j]);
   }
 
  }
 
}

(2)将TXT文件放在Resources文件夹下,通过Resources.Load(“XXX”) AsTextAsset实现。

/// 
/// 读取TXT
/// 
private void ReadTxtFromResources()
{
   TextAsset textAsset = Resources.Load("test") as TextAsset;
   string content = textAsset.text;//获取到文本内容
   string[] allLines = content.Split('n');//根据换行符“划分”出多个“行文本”
 
   for (int i = 0; i < allLines.Length; i++)//读取解析所有行
   {
      //解析出一行中的各列
      string[] LineContent = allLines[i].Split(new string[]{" "},StringSplitOptions.RemoveEmptyEntries);
 
    for (int j = 0; j < LineContent.Length; j++)
    {
      Debug.Log(LineContent[j]);
    }
   }
}

(3)通过协程与WWW读取解析存储于本地又或者服务端的TXT文件。

测试代码如下:

/// 
 /// 读取TXT 
 /// 
IEnumerator ReadTxtFromWWW() 
 { 
    WWW www = newWWW("file://"+Application.dataPath+"/test.txt");
 
    yield return www;
 
    if (www.error != null) 
    { 
        Debug.Log("www加载出错!"); 
    }
 
    else if (www.isDone) 
    { 
        string content = www.text;//获取到文本内容
 
        string[] allLines = content.Split('n');//根据换行符“划分”出多个“行文本”
        
        for (int i = 0; i < allLines.Length; i++)//读取解析所有行 
        { 
            //解析出一行中的各列 
            string[] LineContent =allLines[i].Split(new string[] { " " },StringSplitOptions.RemoveEmptyEntries);
 
            for (int j = 0; j < LineContent.Length; j++) 
            { 
                Debug.Log(LineContent[j]); 
            } 
        } 
    }  
 } 
   //Use this for initialization
 
   voidStart () {
 
    StartCoroutine("ReadTxtFromWWW");//通过协程开启www加载读取解析TXT文档
 
   }
运行结果如上,这里略过。

(4)通过文件流的方式即StreamReader读取解析TXT文件

测试代码如下:

/// 
    /// 读取TXT 
    /// 
   private void ReadTxtFromStream() 
    { 
       StreamReader sr = new StreamReader("Assets/test.txt");
 
       string content = sr.ReadToEnd();//获取到文本内容
        
       string[] allLines = content.Split('n');//根据换行符“划分”出多个“行文本”
 
       for (int i = 0; i < allLines.Length; i++)//读取解析所有行 
      {
 
        //解析出一行中的各列
 
        string[] LineContent = allLines[i].Split(new string[] { " " },StringSplitOptions.RemoveEmptyEntries);
        for (int j = 0; j < LineContent.Length; j++)
        { 
           Debug.Log(LineContent[j]); 
        } 
       }
}

特别注意的是,StreamReader sr= new StreamReader(“Assets/test.txt”)的路径是“根目录”[默认]+“Asset/test.txt”。运行结果相同,略过截图。

https://gameinstitute.qq.com/community/detail/111879

其他操作:

1.读取文本并输出除去空行的每一行内容


//读取文本并输出出去空行的每一行内容
 private void ReadTxt()
    {
        string content = textAsset.text;      
        content = content.Replace(" ", "");//空格
        //剔除所有空行
        while (content.Contains("\r\n\r\n"))//存在连续回车(空行)
        {
            content = content.Replace("\r\n\r\n", "\r\n");//换成一个回车
        }
        string[] allLines = content.Split('\n');
                      
        for (int i = 0; i < allLines.Length; i++)
        {
            Debug.Log(allLines[i]);
        }
    }

文本
在这里插入图片描述

输出
在这里插入图片描述

  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2021-08-04 11:32:18  更:2021-08-04 11:33:46 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/6 8:03:53-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码