为什么我不能使用自己的函数创建GameObject? 我将nodejs用作服务器,并将unity用作客户端。当我想改变场景或在不想进行更新的地方做任何事情时,就会出现我的问题,例如:
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);
}
这是一条从服务器发送的消息,一旦它到达客户端,它将尝试创建一个名称为“ x”的GameObject,“错误”出现在这里,如果我执行此代码,它将获取字符串[]播放器,但不执行
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;
}
}
然后它确实起作用了,但是我不想创建一个全局变量来存储id和一个布尔值来执行某些操作,因为每个输入的人都会使用它。
无论它是什么,我都不希望您对其进行修复,我只是想了解它为何如此工作,以及为什么不通过更新就无法使其工作,因为从其他方面来说,它确实有效。
我要疯了,非常感谢,谢谢我的英语:)
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:我没有错误,只要将它放在更新函数中,一切都可以,这就是为什么要问,因为按照我的逻辑,这两种方法都应该起作用,但是对于我需要的东西,我需要使用一种没用,我也不明白为什么:(。
谢谢。 为什么你投反对票?我不明白,这是一个好问题,任何人都可以回答,所以wtf对你们来说是错的吗?