unity3d网络游戏开发API
从 Unity 5.0 开始,提供了全新的 UNet 开发网络游戏,面向两种类型的用户:
- 使用 Unity 开发简单多人游戏,应该从高阶 API 开始
- 使用 “NetworkManager” 管理网络,控制游戏对象网络状态
- 从客户端调用服务器函数 或 从服务器调用客户端函数
- 使用网络组件,可视化编辑程序
- nternet 服务支持
- 用户自定义网络基础设施或高级多人游戏,应该从 NetworkTransport API 开始
- 使用 UDP 等
- 自建复杂的网络结构
本篇博客使用的是高级API。
unity3d开发网络多人游戏
- 新建 NetworkManager对象:
- 首先创建一个空对象,将其命名为NetworkManager;
- 为该对象添加组件:NetworkManager,NetworkManagerHUB。
- 制作玩家预制:
- 本次实验使用的是巡逻兵那篇博客的人物素材,需要删除玩家预制下的摄像机,命名为player;
- 为玩家预制添加组件:NetworkIdentity(Local Player Authority需要设置为true,使客户端可以控制玩家),NetworkTransform(为服务器提供玩家位置等信息)。
- 注册玩家预制:
将玩家预制拖入NetworkManager的swap info的Player Prefab插槽。 - 注册子弹预制:
- 新建球体对象,命名为Bullet,scale设置为0.2;
- 给子弹rigidbody组件,取消重力;
- 添加新脚本bullet.cs,bullet.cs用来处理子弹的碰撞事件;
- 用 Add 按钮添加一个新的 spawn 预制件,将 Bullet 预制件拖入新的 spawn 预制插槽。
- 玩家控制脚本:
- 新建名为Network.cs的玩家控制脚本;
- Network.cs脚本中,控制玩家的移动和攻击,控制摄像机跟随。
- 新建Combat.cs,改脚本控制玩家血条值;
- 添加场景控制:
新建FirstSceneController.cs,该脚本加载摄像机和地图;
各cs文件代码:
/* *
* Network.cs
* 该脚本中控制玩家移动、攻击,控制摄像机跟随
* */
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;
public class Network : NetworkBehaviour {
public GameObject bulletPrefab;
public Color color = Color.red;
private float speed = 3;
private float rspeed = 90;
priva