我设法让某种多人游戏与Unity Netcode一起工作,我知道这是非常新的,但我遇到了一个相当大的问题。我似乎无法断开与服务器示例的连接。这导致了一个问题,我加载游戏场景和NetworkManager示例被派生。然后我返回到主菜单场景,并再次加载游戏场景。现在有2个NetworkManager示例,这显然会导致错误。
我在文件中读到你可以使用这个:
public void Disconnect()
{
if (IsHost)
{
NetworkManager.Singleton.StopHost();
}
else if (IsClient)
{
NetworkManager.Singleton.StopClient();
}
else if (IsServer)
{
NetworkManager.Singleton.StopServer();
}
UnityEngine.SceneManagement.SceneManager.LoadScene("MainMenu");
}
然而,所有这些停止函数似乎根本不存在于单例下。我是不是缺少了一个库或什么?现在我使用的解决方案是禁用“不要销毁”,然后在切换场景后销毁网络管理器,但是如果我想在切换场景后保留它呢?没有办法控制服务器/客户端何时停止吗?我“我假设这是一个错误,但我只是想确认一下。
1条答案
按热度按时间rta7y2nd1#
断开连接的客户端和停止运行的服务器。要回答你的完整问题,你还需要一个
Cleanup()
函数在你的非网络场景中检查丢失的NetworkManager
单例并销毁它们。这将避免不必要的重复网络管理器。