c# - 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 的这个网络部分的新手,所以我很难弄清楚这一点。
解决方案
推荐阅读
- ios - 我的问题是颤振无法为模拟器构建应用程序
- redis - 如何在同一个 Redis 命令中启动、递增和设置过期时间?
- mysql - MySQL:为什么我不能将多个值插入到我的表中?
- python - 在不使用 Jupyter Notebooks 的情况下在 Plotly 中刷新数据
- android - 如何修改安卓程序依赖的第三方包名?
- html - SVG 颜色仅在 Firefox 中正确显示
- gstreamer - python GstRtspServer-如何获取已添加到挂载点的工厂列表?
- dynamic - 如何在目标列 Power BI 中动态计算 Gap & Over & YTD
- flutter - Flutter 图表系列图例 id 太长
- r - 您如何使条形宽度均匀,并将建议的修复应用于我的数据?