我正在设置一个多人游戏,需要从局域网中的服务器上保存和加载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的网络部分的新手,所以我很难解决这个问题。