- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我创建了一个网络应用程序,其中一些客户端使用 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/
我在 ubuntu 15.10 中安装了软件包及其依赖模块,但它仍然显示错误 从 pysnmp.hlapi 导入 *ImportError: 没有名为 hlapi 的模块 我尝试安装它sudo set
简而言之,我有一个非常简单的多人游戏。这是 Roll A Ball 游戏(Unity3D 教程)。所以现在我让球员等完美地产生,每个人都能够完美地控制自己的球。 但这就是问题所在:我有一个默认的主摄像
使用 Unity3D 引擎的高级网络 API (HLAPI) 似乎是一种要么全有要么全无的方法。对于希望在多人游戏中使用的任何游戏对象,(大多数)行为需要实现为 NetworkBehaviour,并且
我尝试在 Unity3D 中的 NetworkManager (HLAPI) 和 Socket 服务器之间建立连接。 我已经尝试使用 HLAPI 或 LLAPI 连接两个 Unity 应用程序。它运作
我看到了 Unity 的 Multiplayer service page ,我完全糊涂了: 我可以使用Unity's high-level networking API吗? (NetworkMana
我是一名优秀的程序员,十分优秀!