Unity中实现局域网—Multiplayer HLAPI

一:前言

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;
    }
}

猜你喜欢

转载自blog.csdn.net/LLLLL__/article/details/127402796