当前位置: 首页 > news >正文

二、局域网联机

目录

1.下载资源包 

2.配置NetworkManager

3.编写测试UI


1.下载资源包 

2.配置NetworkManager

(1)在Assets/Prefabs下创建Network Prefabs List

相应设置如下: 

(2) 创建空物体“NetworkManager”并挂载NetworkManager组件。相应设置如下:

(3) 选择Player预制体并挂载组件Network Object

(4)在Asset/Scripts/目录下创建Network目录并创建并编写ClientNetworkTransform.cs,使Client可控制transform的属性,将其挂载至Player预制体

using Unity.Netcode.Components;
using UnityEngine;namespace Unity.Multiplayer.Samples.Utilities.ClientAuthority
{[DisallowMultipleComponent]public class ClientNetworkTransform : NetworkTransform{protected override bool OnIsServerAuthoritative(){return false;}}
}

并进行如下设置

(5) 选择Player预制体并挂载组件Network Rigidbody

(6)将原有的Main Camera重命名(F2)为SceneCamera,并将其Tag设置为MainCamera

(7)在Player预制体上创建并编写PlayerSetup.cs,使游戏只接收本地输入

using UnityEngine;
using Unity.Netcode;public class PlayerSetup : NetworkBehaviour
{[SerializeField] private Behaviour[] componentsToDisable;[SerializeField] private Camera sceneCamera;// Start is called before the first frame updatevoid Start(){if (!IsLocalPlayer){for (int i = 0; i < componentsToDisable.Length; i++){componentsToDisable[i].enabled = false;}}else{sceneCamera=Camera.main;if (Camera.main != null){sceneCamera.gameObject.SetActive(false);}}}private void OnDisable(){sceneCamera.gameObject.SetActive(true);}
}

 并对其进行如下设置

将其移动至Assets/Scripts/Player目录下 

3.编写测试UI

(1)创建Canvas并将其命名为MenuUI,并在其内部创建3个Button并分别命名为Host,Server以及Client。Hierarchy中的物体结构和UI布局如下:

 

(2)在NetworkManager上创建并编写NetworkManageUI.cs,编写按钮逻辑

using Unity.Netcode;
using UnityEngine;
using UnityEngine.UI;public class NetworkManagerUI : MonoBehaviour
{[SerializeField] private Button hostBtn;[SerializeField] private Button serverBtn;[SerializeField] private Button clientBtn;// Start is called before the first frame updatevoid Start(){hostBtn.onClick.AddListener(() =>{NetworkManager.Singleton.StartHost();});serverBtn.onClick.AddListener(() =>{NetworkManager.Singleton.StartServer();});clientBtn.onClick.AddListener(() =>{NetworkManager.Singleton.StartClient();});}
}
http://www.lryc.cn/news/179588.html

相关文章:

  • 决策树剪枝:解决模型过拟合【决策树、机器学习】
  • Ubuntu部署运行ORB-SLAM2
  • 二十,镜面IBL--打印BRDF积分贴图
  • 自动驾驶:未来的道路上的挑战与机遇
  • Go 语言 iota 的神奇力量
  • 前端开发和后端开发的一些建议
  • 基于 SpringBoot+Vue 的教室人事档案管理系统
  • Lua学习笔记:require非.lua拓展名的文件
  • Python 编程基础 | 第三章-数据类型 | 3.3、浮点数
  • beego---ORM相关操作
  • 【网络原理】初始网络,了解概念
  • 对象存储,从单机到分布式的演进
  • 结构型设计模式——桥接模式
  • keepalived的vip实现nginx节点的主备
  • C++之std::atomic解决多线程7个问题(二百四)
  • tailwindcss 如何在 uniapp 中使用
  • oracle-使用PLSQL工具自行修改用户密码
  • 自动驾驶技术:现状与未来
  • C++ 类构造函数 析构函数
  • C++标准模板(STL)- 输入/输出操纵符-(std::get_time,std::put_time)
  • 蓝桥等考Python组别九级004
  • gitee 远程仓库操作基础(二)
  • Scala第四章节
  • 【C++入门指南】类和对象(上)
  • web:[极客大挑战 2019]PHP
  • Firefox 开发团队对 Vue 3 进行优化效果显著
  • 【Verilog 教程】6.5 Verilog避免Latch
  • 怒刷LeetCode的第21天(Java版)
  • Armv9 Cortex-A720的L2 memory system 和 L2 Cache
  • 蓝桥等考Python组别九级003