You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Assets文件夹读取多段落文本并存入String数组?

嘿,这个需求在处理文本内容时挺常见的,尤其是Unity项目里(毕竟你提到了Assets文件夹)。我来给你详细讲两种场景下的实现方式:

Unity项目场景

步骤1:准备你的文本文件

确保你的文本文件里,每个段落是用连续的空行分隔的(比如第一段结束后敲两次回车再写第二段),这样我们才能准确分割段落。把文件放到Assets目录下,比如直接放在根目录或者Resources文件夹里。

步骤2:编写加载代码

我们可以用Unity的TextAsset来快速读取Assets里的文本文件,然后按空行分割成段落数组:

using UnityEngine;

public class ParagraphReader : MonoBehaviour
{
    // 在Inspector面板里直接拖入你的文本文件
    public TextAsset targetTextFile;

    void Start()
    {
        if (targetTextFile == null)
        {
            Debug.LogError("别忘了给脚本指定要加载的文本文件哦!");
            return;
        }

        // 处理不同系统的换行符(Windows是\r\n,Linux/macOS是\n)
        string[] paragraphSeparators = new[] { "\n\n", "\r\n\r\n" };
        // 分割段落,同时移除空字符串(避免文件首尾的空行干扰)
        string[] paragraphs = targetTextFile.text.Split(paragraphSeparators, System.StringSplitOptions.RemoveEmptyEntries);

        // 验证结果(可以根据需求替换成自己的逻辑)
        for (int i = 0; i < paragraphs.Length; i++)
        {
            Debug.Log($"第{i+1}个段落:\n{paragraphs[i]}");
        }
    }
}

额外提示

如果你的文本文件特别大,建议把它放到StreamingAssets文件夹,用UnityWebRequest异步加载,避免阻塞主线程:

using UnityEngine;
using UnityEngine.Networking;
using System.Collections;

public class LargeParagraphReader : MonoBehaviour
{
    public string fileName = "yourLargeText.txt";

    IEnumerator Start()
    {
        string filePath = Path.Combine(Application.streamingAssetsPath, fileName);
        using (UnityWebRequest request = UnityWebRequest.Get(filePath))
        {
            yield return request.SendWebRequest();

            if (request.result != UnityWebRequest.Result.Success)
            {
                Debug.LogError(request.error);
                yield break;
            }

            string[] paragraphs = request.downloadHandler.text.Split(new[] { "\n\n", "\r\n\r\n" }, System.StringSplitOptions.RemoveEmptyEntries);
            // 后续处理段落数组
        }
    }
}
普通.NET项目场景

如果是普通C#项目,Assets只是一个普通目录,直接用File类读取即可:

using System;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        string filePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Assets", "yourTextFile.txt");
        
        if (!File.Exists(filePath))
        {
            Console.WriteLine("找不到指定的文本文件!");
            return;
        }

        string fileContent = File.ReadAllText(filePath);
        string[] paragraphs = fileContent.Split(new[] { "\n\n", "\r\n\r\n" }, System.StringSplitOptions.RemoveEmptyEntries);

        foreach (var para in paragraphs)
        {
            Console.WriteLine($"段落内容:\n{para}\n---");
        }
    }
}

关键注意点

  • 一定要确认段落的分隔符:如果你的文本不是用空行分隔,而是用其他标记(比如---),只要把Split方法里的分隔符换成对应的字符串即可。
  • 处理换行符兼容性:不同操作系统的换行符不一样,所以同时加入\n\n和\r\n\r\n作为分隔符,保证跨平台正常工作。

内容的提问来源于stack exchange,提问作者user9308577

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 03:33:21