Unity解析和读取文本—— txt 文件

方法一:在Unity内部文件中加载(使用相对路径)

1、首先在Unity的 Assets 目录下新建一个 Resources 文件夹,将需要读取的 txt 文件保存到 Resources 文件夹中。(注意:txt 文件必须保存成 UTF—8 的格式 ;内容间的逗号为英文格式)。

    

2、创建脚本来对 txt 文本的内容进行读取与解析:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class LoadText : MonoBehaviour 
{
	void Start () {
        // 将test01 中的内容加载进txt文本中
        TextAsset txt = Resources.Load("test01") as TextAsset;
        // 输出该文本的内容
        Debug.Log(txt);

        // 以换行符作为分割点,将该文本分割成若干行字符串,并以数组的形式来保存每行字符串的内容
        string[] str = txt.text.Split('\n');
        // 将该文本中的字符串输出
        Debug.Log("str[0]= "+str[0]);
        Debug.Log("str[1]= "+str[1]);

        // 将每行字符串的内容以逗号作为分割点,并将每个逗号分隔的字符串内容遍历输出
        foreach (string strs in str)
        {
            string[] ss = strs.Split(',');
            Debug.Log(ss[0]);
            Debug.Log(ss[1]);
            Debug.Log(ss[2]);
            Debug.Log(ss[3]);
        }
    }

}

3、将该脚本挂载到一个GameObject上。(在此处创建一个空物体来挂载各种公用脚本),运行结果如下

 

方法二:外部读取(使用绝对路径来加载)

1、需要读取的 txt 文件可以放在任何位置,但仍需要保存成 UTF-8 的编码格式

 

2、创建脚本来对该文件执行读取操作:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.IO; //必须要引入该命名空间,因为需要使用它的File类

public class LoadText : MonoBehaviour 
{
    private string[] myText01;
    private string myText02;
    void Start ()
    {
        ReadText01();
        ReadText02();
    }

    private void ReadText01()  // 01方法
    {
        //以行为单位,读取文件的所有行,将数据保存到字符串数组(myText)中,每行内容为字符串数组的一个元素
        myText01 = File.ReadAllLines("D:\\KR\\test02.txt");    // txt文件的绝对路径
        Debug.Log(myText01[0]);  //输出第一行内容
        Debug.Log(myText01[1]);  //输出第二行内容
    }
    
    private void ReadText02()  // 02方法
    {
        // 读取文件的所有内容
        myText02 = File.ReadAllText("D:\\KR\\test02.txt"); 
        Debug.Log(myText02);
    }

}

3、将该脚本挂载在一个 GameObject 上,运行结果如下所示

                01方法:                                                                              02方法:

                    

 


参考资料:

[1] unity中四种读取txt文件的方法和一种写入txt方法

[2]  Unity3d 文本文件的读取和解析

 

### 如何在 Unity读取 TXT 文件 为了实现这一功能,可以采用多种方式来加载并解析文件的内容。下面展示了一种常见的做法——通过 `System.IO` 命名空间下的类来进行操作。 #### 使用 StreamReader 类读取整个文件到字符串 当目标是从指定位置获取全部内容时,可利用 `StreamReader.ReadToEnd()` 方法一次性取得所有本: ```csharp using UnityEngine; using System.IO; public class ReadTextFile : MonoBehaviour { void Start() { string filePath = Path.Combine(Application.streamingAssetsPath, "example.txt"); try { // 如果是在 Android 平台上运行,则需要先将 Streaming Assets 复制到临时目录下再读取 #if UNITY_ANDROID && !UNITY_EDITOR WWW www = new WWW(filePath); while (!www.isDone) { } filePath = Path.Combine(Application.temporaryCachePath, "example.txt"); File.WriteAllBytes(filePath, www.bytes); #endif using (StreamReader reader = new StreamReader(filePath)) { string content = reader.ReadToEnd(); Debug.Log(content); // 输出日志查看结果 } } catch (Exception e) { Debug.LogError($"Failed to read file: {e.Message}"); } } } ``` 此段代码展示了如何处理跨平台兼容性问题[^2],特别是针对移动设备上的特殊路径管理进行了适当调整。 对于更简单的场景,在编辑器环境或者不涉及打包资源的情况下可以直接访问项目中的任意相对路径;而在构建后的应用里通常会依赖于特定的只读区域如 `StreamingAssets` 或者用户自定义的数据保存地点。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值