· ☕ 1 分钟

UE编辑器下模拟使用HitProxy

需要从 UGameViewportClient 类继承

修改返回值为true,路径:\Source\Runtime\Engine\Private\GameViewportClient.h

1
virtual bool RequiresHitProxyStorage() override { return true; }

在FViewportClient类中新建DrawHitProxy函数

文件UnrealClient.h

DrawHitProxy

在GameViewportClient类中声明并且实现

声明:\Source\Runtime\Engine\Private\GameViewportClient.h

声明

GameViewportClient类中的函数Draw()内容复制到该函数DrawHitProxy,修改下面的的地方:

修改

修改FViewport类中的GetRawHitProxyData函数

GetRawHitProxyData函数中进行以下的修改:Engine\Source\Runtime\Engine\Private\UnrealClient.cpp

修改

调用–获取屏幕坐标Hitproxy

use

相关类型

HHitProxy:用于检测用户界面命中的基类

FHitProxyMap:从2D坐标到缓存命中代理的地图。


参考:

  1. How to select an actor in-game using GetHitProxy?
  2. UE4 编辑器的光标拾取
  3. 编辑器Viewport窗口中的鼠标拾取原理
  4. 场景基本对象
  5. 渲染总流程
  6. https://docs.unrealengine.com/zh-CN/Programming/Rendering/MeshDrawingPipeline/index.html
  7. Unreal Mesh Drawing源码分析
  8. 白袍笑道

分享

redisread
作者
redisread
Full Stack