消息传递b / w"仅限LAN服务器"和"局域网客户端"在团结中的不同场景

时间:2018-05-15 19:27:30

标签: unity3d server client message-passing unity-networking

嗨,我想在不同场景的客户端和服务器上来回传递消息,我怎么能在Unity中做到这一点?

以下是我的情景: - 我有5个场景 -

  1. BaseScene(2)OfflineScene(3)OnlineScene(4)ClientOnline(5) ServerOnline。
  2. 所有这些场景都有按钮,其中包含场景名称的文字。 在基础场景中,我添加了空的游戏对象,我放置了#34; customNetworkScript"它来自" NetworkManager"脚本和放置"网络管理员HUD"在上面。以下是我放在" customNetworkScript"中的代码: -

    public class customNetworkScript : NetworkManager {
    
            public override void OnClientSceneChanged(NetworkConnection conn)
                {
                    SceneManager.LoadScene("ClientOnline", LoadSceneMode.Single);
                    ClientScene.Ready(conn);
                    ClientScene.AddPlayer(conn, 0);
                }
    
                public override void OnServerSceneChanged(string sceneName)
                {
                    SceneManager.LoadScene("ServerOnline", LoadSceneMode.Single);
                }
        }
    

    我已经放置了#34; OfflineScene"和" OnlineScene"在字段中,命名为"离线场景"和"在线场景"在"网络管理器"零件。还在#34; Spawn Info"中放置了一个空的预制件。 in" customNetworkScript"它有组件"网络身份"在上面。现在当我运行项目时,在一个实例上,我点击"仅限LAN服务器"在另一个例子中,我点击" LAN Client"。我在两个实例上都得到了各自的场景 - > " ServerOnline"出现在我单击"仅限LAN服务器"的实例上和" ClientOnline"出现在其他实例上。 我想要的是,当我点击" ServerOnline"按钮,消息字符串将传递给" ClientOnline"当我点击" ClientOnline"按钮。

    我试过" Rpc"和"命令"但是它们只有在我点击“LAN Host"而不是"仅限LAN服务器"。 我已经非常努力但却找不到任何有用的东西。如果有人向我详细解释代码,我将如何实现这一目标,将是一件非常愉快的事。

    非常感谢你的时间。

1 个答案:

答案 0 :(得分:0)

经过数小时的研究和努力,终于找到了解决我问题的方法。如果有人仍然坚持,我会参考这个资产:

此资产已有详细记录,并将告诉您有关如何进行专用/纯服务器和客户端网络的所有信息: -

Asset Link

如果有人仍然不明白,请随时问我。我会尽我所能。