gpt4 book ai didi

unity-game-engine - 使用Unity网络HLAPI的服务器和客户端的不同场景

转载 作者:行者123 更新时间:2023-12-01 16:04:48 25 4
gpt4 key购买 nike

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

这是我想要实现的目标:

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

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

这是我得到的:

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

问题:

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

非常感谢!

最佳答案

既然我找到了答案,我就回答我自己的问题。我有一个名为“Base.unity”的基础场景,其中包含 NetworkManager。

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

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

我专门化了 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);
}

这是发生的事情:

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

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

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

关于unity-game-engine - 使用Unity网络HLAPI的服务器和客户端的不同场景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40919858/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com