【问题标题】:Reading a Text File without disturbing Game Logic and Its execution在不干扰游戏逻辑及其执行的情况下读取文本文件
【发布时间】:2014-12-22 16:52:19
【问题描述】:

我正在尝试读取放置在服务器上的文本文件。它是一个文本文件。我能够阅读它,但问题是如果互联网速度很慢,它会卡住游戏一段时间。 可能我需要以异步方式运行此任务,但我无法做到这一点。我在网上找不到任何合理的帮助。

请告诉我如何在后台运行任务或在 Unity 中异步运行。 这是我想在后台执行的功能。

private void readFile()
{
    Debug.Log("Trying to Read");
    WebClient client = new WebClient();
    Stream stream = client.OpenRead("my text file url.txt");
    reader = new StreamReader(stream);
    result = reader.ReadToEnd();
    Debug.Log(result);
}

期待快速帮助。 谢谢

【问题讨论】:

    标签: c# asynchronous unity3d


    【解决方案1】:

    您可以使用 WWW 或 WWWForm 类来完成此操作... 只需给出文件下载路径,下载的内容就可以从实例化的 WWW 对象的 .text 属性中提取出来。

    public class ExampleClass : MonoBehaviour {
    public string url = "File download URL here";
    IEnumerator Start() {
        WWW www = new WWW(url);
        yield return www;
        //retreive the file content using www.text
        //write your code here
    }
    

    如果您需要更多信息,请参阅 Unity docthis article 使用 www 下载 xml 并显示当前数据

    【讨论】:

    • 这段代码的问题是,如果服务器上不存在该文件,它会读取未找到的页面页面,并且以这种方式,上述方法总是读取我不需要的内容。请提出在提到的情况下给出错误或异常的东西。如果这不是在主线程上运行而是异步运行,请告诉我。
    • 好吧,我不确定您的错误页面是什么样的。但是,有一个名为“error”的属性可能会帮助您解决该问题。话虽如此,我相信如果它是相同的“未找到页面”,您可以相应地编码,以便您可以检测到该特定错误...docs.unity3d.com/ScriptReference/WWW-error.html
    • 这是tenlogix.com/asdasdWWW 的样子,阅读了所有按钮和其他内容,不幸的是它没有报错。
    • 文本下载链接是什么样的?
    【解决方案2】:

    这是一个选项:

    var task = new Task(readFile);
    task.Start();
    

    【讨论】:

    • 我正在寻找 C# 中的代码并且 Task 在 .NET 3.5 中不可用 Unity 不支持 .NET > 3.5
    猜你喜欢
    • 2011-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-08
    • 2016-08-14
    • 2021-12-21
    • 1970-01-01
    • 2011-03-27
    相关资源
    最近更新 更多