使用HUD创建准星UI
我们的第一人称模板UI上最基础的就是我们的瞄准用的准星,而这个准星的创建我们使用了HUD类,而在这个HUD中,我们需要重写一个DrawHUD绘制函数。
在FirstProjectHUD.h中:
public:
// 构造函数
AFirstProjectHUD();
// 重写绘制函数
virtual void DrawHUD() override;
private:
// 准星图片资源
class UTexture2D* CrosshairTex;
在FirstProjectHUD.cpp中:
AFirstProjectHUD::AFirstProjectHUD(){
// 设置准星图片
static ConstructorHelpers::FObjectFinder CrosshairTexObj(TEXT("/Game/FirstPerson/Textures/FirstPersonCrosshair"));
CrosshairTex = CrosshairTexObj.Object;
}
void AFirstProjectHUD::DrawHUD(){
Super::DrawHUD();
// 绘制在屏幕中心位置
const FVector2D Center(Canvas->ClipX * 0.5f, Canvas->ClipY * 0.5f);
// 相对于中心位置的偏移量,即Y轴向上偏移20像素
const FVector2D CrosshairDrawPosition( (Center.X),(Center.Y + 20.0f));
// 开始绘制,传入的参数为绘制的位置,绘制的贴图资源,颜色
FCanvasTileItem TileItem( CrosshairDrawPosition, CrosshairTex->Resource, FLinearColor::White);
// 设置为半透明
TileItem.BlendMode = SE_BLEND_Translucent;
将这个“绘制”显示出来
Canvas->DrawItem( TileItem );
}
最后,我们只需在GameMode下指定这个HUD即可。