我正在尝试使用 MLAPI 进入多人游戏,但遇到了一个我无法解决的问题。
void Update()
{
if (Input.GetKeyDown(KeyCode.S))
{
GameObject player = Instantiate(cube);
player.GetComponent<NetworkObject>().Spawn();
player.GetComponent<NetworkObject>().ChangeOwnership(2);
}
}
我把这个脚本放在一个空的游戏对象上,立方体只是一个立方体预制件,上面附加了一个网络对象组件。它应该产生对象,然后更改它的所有权。但是,当我将项目的一个实例作为服务器启动,另一个作为客户端启动,并在服务器上按 S 时,我在客户端上收到此错误:
KeyNotFoundException:给定的键不在字典中。System.Collections.Generic.Dictionary`2[TKey,TValue].get_Item (TKey key) (at <9577ac7a62ef43179789031239ba8798>:0) MLAPI.Messaging.InternalMessageHandler.HandleChangeOwner (System.UInt64 clientId, System.IO.Stream stream) (at F:/1Unity/Networking Project/Library/PackageCache/com.unity.multiplayer.mlapi@3e3aef6aa0/Runtime/Messaging/InternalMessageHandler.cs:351)
(实际上更长,但我认为其余的应该是不必要的,如果不是,请告诉我。)
将除 2 之外的任何其他值放在 ChangeOwnership 方法中并尝试相同的操作会在服务器上给出:
KeyNotFoundException:给定的键不在字典中。System.Collections.Generic.Dictionary`2[TKey,TValue].get_Item (TKey key) (at <9577ac7a62ef43179789031239ba8798>:0) MLAPI.Spawning.NetworkSpawnManager.ChangeOwnership (MLAPI.NetworkObject networkObject, System.UInt64 clientId) (at Library/ PackageCache/com.unity.multiplayer.mlapi@3e3aef6aa0/Runtime/Spawning/NetworkSpawnManager.cs:231)
如果有人能帮助我解决这个问题,我将不胜感激。