设置多人游戏项目 本页面概要介绍设置多人游戏项目时所需的最基本和最常见的事项。在项目的需求方面包括:
根据具体情况,此列表可能会有所变化;例如,在多人国际象棋游戏或实时战略 (RTS) 游戏中,不需要可见的游戏对象来表示玩家。但是,可能仍然需要一个不可见的空游戏对象来表示玩家,并附加一个与玩家操作相关的脚本。
本介绍页面包含上面列出的每一项的简要说明。但是,每个部分都链接到更详细的文档,您需要继续阅读以完全理解它们。
在构建游戏时,还需要了解一些重要概念并做出相应选择。这些概念大体上可概括为:
博客将会介绍多人游戏学习。希望这篇博客对Unity的开发者有所帮助。 大家好,我是心疼你的一切,不定时更新Unity开发技巧,觉得有用记得一键三连哦。 欢迎点赞评论哦.下面就让我们进入正文吧 !
提示:以下是本篇文章正文内容,下面案例可供参考
Network Manager 负责管理多人游戏的网络方面。同一时间应在场景中激活一个(且仅一个)Network Manager。

Network Manager 是用于管理多人游戏的网络方面的组件。
Network Manager 功能包括:
Network Manager 是多人游戏的核心控制组件。首先,在起始场景中创建一个空游戏对象,然后添加 NetworkManager 组件。新添加的 Network Manager 组件如下所示:

Editor 中的 Network Manager Inspector 可用于配置和控制与网络相关的许多设置。
注意:每个场景中只应有一个激活的 Network Manager。不要将 Network Manager 组件放在联网游戏对象(具有 Network Identity 组件的游戏对象)上,因为 Unity 会在加载场景时禁用这些组件。
使用 Network Manager 可管理基于预制件的联网游戏对象生成(联网实例化)。

大多数游戏都有一个代表玩家的预制件,因此 Network Manager 有一个 Player Prefab 字段。应为此字段分配玩家预制件。设置玩家预制件后,该预制件将用于为游戏中的每个用户自动生成玩家游戏对象。该机制适用于托管服务器上的本地玩家和远程客户端上的远程玩家。必须将 Network Identity 组件附加到玩家预制件。
分配玩家预制件后,即可作为主机开始游戏,并看到玩家游戏对象生成。停止游戏会销毁玩家游戏对象。如果构建并运行另一个游戏副本并将其作为客户端连接到 localhost,则 Network Manager 会使另一个玩家游戏对象出现。停止该客户端时会销毁该玩家的游戏对象。
除了玩家预制件之外,还必须向 Network Manager 注册要在游戏过程中动态生成的其他预制件。
可将预制件添加到 Inspector 中标记为 Registered Spawnable Prefabs 的列表。还可使用 ClientScene.RegisterPrefab() 方法通过代码来注册预制件。
如果只有一个 Network Manager,则需要向其注册可能在任何场景中生成的所有预制件。如果每个场景中都有单独的 Network Manager,则只需注册与该场景相关的预制件。
Network Manager 使用其 NetworkManager.OnServerAddPlayer() 实现来生成玩家游戏对象。如果要自定义玩家游戏对象的创建方式,可重写该虚拟函数。以下代码显示了默认实现的示例:
public virtual void OnServerAddPlayer(NetworkConnection conn, short playerControllerId)
{
var player = (GameObject)GameObject.Instantiate(playerPrefab, playerSpawnPos, Quaternion.identity);
NetworkServer.AddPlayerForConnection(conn, player, playerControllerId);
} 注意: 如果要实现 OnServerAddPlayer 的自定义版本,必须为新创建的玩家游戏对象调用 NetworkServer.AddPlayerForConnection() 方法,以便生成该游戏对象并与客户端的连接关联。AddPlayerForConnection 会生成游戏对象,因此无需使用 NetworkServer.Spawn()。
书接上回,承接下回,一系列的。欲知后事如何,且听下回分解。 本次总结的就是这样的, 有需要会继续增加功能 如能帮助到你,就帮忙点个赞吧,三连更好哦,谢谢 你的点赞就是对博主的支持,有问题记得留言评论哦! 不定时更新Unity开发技巧,觉得有用记得一键三连哦。么么哒!