news 2026/1/24 11:32:55

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进行投诉反馈,一经查实,立即删除!
网站建设 2026/1/13 15:32:34

同步路径查找:FindPathToLocationSynchronously

函数功能概述 UNavigationSystemV1::FindPathToLocationSynchronously 是一个同步路径查找函数&#xff0c;用于在两个位置之间计算导航路径。它会在当前帧立即执行路径计算并返回结果。 参数详解 1. WorldContextObject (世界上下文对象) 类型: UObject*作用: 提供当前世界…

作者头像 李华
网站建设 2026/1/19 11:52:06

探讨IEEE39节点系统中的暂态稳定分析

IEEE39节点标准系统&#xff0c;标准算例数据&#xff0c;电源采用发电机模型&#xff0c;更能考虑完备暂态响应。这个是相量模型&#xff08;phasor&#xff09;&#xff0c;这个适合用于暂态稳定分析&#xff0c;也可以进行短路分析&#xff0c;自加风机光伏等&#xff0c;无…

作者头像 李华
网站建设 2026/1/17 7:57:46

操作教程丨搭建MaxKB图文混合文档分析工作流,轻松分析带图片的文档

MaxKB开源企业级智能体平台的高级编排中提供了文档内容提取组件&#xff0c;其主要输出的是Markerdown格式的文本内容。然而&#xff0c;当文档内嵌架构图、流程图、图表等图片信息时&#xff0c;这些视觉内容就无法被有效提取&#xff0c;导致后续大语言模型&#xff08;LLM&a…

作者头像 李华
网站建设 2026/1/19 1:37:32

探秘电机低速无感速度矢量控制:高频方波电压注入法

该模型在d轴注入高频的方波电压&#xff0c;在静止坐标下通过前后周期的电电流相应提取高频和低频电流分量&#xff0c;无需额外的数字滤波&#xff0c;得到电流误差经过锁相环PLL观测到电机的位置和速度信息&#xff0c;用于低速下的无感速度矢量控制。在电机控制领域&#xf…

作者头像 李华
网站建设 2026/1/22 15:34:38

在Lumerical FDTD中复现不对称光栅的衍射效率

Lumerical FDTD 复现不对称光栅的衍射效率最近在研究光学相关内容时&#xff0c;遇到了不对称光栅的衍射效率问题。利用Lumerical FDTD来复现这一现象&#xff0c;感觉像是在构建一个微观的光学魔法世界&#xff0c;每一个参数和设置都像是魔法咒语&#xff0c;精准地调控着光线…

作者头像 李华
网站建设 2026/1/20 17:06:27

综合能源系统零碳优化调度研究附Matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。&#x1f34e; 往期回顾关注个人主页&#xff1a;Matlab科研工作室&#x1f34a;个人信条&#xff1a;格物致知,完整Matlab代码及仿真咨询…

作者头像 李华