ue4-HUD绘制UI(C++)
来源:互联网 发布:origin多组数据作图 编辑:程序博客网 时间:2024/05/29 16:47
HUD绘制UI,其他绘制相关的接口看源码就可以使用了
创建继承自AHUD的c++类-AMyHUD,构造函数中加载一些资源
MyHUD.h
UCLASS()class MYQWE_API AMyHUD : public AHUD{ GENERATED_UCLASS_BODY()public: virtual void DrawHUD() override; //重写父类的绘制函数 void DrawMyIcons(); //绘制图片 void DrawMyItems(); //绘制文字 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "MyHUD") UTexture2D* mTexture2d; float mScaleFactor; UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "MyHUD") FCanvasIcon mIcons1; UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "MyHUD") FCanvasIcon mIcons2; UTexture2D* mTextureArrowDown; UTexture2D* mTextureArrowLeft; FCanvasIcon mAllIcons[2]; UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "MyHUD") UFont* mFont;};
MyHUD.cpp
#include "Engine/StreamableManager.h"AMyHUD::AMyHUD(const FObjectInitializer& ObjectInitializer) : Super(ObjectInitializer){ //加载资源方式1 FStreamableManager* stream = new FStreamableManager(); FStringAssetReference ref(TEXT("/Game/UI/bb")); mTexture2d = Cast<UTexture2D>(stream->SynchronousLoad(ref)); //加载资源方式2 static ConstructorHelpers::FObjectFinder<UTexture2D> TextureArrowDownOb(TEXT("/Game/UI/Arrow_Down_1")); static ConstructorHelpers::FObjectFinder<UTexture2D> TextureArrowLeftOb(TEXT("/Game/UI/Arrow_Left_2")); mTextureArrowDown = TextureArrowDownOb.Object; mTextureArrowLeft = TextureArrowLeftOb.Object; //四个float理解为Rect即可,只不过表示的是贴图中的uv坐标,而不是坐标系中xy坐标 //以像素为单位,而不是uv中的范围0-1 mAllIcons[0] = UCanvas::MakeIcon(mTextureArrowDown, 0, 0, 60, 60); mAllIcons[1] = UCanvas::MakeIcon(mTextureArrowLeft, 0, 0, 60, 60); mIcons1 = mAllIcons[0]; mIcons2 = mAllIcons[1]; //加载字体 static ConstructorHelpers::FObjectFinder<UFont> FontOb(TEXT("/Game/UI/Roboto51")); mFont = FontOb.Object;}void AMyHUD::DrawHUD(){ Super::DrawHUD(); if (!Canvas) return; mScaleFactor = Canvas->ClipY / 1080.0f; DrawMyIcons(); DrawMyItems(); Canvas->DrawText(mFont, FString(TEXT("--- DrawText")), 150.f, 150.f);}void AMyHUD::DrawMyIcons(){ const float StartX = Canvas->ClipX / 2.0f; const float StartY = Canvas->ClipY / 2.0f; for (size_t i = 0; i < 2; i++) { //使用Canvas绘制icon Canvas->DrawIcon(mAllIcons[i], StartX + 100 * i, StartY + 100 * i, mScaleFactor); }}void AMyHUD::DrawMyItems(){ FCanvasTextItem textItem = FCanvasTextItem(FVector2D::ZeroVector, FText::GetEmpty(), mFont, FLinearColor::Red); textItem.Text = FText::FromString(TEXT("--- TextItem String!")); Canvas->DrawItem(textItem, 300.f, 300.f);}
资源路径
构造中加载直接就可以在编辑器中看到
0 0
- ue4-HUD绘制UI(C++)
- ue4-UMG和HUD绘制UI
- UE4之修改C++GameMode默认的HUD
- UE4-HUD类
- UE4 坐标轴绘制
- UE4制作UI界面
- UE4-UI笔记
- UI绘制
- [unreal4入门系列之十三] UE4创建平视显示器(HUD)
- UE4里UI的使用方法
- UE4的UI制作流程
- UE4的UI制作流程
- UE4-UI设计之UMG
- Android SurfaceView 分析及 C/C++通过surface绘制UI
- HUD
- 【UE4/C++】切换镜头
- UE4 编辑器坐标轴绘制和事件处理
- ue4中使用顶点绘制材质
- Installing Imagick for PHP 7 on Windows 10
- 设计模式之单例模式
- 数据库水平切分的实现原理解析——分库,分表,主从,集群,负载均衡器(转)
- MVC(三、Razor视图引擎)
- iperf测试网络吞量
- ue4-HUD绘制UI(C++)
- CGContextAddArcToPoint和CGContextAddArc
- GraphQL : 比restful 更加灵活的 数据查询框架
- android JobService相关源码分析
- 中国省市区县行政编码处理(转存在到数据库)
- nginx+keepalived+proxy_cache配置高可用nginx群集和高速缓存
- ue4-UMG和HUD绘制UI
- Windows 安装homeassistant
- 使用Mybatis中需要注意的一些点