Почему я не могу создать GameObject, используя свою собственную функцию? Я использую nodejs как сервер и единство как клиент. Моя проблема возникает, когда я хочу изменить сцену или сделать что-либо, где я не хочу go, через обновление, например:
if (comando.Contains("spawn")) // Si recibe el mensaje del servidor como 'conectado' hara el debug
{
string[] player = comando.Replace("spawn", "").Replace("{", "").Replace("}", "").Replace("\"", "").Replace("username", "").Replace("id", "").Replace(":", "").Split(',');
GameObject go = new GameObject("Server ID:" + id);
go.transform.SetParent(container);
serverObjects.Add(id, go);
}
Это сообщение, отправленное с сервера, как только он попадает к клиенту, он пытается создать GameObject с именем «x», здесь появляется «ошибка», если я выполняю этот код, он попадает в string [] player, но не выполняет
GameObject go = new GameObject("Server ID:" + id);
но если я вместо этого добавлю этот код:
if (comando.Contains("spawn")) // Si recibe el mensaje del servidor como 'conectado' hara el debug
{
string[] player = comando.Replace("spawn", "").Replace("{", "").Replace("}", "").Replace("\"", "").Replace("username", "").Replace("id", "").Replace(":", "").Split(',');
id = player[1];
crear = true;
}
и это в функции обновления
if (crear)
{
if (serverObjects.ContainsKey(id))
{
crear = false;
}
else
{
GameObject go = new GameObject("Server ID:" + id);
go.transform.SetParent(container);
serverObjects.Add(id, go);
crear = false;
}
}
, тогда это сработает, но я не хочу иметь создать глобальную переменную для хранения идентификатора и bool для некоторого дерьма, поскольку она используется каждым, кто входит.
Что бы это ни было, я не ищу, чтобы вы это исправили, я ' Мне просто хотелось бы понять, почему это работает так и почему я не могу заставить его работать без обновления, потому что для других вещей это работает.
И я схожу с ума, большое спасибо, извините за мой Engli sh :)
PS: еще примеры, которые не работают:
if (comando == "noconectado") // if server send me "noconectado" y change the scene
{
UnityEngine.SceneManagement.SceneManager.LoadScene(1);
}
но если я это сделаю
if (comando == "noconectado") // if server send me "noconectado" y change the scene
{
creado=true;
//UnityEngine.SceneManagement.SceneManager.LoadScene(1);
}
и это в функции обновления
if(creado)
{
UnityEngine.SceneManagement.SceneManager.LoadScene("Player");
creado = false;
}
работает.
В этом коде:
if (comando.Contains("spawn")) // Si recibe el mensaje del servidor como 'conectado' hara el debug
{
Debug.Log("1");
string[] player = comando.Replace("spawn", "").Replace("{", "").Replace("}", "").Replace("\"", "").Replace("username", "").Replace("id", "").Replace(":", "").Split(',');
Debug.Log("2");
id = player[1];
Debug.Log("3");
GameObject go = new GameObject("Server ID:" + id);
Debug.Log("4");
go.transform.SetParent(container);
Debug.Log("5");
serverObjects.Add(id, go);
}
это просто возвращает мне 1, 2, 3
Мой клиент получает такое сообщение
stream.BeginRead(data, 0, data.Length, new AsyncCallback(terminoDeLeer),
stream);
void terminoDeLeer(IAsyncResult arr)
{
leyendo = false;
int t = stream.EndRead(arr);
string mensaje = Encoding.UTF8.GetString(data, 0, t);
leerComando(mensaje);
}
и leerComando - это то, что я показываю выше
Я схожу с ума
PS2: Я не получаю ошибок, все работает, если я помещаю это в функцию обновления, поэтому я спрашиваю, потому что согласно моей логике c должны работать два способа, но для чего Мне нужно, мне нужно использовать тот, который не работает, и я не понимаю, почему :(.
Спасибо. почему ты голосуешь отрицательно? Я не понимаю, это хороший вопрос, и любой может ответить на него, так что WFF не так с вами, ребята?