news 2025/12/25 8:05:30

UnrealEngine中角色类型判断方法

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
UnrealEngine中角色类型判断方法

角色类型判断方法

在Unreal Engine的网络架构中:

  1. 专用服务器(Dedicated Server):所有角色都有控制器(AI控制器或玩家控制器)
  2. 监听服务器(Listen Server):服务器同时也是一个客户端
  3. 客户端(Client):只有本地控制的角色有玩家控制器

正确的判断逻辑

voidUTargetDataUnderMouse::DetermineCharacterType(){if(AActor*AvatarActor=GetAvatarActor()){ENetRole LocalRole=AvatarActor->GetLocalRole();boolbHasAuthority=AvatarActor->HasAuthority();boolbIsLocallyControlled=false;if(APawn*Pawn=Cast<APawn>(AvatarActor)){bIsLocallyControlled=Pawn->IsLocallyControlled();}// 正确的判断逻辑:if(bHasAuthority){// 服务器端角色(专用服务器或监听服务器)if(bIsLocallyControlled){// 监听服务器:服务器同时是本地客户端UE_LOG(LogTemp,Warning,TEXT("监听服务器 - 本地控制角色"));}else{// 专用服务器:服务器端AI控制或远程玩家角色UE_LOG(LogTemp,Warning,TEXT("专用服务器 - 服务器端角色"));}}else{// 客户端if(bIsLocallyControlled){// 客户端本地控制的角色UE_LOG(LogTemp,Warning,TEXT("客户端 - 本地控制角色"));}else{// 客户端远程玩家控制的角色UE_LOG(LogTemp,Warning,TEXT("客户端 - 远程控制角色"));}}}}

更精确的专用服务器判断

voidUTargetDataUnderMouse::CheckForDedicatedServer(){if(AActor*AvatarActor=GetAvatarActor()){// 判断是否是专用服务器环境boolbIsDedicatedServer=IsRunningDedicatedServer();// 或者通过World判断UWorld*World=GetWorld();if(World){ENetMode NetMode=World->GetNetMode();bIsDedicatedServer=(NetMode==NM_DedicatedServer);}if(bIsDedicatedServer){// 专用服务器环境if(AvatarActor->HasAuthority()){UE_LOG(LogTemp,Warning,TEXT("专用服务器 - 权威角色"));}}}}

在TargetDataUnderMouse中的实际应用

在你的代码中,可以在以下关键位置进行判断:

voidUTargetDataUnderMouse::SendMouseCursorData(){// 只在本地控制的客户端发送鼠标数据if(AActor*AvatarActor=GetAvatarActor()){if(APawn*Pawn=Cast<APawn>(AvatarActor)){if(!Pawn->IsLocallyControlled()){// 不是本地控制的角色,不发送鼠标数据return;}}// 继续发送鼠标数据的逻辑...}}

关键概念澄清

  • 专用服务器(Dedicated Server)NetMode == NM_DedicatedServer
  • 监听服务器(Listen Server)NetMode == NM_ListenServer
  • 权威控制(Authority)HasAuthority() == true
  • 本地控制(Locally Controlled)IsLocallyControlled() == true

总结

正确的判断流程应该是:

  1. 先判断网络模式(专用服务器/监听服务器/客户端)
  2. 再判断权威性(HasAuthority()
  3. 最后判断本地控制(IsLocallyControlled()

这样就能准确区分各种情况下的角色类型了。感谢你的指正!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2025/12/18 23:43:36

时序数据选型、存储模型与选型

时序数据选型、存储模型与选型 一、时序数据的特征与挑战 时间戳驱动&#xff1a;数据天然带有时间维度&#xff0c;典型场景包括监控指标、传感器采集、交易日志。高吞吐写入&#xff1a;数据持续产生&#xff0c;要求数据库具备批量写入与乱序处理能力。查询模式特殊&#xf…

作者头像 李华
网站建设 2025/12/18 23:43:21

基于微信小程序的家政服务系统

博主介绍&#xff1a;java高级开发&#xff0c;从事互联网行业六年&#xff0c;熟悉各种主流语言&#xff0c;精通java、python、php、爬虫、web开发&#xff0c;已经做了多年的设计程序开发&#xff0c;开发过上千套设计程序&#xff0c;没有什么华丽的语言&#xff0c;只有实…

作者头像 李华
网站建设 2025/12/18 23:43:06

MindSpore高效训练指南:从数据流水线到混合精度实战

在昇腾&#xff08;Ascend&#xff09;NPU上进行深度学习模型训练时&#xff0c;我们经常会遇到GPU转NPU的代码迁移问题&#xff0c;或者发现算力虽然强劲&#xff0c;但训练速度受限于IO或显存。作为一名在昇腾生态摸爬滚打的开发者&#xff0c;今天我想分享几个基于MindSpore…

作者头像 李华
网站建设 2025/12/18 23:42:00

两阶段鲁棒优化在主动配电网动态无功优化中的实践

两阶段鲁棒优化的主动配电网动态无功优化 关键词&#xff1a;两阶段鲁棒优化&#xff0c;CCG算法&#xff0c;储能 仿真算例采用33节点&#xff0c;采用matlabyalmipcplex编写&#xff0c;两阶段模型采用CCG算法求解。 模型中一阶段变量主要包括01变量和无功优化变量&#xff0…

作者头像 李华
网站建设 2025/12/18 23:41:51

探索 DSPLLC 开关电源模块设计的宝藏世界

DSPLLC开关电源模块设计资料DSP数字LLC电源源代码原理图软件学习&#xff0c;包含磁件设计、软件设计报告、硬件设计报告、硬件原理、主功率计算书、LLC环路设计、仿真、BOM、使用说明&#xff0c;调试波形等全面且详细的全套资料最近在研究电源相关的技术&#xff0c;发现了一…

作者头像 李华
网站建设 2025/12/18 23:41:12

基于推荐算法的校园电子图书听书系统

Spring Boot基于推荐算法的校园电子图书听书系统是一个专为校园师生设计的数字化阅读平台。以下是对该系统的详细介绍&#xff1a; 一、系统背景与目的 随着信息技术的不断发展&#xff0c;数字化阅读已经成为校园阅读的新趋势。为了满足校园师生对电子图书和听书资源的需求&am…

作者头像 李华