快速使用unity联机方案netcode for gameobject (NGO)

NGO是unity新推出的联机解决方案,我会在接下来几章介绍如何配置NGO,以及使用NGO联机的代码知识

下载

在package manager中搜索netcode 

配置NetworkManager

创建空的游戏物体,命名NetworkManager

添加networkmanager组件,在三角形警告下方选择transport,只有一个,选就是了

创建角色预制体

创建一个游戏角色预制体,为它添加跟随相机(这个不多介绍)

添加Network object组件

添加move组件(建议复制)

using System.Collections;
using System.Collections.Generic;
using Unity.Netcode;
using UnityEngine;

public class Mover : NetworkBehaviour
{
    public float speed = .1f;
    private void Update() {
        if (!IsOwner) return;
        Vector3 moveVector = Vector3.zero;
        if (Input.GetKey(KeyCode.W)) {
            moveVector.z += 1;
        }
        if (Input.GetKey(KeyCode.S)) {
            moveVector.z -= 1;
        }
        if (Input.GetKey(KeyCode.A)) {
            moveVector.x -= 1;
        }
        if (Input.GetKey(KeyCode.D)) {
            moveVector.x += 1;
        }
        transform.position += moveVector*speed;
    }
}

将预制体拖入networkmanager的player prefeb字段

点开NetworkPrefebs List

需要在网络上同步的物体,全都要在这里注册,你也可以新建一个NetworkPrefebs List

将player 注册进去

删除场景中的Player,网络对象如果一开始就存在于场景中,那么它就不是动态生成的,这貌似是句废话,体现在unity中是这样的:运行unity,打开inspector debug模式,可以看到is Spawned字段为false,这个字段用来引用网络对象,它没有生成,不能被在Rpc中引用,我们接下来会看到。

添加UI控制

在画布上加2个按钮,添加控制脚本

using System.Collections;
using System.Collections.Generic;
using Unity.Netcode;
using UnityEngine;
using UnityEngine.UI;

public class StartMenu : MonoBehaviour {
    [SerializeField] public Button StartHost;
    [SerializeField] public Button StartClient;
    private void Awake() {
        StartHost.onClick.AddListener(() => {
            NetworkManager.Singleton.StartHost();
            gameObject.SetActive(false);
        });
        StartClient.onClick.AddListener(() => {
            NetworkManager.Singleton.StartClient();
            gameObject.SetActive(false);
        });
    }
}

Build设置

点击file->build setting->Player setting

返回buildsetting点击build,新建一个build文件夹,复制路径,选择该文件夹进行build,

黏贴路径,打开Build文件夹,运行exe文件并且运行unity

可以看到他们成功联机了,但是运动没有同步,所有同步操作需要的代码知识在另外一章

  • 10
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值