首页 > 解决方案 > Unity 无法从本地网络上的服务器检索文件,连接失败?

问题描述

我正在设置一个多人游戏,我需要从局域网上的服务器保存和加载 Unity3D 游戏内部的数据。这些数据将是帐户信息、分数、解锁等。几乎所有的文本数据。

它在我的网络中是本地的,主要是作为在它走向全球之前或如果它走向全球时对其进行测试的一种手段。

问题是我无法从 Unity 应用程序播放模式中访问我需要从本地服务器创建或下载的文件。我在编辑器内部这样做,不要相信这会有所作为。

我的设置是这样的: 一台运行 Unity 的笔记本电脑 - 同一台笔记本电脑临时充当服务器,其共享目录包含所有数据文本文件。

在我的代码中,我将 URL 链接到服务器(笔记本电脑)上的目录。

public static string path = "file://192.168.1.51/PINION/GAMEDATA/testing/userData.txt";

IP 是静态的,所以它不会改变。是的,我知道这只会在本地工作,这就是我现在正在尝试做的事情。

在 Visual Studio 中,如果我控制单击 URL,它会在记事本中打开用户数据文件,所以我知道链接是好的。但是当我使用下面的代码在 Unity 中运行它时,我收到“无法连接到目标主机”错误。

IEnumerator LoadingData(){string url = ServerMaster.path;

    UnityWebRequest request = UnityWebRequest.Get(UnityWebRequest.EscapeURL(url));

    yield return request.SendWebRequest();

    string[] pages = url.Split('/');
    int page = pages.Length - 1;

    if (request.isNetworkError)
    {
        Debug.Log("Network Error occurred. " + request.error); StopAllCoroutines();
    }
    else if (request.isHttpError)
    {
        Debug.Log("HTTP Error occurred. " + request.error); StopAllCoroutines();
    }
    else
    {
        print("Download successful. " + pages[page] + ":\nReceived: " + request.downloadHandler.text);
        print(request.downloadHandler.data.Length);
    }
}

然后我运行这段运行良好的代码,告诉我问题出在我的 LAN 代码上。

IEnumerator LoadingData()
{
    string testURL = "https://www.google.com/";

    using (UnityWebRequest www = UnityWebRequest.Get(testURL))
    {
        yield return www.SendWebRequest();

        if (www.isNetworkError || www.isHttpError)
        {
            Debug.Log(www.error);
        }
        else
        {
            Debug.Log("Get Request Completed!");
        }
    }
}

当我指向本地服务器的其他代码不断失败时,这很好用。我是 Unity 的这个网络部分的新手,所以我很难弄清楚这一点。

标签: c#unity3dwebrequest

解决方案


推荐阅读