检测主机断开连接 | Unity - 游戏对象的网络代码

问题描述 投票:0回答:0

我正在结合 Facepunch.Steamworks 和 FacepunchTransport.

在 Unity 中尝试使用 Netcode for Gameobjects

我现在想让主机在他断开连接时检测到,这样我就可以再次将主机放入 MainMenu。

对于客户端检测主机是否断开连接,我这样做:

private void OnEnable() {
    NetworkManager.Singleton.OnClientDisconnectCallback += OnClientDisconnectCallback;
}

private void OnDisable() {
    NetworkManager.Singleton.OnClientDisconnectCallback -= OnClientDisconnectCallback;
}

private void OnClientDisconnectCallback(ulong id) {
    Debug.Log("OnClientDisconnectCallback: " + id.ToString());

    if (IsClient) {
        if (id == 0) { // 0 = host?!
            LobbySaver.instance.currentLobby?.Leave();
            LobbySaver.instance.currentLobby = null;

            SceneManager.LoadScene("MainMenu");
        }
    }
}

当然,OnClientDisconnectCallback 不会为主机本身触发,因为我看不到“OnClientDisconnectCallback”Debug.Log。

所以我的问题是:

  • 有没有更好的方法来检测主机断开连接?
  • 我怎样才能让主人自己知道他断开连接了?

提前感谢您的帮助!

c# unity3d multiplayer
© www.soinside.com 2019 - 2024. All rights reserved.