zoukankan      html  css  js  c++  java
  • 区分服务器和客户端,玩家的控制权

    在蓝图中有一个区分服务器和客户端的宏:SwitchHasAuthority

    宏里判断了Server和Client

     FORCEINLINE_DEBUGGABLE bool AActor::HasAuthority()const

    {

    return (Role == ROLE_Authority);       //为真就表示是Server控制的角色,说明这个东西实在服务器上的;

    }

    引擎的EegineTypes.h有角色代理类型的枚举

    同步:

    物体(Actor)有一个复制属性,若为Ture则表是该物体可以进行网络复制,同步到其他Client。

     

     如果要实现Actor的网络同步,则Replicates必须为Ture,且需要在Sercer端执行逻辑。

    Acotr在Server端和Client的表现大概有:以生成一个物体为例

    Replicates == Ture

    1.在某Client调用本地执行的逻辑本地会生成一个物体,则其他Client端和Server端不会生成物体;

    2.某Client在本地向Server端发起请求生成一个物体,在Server上生成一个物体,则Server和所有Client都会生成物体;

    Replicates == False

    1.在某Client调用本地执行的逻辑本地会生成一个物体,则其他Client端和Server端不会生成物体;

    2.某Client在本地向Server端发起请求生成一个物体,在Server上生成一个物体,所有Client都不会生成物体;

    通常使用的EventBeginPlay生成物体其实在Server和Client都生成了一个

     

    Server和Client都不会有物体生成:

    5键是在本地执行的,按下后本地的值为Ture,Tick事件会在Client和Server都调用,所以所以Tick可以看作

    Server调用:Server端的值还是False,不执行后面逻辑

    Client调用:在Switch。。处停止

    Owner:

    链接:      https://api.unrealengine.com/CHN/Gameplay/Networking/Actors/OwningConnections/index.html

  • 相关阅读:
    js 把数组中每个元素的某个字段取出
    vue 实现单选/多选效果
    js常用的array方法
    js的split()和join()的用法
    HTML 转 PDF 之 wkhtmltopdf
    微信小程序api封装(promise)
    常用的正则表达式
    更改MySQL的存储目录
    CentOS 6.X 安装VirtualBox-5.1
    CentOS 6.X 安装VNC Server实现图形化访问
  • 原文地址:https://www.cnblogs.com/fuhaiqing/p/13228541.html
Copyright © 2011-2022 走看看