• 将单人游戏转换为Unity多人游戏
    • NetworkManager设置
    • 玩家预制设置
    • 球员运动
    • 基本玩家游戏状态
    • 联网行动
    • 非玩家GameObjects
    • 生成
    • 产生玩家的位置
    • 前厅

    将单人游戏转换为Unity多人游戏

    本文档介绍了使用新的Unity多人联网系统将单人游戏转换为多人游戏的步骤。这里描述的过程是真实游戏实际过程的简化,更高级的版本;它并不总是像这样工作,但它提供了该过程的基本配方。

    NetworkManager设置

    1. 将一个新的GameObject添加到场景并将其重命名为“NetworkManager”。
    2. NetworkManager组件添加到“NetworkManager”游戏对象。
    3. NetworkManagerHUD组件添加到GameObject。这提供了用于管理网络游戏状态的默认UI

    请参阅使用NetworkManager。

    玩家预制设置

    1. 在游戏中查找玩家GameObject的预制件,或从玩家GameObject创建预制件
    2. NetworkIdentity组件添加到玩家Prefab
    3. 检查NetworkIdentity上的LocalPlayerAuthority
    4. playerPrefabNetworkManagerSpawn Info部分设置为玩家预制
    5. 如果它存在于场景中,则从场景中移除玩家GameObject实例

    有关更多信息,请参阅玩家对象

    球员运动

    1. NetworkTransform组件添加到玩家Prefab
    2. 更新输入和控制脚本来尊重 isLocalPlayer
    3. 修复相机使用衍生玩家和 isLocalPlayer

    例如,该脚本仅处理本地玩家的输入:

    1. using UnityEngine;
    2. using UnityEngine.Networking;
    3. public class Controls : NetworkBehaviour
    4. {
    5. void Update()
    6. {
    7. if (!isLocalPlayer)
    8. {
    9. // exit from update if this is not the local player
    10. return;
    11. }
    12. // handle player input for movement
    13. }
    14. }

    基本玩家游戏状态

    1. 使包含重要数据的脚本继承NetworkBehaviours而不是MonoBehaviours
    2. 将重要的成员变量放入SyncVars

    请参阅状态同步。

    联网行动

    1. 将执行重要操作的脚本制作成NetworkBehaviours而不是MonoBehaviours
    2. 将执行重要玩家动作的功能更新为命令

    请参阅联网的操作。

    非玩家GameObjects

    修复诸如敌人之类的非玩家预制:

    1. 添加NetworkIdentify组件
    2. 添加NetworkTransform组件
    3. NetworkManager注册可重复使用的预制件
    4. 用游戏状态和动作更新脚本

    生成

    1. 潜在地将spawner脚本更改为NetworkBehaviours
    2. spawners修改为仅在服务器上运行(使用isServer属性或OnStartServer()函数)
    3. 调用NetworkServer.Spawn()创建的GameObjects

    产生玩家的位置

    1. 添加一个新的GameObject并将其放置在玩家的起始位置
    2. NetworkStartPosition组件添加到新的GameObject

    前厅

    1. 创建大厅场景
    2. 将新的GameObject添加到场景并将其重命名为“NetworkLobbyManager”。
    3. NetworkLobbyManager组件添加到新的GameObject中。
    4. 配置管理器:
    5. 场景
    6. 组合屋
    7. 产卵

    ?