Я настраиваю многопользовательскую игру, в которой мне нужно сохранять и загружать данные внутри игры 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);
}
}
Затем я запускаю этот бит кода, который работает нормально, который говорит мне, что проблема должнабыть с моим кодом локальной сети.
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, поэтому мне сложно понять это.