Столкнулся с проблемой, не могу сам решить, прошу помощи у сообщества.
Приложение делаю под WebGL
1) Пользователь регистрируется на сайте, в дальнейшем я его проверяю в приложении WebGL
2) В методе Start я делаю первоначальное подключение
Синтаксис:
Используется csharp
void Start()
{
PhotonNetwork.IsMessageQueueRunning = true;
PhotonNetwork.SendRate = 20;
PhotonNetwork.SerializationRate = 10;
PhotonNetwork.AutomaticallySyncScene = true;
PhotonNetwork.GameVersion = "1";
PhotonNetwork.ConnectUsingSettings();
}
{
PhotonNetwork.IsMessageQueueRunning = true;
PhotonNetwork.SendRate = 20;
PhotonNetwork.SerializationRate = 10;
PhotonNetwork.AutomaticallySyncScene = true;
PhotonNetwork.GameVersion = "1";
PhotonNetwork.ConnectUsingSettings();
}
3) Далее в методе Name я показываю пользователю поля для ввода Email и Пароль
Синтаксис:
Используется csharp
void Name()
{
GUILayout.BeginArea(new Rect((Screen.width / 2) - 175, (Screen.height / 2) - 84, 350, 168), "", "Window");
GUILayout.BeginVertical();
GUILayout.Space(8);
GUILayout.BeginHorizontal();
GUILayout.Space(7);
GUILayout.Label("<b><size=14>Email:</size></b>", GUILayout.Width(95), GUILayout.Height(30));
email = GUILayout.TextField(email, 20, GUILayout.Width(216), GUILayout.Height(30));
GUILayout.EndHorizontal();
GUILayout.Space(10);
GUILayout.BeginHorizontal();
GUILayout.Space(7);
GUILayout.Label("<b><size=14>Пароль:</size></b>", GUILayout.Width(95), GUILayout.Height(30));
pass = GUILayout.TextField(pass, 20, GUILayout.Width(216), GUILayout.Height(30));
GUILayout.EndHorizontal();
GUILayout.Space(15);
GUILayout.BeginHorizontal();
GUILayout.Space(8);
if (GUILayout.Button("ВЫЙТИ", conGUI.customStyles[0], GUILayout.Width(150), GUILayout.Height(39)))
{
#if UNITY_EDITOR
UnityEditor.EditorApplication.isPlaying = false;
#else
Application.Quit();
#endif
}
GUILayout.Space(10);
if (GUILayout.Button("ПРОДОЛЖИТЬ", conGUI.customStyles[0], GUILayout.Width(150), GUILayout.Height(39)))
{
if (email != "" && pass != "")
{
StartCoroutine(Check());
}
}
GUILayout.EndHorizontal();
GUILayout.EndVertical();
GUILayout.EndArea();
}
{
GUILayout.BeginArea(new Rect((Screen.width / 2) - 175, (Screen.height / 2) - 84, 350, 168), "", "Window");
GUILayout.BeginVertical();
GUILayout.Space(8);
GUILayout.BeginHorizontal();
GUILayout.Space(7);
GUILayout.Label("<b><size=14>Email:</size></b>", GUILayout.Width(95), GUILayout.Height(30));
email = GUILayout.TextField(email, 20, GUILayout.Width(216), GUILayout.Height(30));
GUILayout.EndHorizontal();
GUILayout.Space(10);
GUILayout.BeginHorizontal();
GUILayout.Space(7);
GUILayout.Label("<b><size=14>Пароль:</size></b>", GUILayout.Width(95), GUILayout.Height(30));
pass = GUILayout.TextField(pass, 20, GUILayout.Width(216), GUILayout.Height(30));
GUILayout.EndHorizontal();
GUILayout.Space(15);
GUILayout.BeginHorizontal();
GUILayout.Space(8);
if (GUILayout.Button("ВЫЙТИ", conGUI.customStyles[0], GUILayout.Width(150), GUILayout.Height(39)))
{
#if UNITY_EDITOR
UnityEditor.EditorApplication.isPlaying = false;
#else
Application.Quit();
#endif
}
GUILayout.Space(10);
if (GUILayout.Button("ПРОДОЛЖИТЬ", conGUI.customStyles[0], GUILayout.Width(150), GUILayout.Height(39)))
{
if (email != "" && pass != "")
{
StartCoroutine(Check());
}
}
GUILayout.EndHorizontal();
GUILayout.EndVertical();
GUILayout.EndArea();
}
4) Далее в IEnumerator я делаю запрос на сервер, проверяю данные
Синтаксис:
Используется csharp
IEnumerator Check()
{
WWWForm form = new WWWForm();
form.AddField("email",email);
form.AddField("pass",pass);
UnityWebRequest uwr = UnityWebRequest.Post("http://myserver.ru/check.php", form);
yield return uwr.SendWebRequest();
if (uwr.isNetworkError || uwr.isHttpError)
{
Debug.Log("Error: "+uwr.error);
}
else
{
JSONNode jsonNode = SimpleJSON.JSON.Parse(uwr.downloadHandler.text);
if (jsonNode["name"] != "")
{
playerName = jsonNode["name"];
if(PhotonNetwork.countOfRooms==0)// Ругается вот сюда
{
PhotonNetwork.LocalPlayer.NickName = playerName;
PhotonNetwork.CreateRoom("room", new RoomOptions(), null);
}
else
{
PhotonNetwork.JoinRoom("room");
}
}
}
}
{
WWWForm form = new WWWForm();
form.AddField("email",email);
form.AddField("pass",pass);
UnityWebRequest uwr = UnityWebRequest.Post("http://myserver.ru/check.php", form);
yield return uwr.SendWebRequest();
if (uwr.isNetworkError || uwr.isHttpError)
{
Debug.Log("Error: "+uwr.error);
}
else
{
JSONNode jsonNode = SimpleJSON.JSON.Parse(uwr.downloadHandler.text);
if (jsonNode["name"] != "")
{
playerName = jsonNode["name"];
if(PhotonNetwork.countOfRooms==0)// Ругается вот сюда
{
PhotonNetwork.LocalPlayer.NickName = playerName;
PhotonNetwork.CreateRoom("room", new RoomOptions(), null);
}
else
{
PhotonNetwork.JoinRoom("room");
}
}
}
}
Мне нужно просто проверить если комнат 0 ( PhotonNetwork.countOfRooms==0) то я создаю комнату иначе подключаюсь к комнате
Также я могу проверить что это первый игрок PhotonNetwork.CurrentRoom.PlayerCount == 1 но он также на нее ругается
NullReferenceException: Object reference not set to an instance of an object
Как можно решить, что я делаю не так ?