当前位置: 首页 > news >正文

济南行知网站建设有限公司怎么样网站开发有哪些方式

济南行知网站建设有限公司怎么样,网站开发有哪些方式,北京公司买房,移动互联网开发专业就业方向断线重连的整体逻辑是 设备离线后,根据需要决定是否保留pawn,还是设备重连后再重新生成一个,然后是断线重连时的验证方式,最后是playerstate重连后的属性保留 重载Playercontroller的PawnLeavingGame,这里是设备断线后&#xff0…

断线重连的整体逻辑是 设备离线后,根据需要决定是否保留pawn,还是设备重连后再重新生成一个,然后是断线重连时的验证方式,最后是playerstate重连后的属性保留

  1. 重载Playercontroller的PawnLeavingGame,这里是设备断线后,不会删除pawn,根据自己的需求决定是否需要修改,如果不需要保存pawn,没有必要重载该函数。
void AMVNControllerBase::PawnLeavingGame()
{if (GetPawn() != NULL){//GetPawn()->Destroy();//SetPawn(NULL);}
}

2.如果要保留pawn的话,可以重载GameMode的AddInactivePlayer,这个函数原本是保留断线的playerstate的,如果也要保留pawn的话,可以在这个函数里参照保留PlayerState的方式,保存pawn,如果不需要保存pawn,没有必要重载该函数。

void AVTTSGameModeBase::AddInactivePlayer(APlayerState* PlayerState, APlayerController* PC)
{check(PlayerState)UWorld* LocalWorld = GetWorld();// don't store if it's an old PlayerState from the previous level or if it's a spectator... or if we are shutting downif (!PlayerState->IsFromPreviousLevel() && !MustSpectate(PC) && !LocalWorld->bIsTearingDown){APlayerState* const NewPlayerState = PlayerState->Duplicate();APawn* PolicePawn = PC->GetPawn();if (NewPlayerState && PolicePawn){// Side effect of Duplicate() adding PlayerState to PlayerArray (see APlayerState::PostInitializeComponents)GameState->RemovePlayerState(NewPlayerState);// make PlayerState inactiveNewPlayerState->SetReplicates(false);// delete after some timeNewPlayerState->SetLifeSpan(InactivePlayerStateLifeSpan);//设置自动删除的时间PolicePawn->SetLifeSpan(InactivePlayerStateLifeSpan);// On console, we have to check the unique net id as network address isn't validconst bool bIsConsole = !PLATFORM_DESKTOP;// Assume valid unique ids means comparison should be via this methodconst bool bHasValidUniqueId = NewPlayerState->GetUniqueId().IsValid();// Don't accidentally compare empty network addresses (already issue with two clients on same machine during development)const bool bHasValidNetworkAddress = !NewPlayerState->SavedNetworkAddress.IsEmpty();const bool bUseUniqueIdCheck = bIsConsole || bHasValidUniqueId;// make sure no duplicatesfor (int32 Idx = 0; Idx < InactivePlayerArray.Num(); ++Idx){APlayerState* const CurrentPlayerState = InactivePlayerArray[Idx];if ((CurrentPlayerState == nullptr) || CurrentPlayerState->IsPendingKill()){// already destroyed, just remove itInactivePlayerArray.RemoveAt(Idx, 1);InactivePawnArray.RemoveAt(Idx, 1);Idx--;}else if ((!bUseUniqueIdCheck && bHasValidNetworkAddress && (CurrentPlayerState->SavedNetworkAddress == NewPlayerState->SavedNetworkAddress))|| (bUseUniqueIdCheck && (CurrentPlayerState->GetUniqueId() == NewPlayerState->GetUniqueId()))){// destroy the playerstate, then remove it from the trackingCurrentPlayerState->Destroy();InactivePlayerArray.RemoveAt(Idx, 1);InactivePawnArray.RemoveAt(Idx, 1);  //保存角色Idx--;}}InactivePlayerArray.Add(NewPlayerState);InactivePawnArray.Add(PolicePawn);// make sure we dont go over the maximum number of inactive players allowedif (InactivePlayerArray.Num() > MaxInactivePlayers){int32 const NumToRemove = InactivePlayerArray.Num() - MaxInactivePlayers;// destroy the extra inactive playersfor (int Idx = 0; Idx < NumToRemove; ++Idx){APlayerState* const PS = InactivePlayerArray[Idx];if (PS != nullptr){PS->Destroy();}}// and then remove them from the tracking arrayInactivePlayerArray.RemoveAt(0, NumToRemove);InactivePawnArray.RemoveAt(0, NumToRemove);}}}
}
  1. 同理如果需要重新获得之前保留的pawn的话,重载gamemode的restartPlayerAtPlayerStart,默认的话是直接生成新的pawn,如果你想直接使用就的pawn修改响应的逻辑
  2. 重载时设备的验证,GameMode的FindInactivePlayer函数,默认设备重连时会比较网络的UniqueId,如果一致那么会复制原本的设备的playerstate数据,但是如果你的客户端设备经过重启的话,是会识别成新的客户端,所以根据需要自己去决定是否修改验证方式。
  3. 重载PlayerState的CopyProperties,将你自定义的变量进行重新复制

以上就是断线重连基本的涉及的函数了,这一切的前提是gamemode必须继承自AGameMode,然后如果你没有保留pawn,或者自己验证重新登录逻辑的话,只需要修改第5条对应的内容就可以实现断线重连了

http://www.yayakq.cn/news/818068/

相关文章:

  • 网站备案找谁大搜推广
  • 电商网站 设计信息流优化
  • 铁建设文件在什么网站下载福州企业宣传片制作公司
  • 大庆 网站制作sns有哪些著名的网站有哪些
  • 华艺网络网站开发小说分销平台
  • 在建项目人员查询网站一个人开发app能赚钱吗
  • 网站建设要在哪学外贸网络营销如何做
  • 无版权图片做网站外贸找客户平台
  • 璧山网站建设标志空间 网站
  • 做渔具网站罗湖网站(建设深圳信科)
  • 系统开发生命周期法的优点表现南京seo培训
  • 运城网站建设专业服务商素材网哪个好
  • 网站建设中网站需求分析山西建设厅网站2016年3号
  • 北京免费模板建站汕头网页搜索排名提升
  • 网站搜索不到公司网站域名备案网站建设方案书
  • 做网站推广好做么东莞保安招聘网
  • 企业网站的推广方法商户网站建设
  • 商城型网站怎么做优化成品网站价格表
  • 网站域名去哪买深圳网站建设空间
  • seo竞价网站建设工程人才招聘网
  • 深圳网站建设qwyx100如何查公司名字是否被注册
  • 网站建设方案概念微商建立网站
  • 提高网站建设水平网站语言切换前端可以做么
  • 做彩铃网站罗湖商城网站建设找哪家公司好
  • 网站开发和嵌入式开发简单的网站设计
  • 帝国网站制作广告上海闵行区天气预报
  • 网站网站做维护wordpress多级筛选
  • 金华建设公司网站wordpress配置网络
  • 购物网站模板代码框架型网站
  • 杭州西湖区做网站网站的目标