【问题标题】:Different scenes for server and clients using Unity networking HLAPI使用 Unity 网络 HLAPI 的服务器和客户端的不同场景
【发布时间】:2016-12-01 20:33:04
【问题描述】:

我创建了一个网络应用程序,其中一些客户端使用 Unity 网络高级 API (HLAPI) 连接到纯服务器(而非主机)。

这是我打算实现的目标:

我的服务器将场景 ServerOffline(仅使用画布 + 文本显示 OFFLINE)和 ServerOnline(显示有关已连接客户端的信息也使用画布 + 文本)配置到 NetworkManager 的 offlineScene 和 onlineScene 属性中。该 NetworkManager 显然是作为构建 1 的服务器启动的。

现在,任何客户端也有两个场景,但与服务器不同。 ClientOffline 显示 DISCONNECTED 与画布​​ + 文本,ClientOnline 显示应用程序本身(立方体射击球体)。使用相同的 NetworkManager,但在将其作为 Build 2 的客户端启动之前,使用客户端场景(而不是服务器场景)设置了 offlineScene 和 onlineScenes 属性。

这是我得到的:

当客户端连接到服务器时,服务器将 ITS 场景强制发送给客户端。我期望客户端上的场景没有加载。

问题:

如何使用 Unity 网络 HLAPI 在两端使用不同场景操作我的服务器 + 客户端? NetworkManager 方法是错误的吗?不使用它会很遗憾,因为 NetworkManager 已经做了很多好东西。

非常感谢!

【问题讨论】:

    标签: unity3d


    【解决方案1】:

    我会回答我自己的问题,因为我已经找到了答案。我有一个名为“Base.unity”的基本场景,其中包含 NetworkManager。

    我创建了另外两个名为“Offline.unity”和“Online.unity”的场景,分别设置为 NetworkManager 属性“offlineScene”和“onlineScene”。 “Offline.unity”场景只有一个画布,以彩色文本显示全屏“OFFLINE”。 “Offline.unity”场景被客户端和服务器原样使用。

    但是,我记得我的目标,我希望无论何时在线时两端都有不同的场景。我创建了场景“DektopClientOnline.unity”,其中仅包含桌面客户端的专用资产(没有相机、没有灯光等,因为所有常见的东西都在“Online.unity”场景中)并且我已经创建了场景“ ServerOnline.unity" 用于服务器专用资产(基本上是显示已连接客户端等的画布,再次没有摄像头、灯光等)。

    我已经专门化了 NetworkManager(称为 AppNetworkManager)并且基本上覆盖了两个函数:

    public override void OnClientSceneChanged(NetworkConnection conn)
    {
        SceneManager.LoadScene("DesktopClientOnline", LoadSceneMode.Additive);
        ClientScene.Ready(conn);
        ClientScene.AddPlayer(conn, 0);
    }
    
    public override void OnServerSceneChanged(string sceneName)
    {
        SceneManager.LoadScene("ServerOnline", LoadSceneMode.Additive);
    }
    

    这是发生了什么:

    只要服务器上线,OnServerSceneChanged 回调就会在加载“Online.unity”场景(配置到 NetworkManager)时被调用。因此,我简单地将“ServerOnline.unity”的专门内容“注入”到“Online.unity”中。我在服务器上有我想要的东西。

    然后客户端连接到服务器。当“Online.unity”场景再次加载时调用 OnClientSceneChanged 回调,但这次是在客户端上。我将“DesktopClientOnline.unity”的专门内容“注入”到“Online.unity”中。我有我想要的客户端。

    希望这对任何人都有帮助!

    【讨论】:

      猜你喜欢
      • 2014-09-06
      • 1970-01-01
      • 1970-01-01
      • 2011-02-10
      • 1970-01-01
      • 2016-07-05
      • 2012-04-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多