Ue4

UE4のButtonのOnHoveredが呼ばれない場合

UE4のWigetのButtonに、マウスカーソルが重なったときに呼ばれるOnHoveredのデリゲートがあるが、 これはPlayerController->bShowMouseCursor=false になっていてマウスが隠れている場合呼ばれない。 Buttonの見た目も変わらない。

UE4のWidgetの位置をc++で取得する

FVector2D USTGBButton::GetSelectLocation_Implementation() const { const FTransform2D ButtonTrans_DisplaySpace = GetCachedGeometry().ToPaintGeometry().GetAccumulatedRenderTransform(); const FVector2D ButtonNW_DisplaySpace = ButtonTrans_DisplaySpace.GetTranslation(); const FTransform2D WindowTrans_DisplaySpace = OwnerWidget->GetCachedGeometry().ToPaintGeometry().GetAccumulatedRenderTransform(); const FVector2D WindowNW_DisplaySpace = WindowTrans_DisplaySpace.GetTranslation(); const FVector2D ButtonNW_CanvasSpace = ButtonNW_DisplaySpace - WindowNW_DisplaySpace; const FVector2D ButtonSize = GetCachedGeometry().ToPaintGeometry().GetLocalSize() * ButtonTrans_DisplaySpace.GetMatrix().GetScale().GetVector(); return ButtonNW_CanvasSpace + ButtonSize/2; } こんな感じで取得する。 マウス位置を取得するときはウィンドウ内の描画位置を基準とする空間なのに、 GetCachedGeometry().ToPaintGeometry().GetAccumulatedRenderTransform() で取得するウィジェット位置はディスプレイの描画位置を基準とする空間であることに注意。