Unity Steamworks "InvalidOperationException: Steamworks is not initialized." 在 Mirror 中返回离线场景后

Unity Steamworks "InvalidOperationException: Steamworks is not initialized." after returning to offline scene in Mirror

所以我只是设法将 Unity Mirror 与 FizzySteamworks 集成为传输层。 我的 networkmanager 在离线场景(主菜单)中初始化,一旦我单击“玩游戏”,一切正常,直到我退出(我通过调用方法 networkManager.StopHost() 来完成)。这使我进入离线场景,但每当我再次按下播放时,我都会收到以下错误:InvalidOperationException: Steamworks is not initialized.

The error

My NetworkManager settings

有没有可能我disconnect/quit玩游戏的方式不对?我应该改为通过 Steamworks (Fizzy) 断开连接吗?

为什么 SteamWorks API 在我进入主菜单时只在第一次初始化而不是第二次初始化?

您不应该破坏您的 Steam API 的管理器。 Steam API 必须先初始化,然后才能尝试使用它。您可以将管理器设置为“不要在加载时销毁”。 Steam API 的唯一销毁方式是整个游戏关闭时,而不仅仅是改变场景。 简而言之,一旦你开始游戏就应该初始化它并设置为不要在加载时销毁。

我必须启用“将网络管理器保存到离线场景”。 但是,这又增加了另一个问题,如果客户端被自动从上一个会话中踢出(从主机退出中踢出),则客户端无法重新主持会话。
我注意到一旦主机通过调用退出自动踢客户,SteamMatchmaking.LeaveLobby() 并没有在客户端 运行。 因此,我从我的 DisconnectHost() 方法添加了一个 ClientRpc 调用,以确保所有客户端在任何人被主机踢之前离开 Steam 大厅 .