为方便起见,都是用全局函数和变量,而不是在类中实现
代码如下:
FDelegateHandle GCaptureHandle;
static void OnCaptureScreenshotComplete(int32 InWidth, int32 InHeight, const TArray<FColor>& InColors)
{
FString ScreenShotName = FPaths::GameSavedDir() + TEXT("ScreenShot.png");
TArray<uint8> CompressedBitmap;
FImageUtils::CompressImageArray(InWidth, InHeight, InColors, CompressedBitmap);
FFileHelper::SaveArrayToFile(CompressedBitmap, *ScreenShotName);
UGameViewportClient::OnScreenshotCaptured().Remove(GCaptureHandle);
}
void CaptureScreenshot()
{
if (GEngine && GEngine->GameViewport)
{
GCaptureHandle = UGameViewportClient::OnScreenshotCaptured().AddStatic(&OnCaptureScreenshotComplete);
GEngine->GameViewport->Exec(nullptr, TEXT("HighResShot 1080x720"), *GLog);//分辨率可自己设定
}
}
图片保存为png格式,如果想保存为jpg格式,可改为如下代码:
stati