区分服务器和客户端,玩家的控制权
Posted 疯狂的凑脚丫
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了区分服务器和客户端,玩家的控制权相关的知识,希望对你有一定的参考价值。
在蓝图中有一个区分服务器和客户端的宏: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
以上是关于区分服务器和客户端,玩家的控制权的主要内容,如果未能解决你的问题,请参考以下文章