UE5 runtime模式下自定义视口大小和位置并跟随分辨率自适应缩放 |
您所在的位置:网站首页 › qq自适应屏幕dpi › UE5 runtime模式下自定义视口大小和位置并跟随分辨率自适应缩放 |
本文旨在解决因UI问题导致屏幕中心位置不对的问题 处理前的现象:如果四周UI透明度都为1,那么方块的位置就不太对,没在中心 .cpp // Fill out your copyright notice in the Description page of Project Settings. #include "CustomGameViewSizeSub.h" #include "UnrealClient.h" #include "Engine/Engine.h" #include "Engine/GameViewportClient.h" void UCustomGameViewSizeSub::Initialize(FSubsystemCollectionBase& Collection) { GEngine->GameViewport->Viewport->ViewportResizedEvent.AddUObject(this, &UCustomGameViewSizeSub::ViewportResize); } void UCustomGameViewSizeSub::ViewportResize(FViewport* Viewport, uint32 Size) { OnViewportResized.Broadcast(); } void UCustomGameViewSizeSub::AdjustViewportSize(FMargin margin) { UE_LOG(LogTemp, Log, TEXT(" AdjustViewportSize ")); if (GEngine->GameViewport) { FVector2D ViewportSize; GEngine->GameViewport->GetViewportSize(ViewportSize); if (ViewportSize.X > 0 && ViewportSize.Y > 0) { //视口大小缩放 GEngine->GameViewport->SplitscreenInfo[0].PlayerData[0].SizeX = margin.Right / ViewportSize.X; GEngine->GameViewport->SplitscreenInfo[0].PlayerData[0].SizeY = margin.Bottom / ViewportSize.Y; //基于视口原点偏移,原点是左上角(0,0) GEngine->GameViewport->SplitscreenInfo[0].PlayerData[0].OriginX = margin.Left / ViewportSize.X; GEngine->GameViewport->SplitscreenInfo[0].PlayerData[0].OriginY = margin.Top / ViewportSize.Y; } } }UMG设计图: 最终效果: |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |