学习笔记——使用Unity Network组件开发联机游戏

本文详细介绍了如何在Unity 2018.4.16版本中使用Network组件创建和操控多人在线游戏,包括创建玩家预制体、添加NetworkIdentity和NetworkTransform,以及实现本地玩家控制和网络同步。
摘要由CSDN通过智能技术生成


前言

使用unity中的Network组件开发一个简单的多人在线游戏
unity版本:2018.4.16


一、创建玩家预制体

1.创建地面
2.在Hierarchy面板创建cube作为玩家,加入刚体组件Rigidbody。
3.diver脚本控制玩家上下左右前进,挂载到player上。

//drive脚本
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;

public class drive : MonoBehaviour
{
    public float rotateSpeed = 150;
    public float moveSpeed = 6;

    private void Update()
    {
        //if (isLocalPlayer == false) return;
        var x = Input.GetAxis("Horizontal") * Time.deltaTime * rotateSpeed;
        var z = Input.GetAxis("Vertical") * Time.deltaTime * moveSpeed;

        transform.Rotate(0, x, 0);
        transform.Translate(0, 0, z);
    }
    
}

4.在玩家上方增添文字,挂载脚本解决移动后文字不动的问题,使文字永远朝向摄像机。

//文字脚本
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class FaceCamera : MonoBehaviour
{
    void Update()
    {
        this.transform.LookAt(Camera.main.transform.position);
        this.transform.Rotate(new Vector3(0, 180, 0));//面向相机沿y轴翻转180度
    }
}

5.将Hierarchy面板中的player组件拖拽到assets文件夹内,作为预制件。
在这里插入图片描述
6.将Hierarchy面板中的player删除即可。

二、使用Network组件

1.点击assets中的玩家预制件,添加Network Identity组件和Network Transform组件。在Network Identity中勾选LocalPlayerAuthorit,在Network Transform->Transform Sync Mod选择Sync Transform。
在这里插入图片描述
在这里插入图片描述

2.然后在Hierarchy面板新建一个空物体命名为Network,存放Network控制组件,添加Network Manager组件和Network Manager HUD组件作为控制面板。运行即可看到网络控制面板。
在这里插入图片描述

3.点击Hierarchy面板中Network空物体,将玩家预制体拖拽到Network Manager->Spawn Info->Player Prefab中。
4.点击LAN运行即可看到自动生成玩家。
5.点击上方File->Build Settings->Build And Run创建一个新窗口。
在这里插入图片描述
6.运行本地unity选择LAN作为主机,新开窗口点击LAN Client作为客户端加入,可以看到场景内生成两个玩家预制体,但是在一端操作,另一端也会进行同样的操作。
在这里插入图片描述

7.可以看到控制玩家操作的是drive脚本,我们需要判断当前所控制的是在那个主机,剩下的所有玩家的drive脚本关闭,只保留当前控制玩家的drive脚本。
8.点击玩家预制体,关闭drive脚本。
在这里插入图片描述
9.新建SetupLocalPlayer脚本进行判断,将其挂载到player玩家预制体上。

//SetupLocalPlayer
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;

public class SetupLocalPlayer : NetworkBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        if (isLocalPlayer)//如果是本地玩家
        {
            GetComponent<drive>().enabled = true;

        }
    }
}

总结

最后可以实现简单的多人游戏互动,目前Network比较古老了,在此做一个学习记录,大家可以使用unity中新的API来实现多人联机。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jiaoooooo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值