@Ezekiel4
Охотник на пиратов и сборщик монолитов

Почему метод выполняется не полностью?

Делаю онлайн лобби на вебсокетах. От сервера приходит сообщение с типом, который я через switch-case проверяю на разные совпадения. Когда приходит нужное, я перенаправляю реплай в лобби. Метод точно вызывается, потому что срабатывает Debug.Log, но когда я пытаюсь заспавнить инстанс сущности игры в список, она не спавнится. Если же я это делаю по нажатию клавиши (нажал-заспавнил), работает. Почему?

Реплай структура:
[System.Serializable]
public struct ReplyMessage {
	public string type;
	public bool success;
	public ReplyData[] data;
	public string error;
}

[System.Serializable]
public struct ReplyData {
	// fields
}

Фрагмент проверки ответа:
[SerializeField] private GamesList m_GamesList;
// ...
private void OnMessage(object sender, MessageEventArgs e) {
	ReplyMessage reply = JsonUtility.FromJson<ReplyMessage>(e.Data);
	switch (reply.type) {
	// ...
	case "get_game_requests":
		m_GamesList.PutGamesInList(reply.data);
		break;
	// ...
}
// ...

Фрагмент списка GamesList:
public void PutGamesInList(ReplyData[] data) {
	// вот эта строка выводится
	Debug.Log("Refresh Games List [" + data.Length.ToString() + "]");
	// а это не работает
	AddGameToList("Player", 12, 6, "sdfsdfsd");
	// эта строка тоже не запускается
	Debug.Log("+");
}
// а это работает..
private void Update() {
	if (Input.GetKeyDown(KeyCode.T))
		AddGameToList("Player", 12, 6, "sdfsdfsd");
}
// метод спавна
private void AddGameToList(string player, int d1, int d2, string gameId) {
	var game = Instantiate(m_GamePrefab, m_GamesListParent);
	Color bg = _Index % 2 == 0 ? m_Color1 : m_Color2;
	game.Initialize(this, player, d1, d2, gameId, bg);
	_ListElements.Add(game);
	_Index++;
}
  • Вопрос задан
  • 76 просмотров
Решения вопроса 1
yarosroman
@yarosroman Куратор тега C#
C# the best
Вам отладчик в руки, смотрите, может исключение вылетает, например NullPointerException на data. Проверьте data на null в PutGamesInList перед использованием, хорошая практика.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы