news 2026/5/4 7:33:28

Unity NetworkCode项目实例1

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Unity NetworkCode项目实例1

Unity NetworkCode项目实例1

  • 安装Netcode for GameObjects
    • Netcode for GameObject的三种角色
      • Host
      • Server
      • Client
    • 常用的组件
      • NetcodeManager网络管理者
      • NetcodeObject 网络物体标识
      • NetcodeTransform同步更新Transform
      • NetcodeAnimator同步更新Animator
      • ServerRPC和ClientRPC
  • 场景初始化
    • 场景初始化
      • 创建四个场景并BulidSetting
      • 对Init的布置
  • 建立连接
    • 导入字体
    • 创建SceneCtr脚本
      • 局域网联机或外网联机
      • 其他玩家加入服务器的场景
        • 更改GameManager脚本
        • 在SceneCtr脚本调用GameManager
  • 搭建游戏大厅场景
  • 实现添加本地玩家
    • 获取Canvas上的内容
  • 添加网络上的其他玩家
  • 实现数据通信、更新准备状态
    • 更新本地
  • 添加游戏角色,选择性别

安装Netcode for GameObjects

Netcode for GameObject的三种角色

Host

建立服务器,并在服务器的位置建立客户端

Server

建立服务器

Client

建立客户端

常用的组件

NetcodeManager网络管理者

NetcodeObject 网络物体标识

NetcodeTransform同步更新Transform

NetcodeAnimator同步更新Animator

需要把Animator挂载到本物体,只能同步更新本物体上的。

ServerRPC和ClientRPC


场景初始化

场景初始化

创建四个场景并BulidSetting

对Init的布置

在场景中创建两个空物体,并分别命名为GameManager和Network Manager
给NetworkManager添加NetworkManager组件,并配置
创建一个人物物体并添加组件NetwotkObject变成预制体拖给PlayerPrefab
Create->Netcode->Network Prefabs list拖到list中

###创建GameMananger脚本

voidStart(){//当加载新场景时不销毁当前场景DontDestroyOnLoad(gameObject);SceneManager.LoadScene(1);}

建立连接

AssetStore导入SharpUI GUI资源,跳过更新,导入Textures

导入字体

将.ttf后缀的拖入unity
TMP:右击->create->TextMeshPro->FontAsset

创建SceneCtr脚本

publicclassSeneceCtr:MonoBehaviour{[SerializeField]Transform_canvas;voidStart(){ButtoncreateBtn=_canvas.Find("CreateBtn").GetComponent<Button>();ButtonjoinBtn=_canvas.Find("JoinBtn").GetComponent<Button>();createBtn.onClick.AddListener(OnCreateClick);joinBtn.onClick.AddListener(OnJoinBtnClick);}//做服务器privatevoidOnCreateClick(){NetworkManager.Singleton.StartHost();}//作客户端privatevoidOnJoinBtnClick(){NetworkManager.Singleton.StartClient();}

本机地址127.0.0.1

局域网联机或外网联机

...privateTMP_InputField_ip;voidStart(){...//ip地址的输入框_ip=_canvas.Find("IP").GetComponent<TMP_InputField>();}//做服务器privatevoidOnCreateClick(){//服务器使用的传输主机vartransport=NetworkManager.Singleton.NetworkConfig.NetworkTransportasUnityTransport;//设置IP和端口信息transport.SetConnectionData(_ip.text,777);...}//作客户端privatevoidOnJoinBtnClick(){vartransport=NetworkManager.Singleton.NetworkConfig.NetworkTransportasUnityTransport;transport.SetConnectionData(_ip.text,777);...}

其他玩家加入服务器的场景

更改GameManager脚本
publicclassGameManager:NetworkBehaviour{publicstaticGameManagerInstance;voidStart(){Instance=this;...}publicvoidLoadScene(stringsceneName){//网络加载场景,其他玩家加入房间进入服务器可以加载他所在的场景NetworkManager.SceneManager.LoadScene(sceneName,LoadSceneMode.Single);}
在SceneCtr脚本调用GameManager
privatevoidOnCreateClick(){...//Lobby是场景名GameManager.Instance.LoadScene("Lobby");}

搭建游戏大厅场景

实现添加本地玩家

获取Canvas上的内容

1、创建LobbyCtrl脚本控制游戏界面

publicclassLobbyCtrl:NetworkBehaviour{[SerializeField]privateTransform_canvas;privateTransform_content;privateGameObject_originCell;privateButton_starBtn
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/4 7:33:28

XUnity AutoTranslator完整指南:让所有Unity游戏都变成你的母语版

XUnity AutoTranslator完整指南&#xff1a;让所有Unity游戏都变成你的母语版 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator 你是否曾经面对一款心仪的外语游戏&#xff0c;却被复杂的日文菜单、英文剧情…

作者头像 李华
网站建设 2026/5/4 7:32:29

如何用YOLOv3模型剪枝技术实现80%压缩率:完整实践指南

如何用YOLOv3模型剪枝技术实现80%压缩率&#xff1a;完整实践指南 【免费下载链接】YOLOv3-model-pruning 在 oxford hand 数据集上对 YOLOv3 做模型剪枝&#xff08;network slimming&#xff09; 项目地址: https://gitcode.com/gh_mirrors/yo/YOLOv3-model-pruning Y…

作者头像 李华
网站建设 2026/5/4 7:30:53

MMGeneration生态系统:与OpenMMLab其他工具的完美集成

MMGeneration生态系统&#xff1a;与OpenMMLab其他工具的完美集成 【免费下载链接】mmgeneration MMGeneration is a powerful toolkit for generative models, based on PyTorch and MMCV. 项目地址: https://gitcode.com/gh_mirrors/mm/mmgeneration MMGeneration是基…

作者头像 李华
网站建设 2026/5/4 7:30:52

Android 圆角进度条终极指南:RoundedProgressBar 完全教程

Android 圆角进度条终极指南&#xff1a;RoundedProgressBar 完全教程 【免费下载链接】RoundedProgressBar A customizable, animated progress bar that features rounded corners. This Android library is designed to look great and be simple to use &#x1f389; 项…

作者头像 李华
网站建设 2026/5/4 7:23:40

Enjarify终极指南:如何将Android APK逆向为可读Java字节码

Enjarify终极指南&#xff1a;如何将Android APK逆向为可读Java字节码 【免费下载链接】enjarify 项目地址: https://gitcode.com/gh_mirrors/en/enjarify Enjarify是一款强大的工具&#xff0c;能够将Android应用的Dalvik字节码转换为等效的Java字节码&#xff0c;让J…

作者头像 李华
网站建设 2026/5/4 7:22:50

数学问题求解的验证与改进策略

1. 数学问题求解的本质与挑战数学问题求解从来都不是一蹴而就的过程。我在大学任教和参与数学建模竞赛评审的十多年里&#xff0c;见过太多学生和参赛者陷入"解出来就万事大吉"的误区。实际上&#xff0c;一个完整的数学求解过程包含三个关键阶段&#xff1a;初步求解…

作者头像 李华