Почему я не могу создать GameObject, используя свою собственную функцию? - PullRequest
2 голосов
/ 15 марта 2020

Почему я не могу создать 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 не так с вами, ребята?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...