Unity读取本地文本txt的研究

31 篇文章 1 订阅
这篇博客介绍了如何在Unity游戏引擎中使用C#代码从StreamingAssets文件夹读取txt文件。通过示例代码展示了利用System.IO命名空间的Path和FileINFO类检查文件是否存在并读取其内容的过程,适用于游戏开发中加载配置文件或文本资源的场景。
摘要由CSDN通过智能技术生成

在streamingAssets文件夹或其他文件夹下新建txt文件,

代码部分


using System.Collections;
using System.Collections.Generic;
using System.IO; //文件处理命名空间
using UnityEngine; 
public class Test : MonoBehaviour
{
public string s;
    void Start()
    {
     string fileAddress = System.IO.Path.Combine(Application.streamingAssetsPath, "test.txt");
        FileInfo fInfo0 = new FileInfo(fileAddress);//这里写文件的绝对路径+文件名+后缀(下面这种方式也可),,用fInfo0来接收这个文件

        //FileInfo fInfo0 = new FileInfo("E:/w/Downloads/UnityProject/Json/Assets/StreamingAssets/test.txt"); 
        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(); 
            Debug.Log(s);//获取到字符串
        }



    }
     

运行测试 

Unity 5.3版本的WebPlayer模式下,由于浏览器的安全限制,JavaScript默认是无法直接访问用户的本地文件系统的。然而,你可以通过一些技术手段间接地实现,例如HTML5 File API或者创建一个服务器端程序(如PHP、Node.js等),然后让前端发送请求去获取文件内容。 以下是一种常见的做法: 1. **HTML5 File API**: 使用`FileReader`对象,用户可以通过点击按钮选择本地文件,然后调用其`readAsText()`方法读取文本内容。将这段JavaScript代码封装在一个C#脚本中,并通过Unity提供给前端调用: ```csharp public class LocalFileReader : MonoBehaviour { public void ReadLocalFile(string filePath) { // 创建一个HTML元素,用于触发文件选择 var inputElement = new InputField(); inputElement.text = filePath; // 当用户选择文件后 inputElement.onValueChanged.AddListener(delegate { OnFileSelected(inputElement.text); }); // 提示用户选择文件 UnityEngine.UI.Window window = UnityEngine.UI.WindowManager.GetWindow(UnityEngine.UI.WindowType.Popup); if (window == null) { window = UnityEngine.UI.WindowManager.AddWindow(UnityEngine.UI.WindowType.Popup); window.contentSizeF = Vector2.zero; } window.SetTitle("Select Text File"); window.position = Camera.main.ViewportToWorldPoint(new Vector3(0.5f, 0.5f, 0)); window.ShowPopup(); // 文件选中处理函数 void OnFileSelected(string selectedFilePath) { // 使用FileReader读取文本 StartCoroutine(LoadFile(selectedFilePath)); } private IEnumerator LoadFile(string filePath) { using (var fileStream = File.OpenRead(filePath)) { var reader = new StreamReader(fileStream); string text = reader.ReadToEnd(); Debug.Log(text); // 这里只是打印出来,实际应用可以将文本传递给Unity内的C#对象 } } } ``` 注意,这种方式只适用于用户有交互的情况,而且在生产环境中可能会遇到跨域问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值