Unity中实现局域网—Multiplayer HLAPI

Posted Hello Bug.

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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;
    

以上是关于Unity中实现局域网—Multiplayer HLAPI的主要内容,如果未能解决你的问题,请参考以下文章

使用 Photon Unity Network(多人游戏)在 Unity 中实时同步

Unity multiplayer

我可以在不支付 Unity Multiplayer 服务的情况下使用 Unity 网络 HLAPI 吗?

Unity3D编辑器扩展Unity3D中实现Text的字体的替换

Unity3D编辑器扩展Unity3D中实现Text的字体的替换

使用Multiplayer Networking做一个简单的多人游戏例子-1/3(Unity3D开发之二十五)