Unity 多人游戏框架学习系列六
系列文章目录
unity知识点
文章目录
- 系列文章目录
- 前言
- 一、NetworkManager 设置
- 二、玩家预制件设置
- 三、玩家移动
- 四、玩家的基本游戏状态
- 五、网络化操作
- 六、非玩家游戏对象
- 七、生成器
- 八、玩家生成位置
- 九、大厅
- 壁纸分享
- 总结
前言
接上一篇的继续分解
本文将介绍使用新的 Unity Multiplayer 网络系统将单人游戏转换为多人游戏的步骤。本文描述的过程是真实游戏实际过程的简化浓缩版本;实际情况并不完全与此相同,但提供了该过程的基本方案。
博客将会介绍多人游戏学习。希望这篇博客对Unity的开发者有所帮助。
大家好,我是心疼你的一切,不定时更新Unity开发技巧,觉得有用记得一键三连哦。
欢迎点赞评论哦.下面就让我们进入正文吧 !
提示:以下是本篇文章正文内容,下面案例可供参考
一、NetworkManager 设置
- 在场景中添加一个新的游戏对象,然后将其重命名为“NetworkManager”。
- 在“NetworkManager”游戏对象中添加 NetworkManager 组件。
- 在游戏对象中添加 NetworkManagerHUD 组件。这样可提供用于管理网络游戏状态的默认 UI。
二、玩家预制件设置
- 找到游戏中玩家游戏对象的预制件,或者基于玩家游戏对象创建预制件
- 在玩家预制件中添加 NetworkIdentity 组件
- 在 NetworkIdentity 上选中 LocalPlayerAuthority 复选框
- 将 NetworkManager 的 Spawn Info 部分中的 playerPrefab 设置为玩家预制件
- 从场景中删除玩家游戏对象实例(如果在场景中存在)
三、玩家移动
- 在玩家预制件中添加 NetworkTransform 组件
- 更新输入和控制脚本以采用 isLocalPlayer
- 修正摄像机以使用生成的玩家和 isLocalPlayer
例如,以下脚本仅处理本地玩家的输入:
using UnityEngine;
using UnityEngine.Networking;public class Controls : NetworkBehaviour
{void Update(){if (!isLocalPlayer){// 如果不是本地玩家,则退出更新return;}// 处理玩家的移动输入}
}
四、玩家的基本游戏状态
- 将包含重要数据的脚本放入 NetworkBehaviour 而不是 MonoBehaviour
- 将重要的成员变量放入 SyncVar
五、网络化操作
- 将执行重要操作的脚本放入 NetworkBehaviour 而不是 MonoBehaviour
- 将执行玩家重要操作的函数更新为命令
六、非玩家游戏对象
修正非玩家预制件,如敌人:
- 添加 NetworkIdentify 组件
- 添加 NetworkTransform 组件
- 在 NetworkManager 中注册可生成的预制件
- 用游戏状态和操作来更新脚本
七、生成器
- 可将生成器脚本更改为 NetworkBehaviour
- 修改生成器以便仅在服务器上运行(使用 isServer 属性或 OnStartServer() 函数)
- 为创建的游戏对象调用 NetworkServer.Spawn()
八、玩家生成位置
- 添加一个新的游戏对象并将其放置在玩家的起始位置
- 在新游戏对象中添加 NetworkStartPosition 组件
九、大厅
- 创建大厅场景
- 在场景中添加一个新的游戏对象,然后将其重命名为“NetworkLobbyManager”。
- 在新游戏对象中添加 NetworkLobbyManager 组件。
- 配置管理器:
- 场景
- 预制件
- 生成器
壁纸分享
总结
书接上回,承接下回,一系列的。欲知后事如何,且听下回分解。
本次总结的就是这样的, 有需要会继续增加功能
如能帮助到你,就帮忙点个赞吧,三连更好哦,谢谢
你的点赞就是对博主的支持,有问题记得留言评论哦!
不定时更新Unity开发技巧,觉得有用记得一键三连哦。么么哒!