- 将单人游戏转换为Unity多人游戏
- NetworkManager设置
- 玩家预制设置
- 球员运动
- 基本玩家游戏状态
- 联网行动
- 非玩家GameObjects
- 生成
- 产生玩家的位置
- 前厅
将单人游戏转换为Unity多人游戏
本文档介绍了使用新的Unity多人联网系统将单人游戏转换为多人游戏的步骤。这里描述的过程是真实游戏实际过程的简化,更高级的版本;它并不总是像这样工作,但它提供了该过程的基本配方。
NetworkManager设置
• 将一个新的GameObject添加到场景并将其重命名为“NetworkManager”。• 将NetworkManager组件添加到“NetworkManager”游戏对象。• 将NetworkManagerHUD组件添加到GameObject。这提供了用于管理网络游戏状态的默认UI。
请参阅使用NetworkManager。
玩家预制设置
• 在游戏中查找玩家GameObject的预制件,或从玩家GameObject创建预制件• 将NetworkIdentity组件添加到玩家Prefab• 检查NetworkIdentity上的LocalPlayerAuthority框• 将playerPrefabNetworkManager的Spawn Info部分设置为玩家预制• 如果它存在于场景中,则从场景中移除玩家GameObject实例
有关更多信息,请参阅玩家对象
球员运动
• 将NetworkTransform组件添加到玩家Prefab• 更新输入和控制脚本来尊重 isLocalPlayer• 修复相机使用衍生玩家和 isLocalPlayer
例如,该脚本仅处理本地玩家的输入:
using UnityEngine;using UnityEngine.Networking;public class Controls : NetworkBehaviour{void Update(){if (!isLocalPlayer){// exit from update if this is not the local playerreturn;}// handle player input for movement}}
基本玩家游戏状态
• 使包含重要数据的脚本继承NetworkBehaviours而不是MonoBehaviours• 将重要的成员变量放入SyncVars中
请参阅状态同步。
联网行动
• 将执行重要操作的脚本制作成NetworkBehaviours而不是MonoBehaviours• 将执行重要玩家动作的功能更新为命令
请参阅联网的操作。
非玩家GameObjects
修复诸如敌人之类的非玩家预制:
• 添加NetworkIdentify组件• 添加NetworkTransform组件• 用NetworkManager注册可重复使用的预制件• 用游戏状态和动作更新脚本
生成
• 潜在地将spawner脚本更改为NetworkBehaviours• 将spawners修改为仅在服务器上运行(使用isServer属性或OnStartServer()函数)• 调用NetworkServer.Spawn()创建的GameObjects
产生玩家的位置
• 添加一个新的GameObject并将其放置在玩家的起始位置• 将NetworkStartPosition组件添加到新的GameObject中
前厅
• 创建大厅场景• 将新的GameObject添加到场景并将其重命名为“NetworkLobbyManager”。• 将NetworkLobbyManager组件添加到新的GameObject中。• 配置管理器:• 场景• 组合屋• 产卵
?
