码迷,mamicode.com
首页 > 其他好文 > 详细

区分服务器和客户端,玩家的控制权

时间:2020-07-03 19:07:40      阅读:57      评论:0      收藏:0      [点我收藏+]

标签:inf   client   tick   real   使用   cli   逻辑   png   eve   

在蓝图中有一个区分服务器和客户端的宏: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

区分服务器和客户端,玩家的控制权

标签:inf   client   tick   real   使用   cli   逻辑   png   eve   

原文地址:https://www.cnblogs.com/fuhaiqing/p/13228541.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!