代码:ErrorKeyNotFoundException: ErrorKeyNotFoundException: on NetworkServer.connections?
void Update()
{
if (isServer)
{
for (var i = 0; i < NetworkServer.connections.Count; i++)
{
Debug.Log("Connections: " + NetworkServer.connections[i].identity.netId.ToString());
}
}
}
ErrorKeyNotFoundException: 给定的键在字典中不存在。System.Collections.Generic.Dictionary`2[TKey,TValue].get_Item (TKey key) (at :0) PlayerManager.Update () (at AssetsScriptsPlayerManager.cs:504)
当我运行两个实例的构建,其中一个作为主机+客户端运行,另一个作为客户端运行时,我没有看到任何问题。它工作得很完美。它给我两个值作为输出。
当我只作为服务器运行时,什么都没有发生,但当我作为客户端运行另一个构建时,它就开始拍摄上述错误。
我试着逐行调试,但Visual Studio在调试时没有显示任何错误。
我想明白了。NetworkServer.Connection字典将0号键分配给Host+Client,但如果服务器只作为服务器,它不会将任何值分配给0号键。对于所有的客户端,它从1开始。因此,只有当服务器同时作为主机& 客户端时,才会使用0。
修正后的代码如下。
void Update()
{
if (isServer)
{
foreach (KeyValuePair<int,NetworkConnectionToClient> item in NetworkServer.connections)
{
Debug.Log("Connections--->:" + item.Key + "-->"+item.Value.identity.netId.ToString());
}
}
}