unity多人同步联机——玩家位置(Netcode for GameObjects)

这篇具有很好参考价值的文章主要介绍了unity多人同步联机——玩家位置(Netcode for GameObjects)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

unity同步基础S/C

unity多人同步联机——玩家位置(Netcode for GameObjects)

unity多人同步联机——玩家位置(Netcode for GameObjects)unity多人同步联机——玩家位置(Netcode for GameObjects) 

unity多人同步联机——玩家位置(Netcode for GameObjects)

unity多人同步联机——玩家位置(Netcode for GameObjects)

unity多人同步联机——玩家位置(Netcode for GameObjects)

 安装上述插件unity多人同步联机——玩家位置(Netcode for GameObjects)

新建空组件添加NetworkManager,设定希望生成物体的预设体 

unity多人同步联机——玩家位置(Netcode for GameObjects)

 仅需为一个player绑定唯一id,其下所有组件共享一个id

unity多人同步联机——玩家位置(Netcode for GameObjects)

为其添加NetworkRigidbody和Transform(传递需要同步的属性)组件unity多人同步联机——玩家位置(Netcode for GameObjects)

同时开启多个窗口,会出现多个角色,但是所有角色会共同移动

因为包含共同组建,所有组件的数值相同,所以,在A中需要禁用所有B中的组件

故,仅保存本地玩家摄像机,输入与监听,网络玩家的全部禁用

注:此时不能因为player并非场景中组件,故camera只能利用标签获取

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

public class PlayerSetup : NetworkBehaviour
{
    [SerializeField]
    private Behaviour[] componentsToDisable;

    private Camera sceneCamera;

    // Start is called before the first frame update
    void Start()
    {
        //非本地玩家组件禁用
        if(!IsLocalPlayer)
        {
            for (int i = 0; i < componentsToDisable.Length; i++) 
            {
                //禁用组件
                componentsToDisable[i].enabled = false;
            }
        }else
        {
            //获取maincamera
            sceneCamera= Camera.main;
            if (sceneCamera != null) 
            {
                sceneCamera.gameObject.SetActive(false);
            }
        }
    }

    // Update is called once per frame
    private void OnDisable()
    {
        if(sceneCamera!= null)
        {
            sceneCamera.gameObject.SetActive(true);
        }
    }
}

unity多人同步联机——玩家位置(Netcode for GameObjects)

 unity默认禁用Client的操作,重写client方法

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

namespace Unity.Multiplayer.Samples.Utilities.ClientAuthority
{
    [DisallowMultipleComponent]

    public class ClientNetworkTransform:NetworkTransform
    {
        //重载是否只能在服务器端授权的函数:false
        protected override bool OnIsServerAuthoritative()
        {
            return false;
        }
    }
}

unity多人同步联机——玩家位置(Netcode for GameObjects)

 删除player中的NetworkTransform与Rigidbody,camera中的NetworkTransform

unity多人同步联机——玩家位置(Netcode for GameObjects)

camera与player添加ClientNetworkTransform(rigidbody)文章来源地址https://www.toymoban.com/news/detail-495484.html

到了这里,关于unity多人同步联机——玩家位置(Netcode for GameObjects)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Unity之NetCode多人网络游戏联机对战教程(1)

    官网链接:https://docs-multiplayer.unity3d.com/netcode/current/about/ Netcode for GameObjects(NGO)是专为Unity构建的高级网络库。它能够在网络会话中将 GameObject 和 世界数据 同时发送给多名玩家。使用NGO不必关心低级协议和网络框架。 打开一个unity项目,在菜单栏中选择 Window Package Manager

    2024年02月07日
    浏览(42)
  • Unity之NetCode多人网络游戏联机对战教程(4)--连接申请ConnectionApproval

    没看过前面的教程请先阅读前面的教程,本期将会讲到Netcode联机的申请,当一个Client想连接进来,应向Server发送申请联机的信息,然后由服务端向客户端下发数据,所有数据应该在服务端,而不是在客户端。 举几个常见的例子需要用到 ConnectionApproval 的场景 使用密码加入房

    2024年02月03日
    浏览(44)
  • Unity多人联机的实现

    实现多人联机的方法有几种,具体取决于你的具体需求。以下是一些选项: Unity Multiplayer:Unity有自己的内置网络解决方案,称为Unity Multiplayer(以前称为UNET)。这允许您创建可以在互联网或本地网络上玩的多人游戏。您可以在官方Unity文档中找到有关Unity Multiplayer的更多信息

    2024年02月11日
    浏览(42)
  • 在Unity中使用Photon(网络多人联机)

    photon官网地址

    2024年02月04日
    浏览(29)
  • unity使用PhotonEngine实现多人联机游戏开发(一)

    先来了解一下PhotonEngine(光子引擎),这是德国ExitGame公司开发的网络引擎,photonengine简单易上手,很多游戏公司开发的网络游戏都是使用的这个。这个网络引擎里面包括了PhotonCloud(光子云)、photonServer(光子服务器)、PhotonQuantum(确定性量子引擎)、PhotonVoice(光子语音)

    2024年02月07日
    浏览(40)
  • unity netcode for gameobject(NGO)逻辑代码教程

    本文均为作者摸索得出的经验,主要介绍制作联机游戏的逻辑代码,比如生成/销毁物体,逻辑同步等。以下内容仅仅是NGO的冰山一角,用于快速开发联机内容,我会在以后的文章里更新NGO类型的详细介绍 作者的信息源: youtube code monkeyLearn Unity Multiplayer (FREE Complete Course, Net

    2024年02月04日
    浏览(38)
  • unity多人联机(Mirror插件)有史以来最全的基础教程(附加报错提示和官方手册修改)

    目录 START👀 (☞゚ヮ゚)☞Mirror简介☜(゚ヮ゚☜) 组件介绍: 组件1:NetworkManager 组件2:NetworkManagerHUD(需要配合Network Manager组件) 组件3:NetworkIdentity 组件4:network discoverynetwork discoveryHUD 错误注意: 最后,对手册内容的一点修改: 今天我们只讲代码和组件,大家拿小本本记好了,字

    2024年02月02日
    浏览(33)
  • Unity 使用Camera制作小地图显示,玩家可通过点击小地图到达任意位置

    创建小地图显示的方法很多,各有千秋,最近项目需要用到小地图实时显示玩家的位置,并且玩家可通过点击小地图跳转到所点击的位置,因前期偷懒没有只考虑了显示玩家的位置并没有考虑小地图的可点击的情况,后来通过判断鼠标的位置来解决了这个问题,所以再次记录

    2024年02月05日
    浏览(28)
  • Unity进阶–通过PhotonServer实现人物选择和多人同步–PhotonServer(四)

    服务端结构如下: UserModel Messaage PSPeer UserBLL BLLManager UserDAL DALManager 客户端页面 绑在panel上 后台持续运行 建一个usermanager,绑定以下脚本 给物体上绑定 别忘了按钮绑定

    2024年02月12日
    浏览(24)
  • 项目实训--Unity多人游戏开发(十一、PUN框架--游戏场景篇(加载与同步))

    本地加载 有许多方法,举几个例子: 本地加载 本地异步加载(场景内容过多时,防止卡顿异步加载) 多人游戏加载场景 pun2插件加载 这个异步加载起初是觉得场景内容如果过多会引起卡顿。所以把这个应用在了单机模式上。 至于多人游戏加载场景,可能用不到而且也没法

    2024年02月01日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包