一:前言
Multiplayer HLAPI在之前叫做UNet,可以开发联机网络游戏
二:介绍
——NetworkBehaviour:网络的基础类,继承自 MonoBehaviour,如果需要支持网络特性,需要继承NetworkBehaviour而不是 MonoBehaviour
——NetworkManager:网络管理类,StartServer、StopServer、StartClient、StopClient
——NetworkManagerHUD:添加此组件会自动添加NetworkManager组件,它会在场景中显示交互的HUD
——NetworkIdentity:所有网络相关的游戏物体或预制体都需要添加的组件
——NetworkTransform:实现对象的transform同步
——Command标签属性: 由客户端发起调用,在服务器执行(方法以Cmd开头)
——ClientRpc标签属性:由服务器发起调用,在客户端执行(方法以Rpc开头)
——SyncVar标签属性、SyncEvent标签属性:标记了服务器和客户端上需要同步的变量和事件,在对标识的变量或时间进行操作时,会同时将信息发送至服务器与客户端
——ServerCallback标签属性、ClientCallback标签属性:服务端和客户端回调函数
三:案例实现
using UnityEngine;
using UnityEngine.Networking;
public class PlayerCotrol : NetworkBehaviour
{
private void Awake()
{
}
public override void OnStartLocalPlayer()
{
Debug.Log("OnStartLocalPlayer");
}
private void Update()
{
if (!isLocalPlayer)
{
return;
}
if (Input.GetKeyDown(KeyCode.A))
{
CmdShow();
}
if (Input.GetKeyDown(KeyCode.D))
{
CmdHide();
}
}
[Command]
void CmdShow()
{
RpcShow();
}
[ClientRpc]
void RpcShow()
{
GameObject.Find("Cube(Clone)").GetComponent<MeshRenderer>().enabled = true;
}
[Command]
void CmdHide()
{
RpcHide();
}
[ClientRpc]
void RpcHide()
{
GameObject.Find("Cube(Clone)").GetComponent<MeshRenderer>().enabled = false;
}
}