当前位置:   article > 正文

快速使用unity联机方案netcode for gameobject (NGO)_unitynetcode一定要都在一个场景中吗

unitynetcode一定要都在一个场景中吗

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

下载

在package manager中搜索netcode 

配置NetworkManager

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

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

创建角色预制体

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

添加Network object组件

添加move组件(建议复制)

  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using Unity.Netcode;
  4. using UnityEngine;
  5. public class Mover : NetworkBehaviour
  6. {
  7. public float speed = .1f;
  8. private void Update() {
  9. if (!IsOwner) return;
  10. Vector3 moveVector = Vector3.zero;
  11. if (Input.GetKey(KeyCode.W)) {
  12. moveVector.z += 1;
  13. }
  14. if (Input.GetKey(KeyCode.S)) {
  15. moveVector.z -= 1;
  16. }
  17. if (Input.GetKey(KeyCode.A)) {
  18. moveVector.x -= 1;
  19. }
  20. if (Input.GetKey(KeyCode.D)) {
  21. moveVector.x += 1;
  22. }
  23. transform.position += moveVector*speed;
  24. }
  25. }

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

点开NetworkPrefebs List

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

将player 注册进去

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

添加UI控制

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

  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using Unity.Netcode;
  4. using UnityEngine;
  5. using UnityEngine.UI;
  6. public class StartMenu : MonoBehaviour {
  7. [SerializeField] public Button StartHost;
  8. [SerializeField] public Button StartClient;
  9. private void Awake() {
  10. StartHost.onClick.AddListener(() => {
  11. NetworkManager.Singleton.StartHost();
  12. gameObject.SetActive(false);
  13. });
  14. StartClient.onClick.AddListener(() => {
  15. NetworkManager.Singleton.StartClient();
  16. gameObject.SetActive(false);
  17. });
  18. }
  19. }

Build设置

点击file->build setting->Player setting

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

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

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/116540?site
推荐阅读
相关标签
  

闽ICP备14008679号