¾ð¸®¾ó ¸ÓƼ¸®¾óÀ» ÀÌ¿ëÇØ UMG UImage¸¦ ¸¶½ºÅ· Çغ¸ÀÚ. »¡°£ »ç°¢Çü ¾ÈÀÇ Å¸¿øÇü À̹ÌÁö°¡ ¸¶½ºÅ·ÀÌ µÈ ½ÇÇà ȸéÀÌ´Ù. "Button1"À» Ŭ¸¯Çϸé UTexture2DDynamic À̹ÌÁö·Î ¹Ù²ï´Ù. "Button2"¸¦ Ŭ¸¯Çϸé UTexture2D À̹ÌÁö·Î ¹Ù²ï´Ù. UTexture2DDynamic À̹ÌÁö´Â À¥¿¡¼ ´Ù¿î·Îµå ¹ÞÀº À̹ÌÁö°í UTexture2D À̹ÌÁö´Â ¸®¼Ò½º À̹ÌÁöÀÌ´Ù. ¸ÓƼ¸®¾ó ¸¸µé±âmask ÅؽºÃĸ¦ ÀÌ¿ëÇØ ÅؽºÃĸ¦ ¸¶½ºÅ· ÇÑ´Ù.¸ÓƼ¸®¾ó À̸§Àº "M_ui_mask"·Î ÇÑ´Ù. µÎ°³ÀÇ "Texture Sample"À» "ÆĶó¹ÌÅÍ·Î º¯È¯"À» ÀÌ¿ëÇÏ¿© °¢°¢ BaseTexture, MaskTexture·Î º¯È¯ÇÑ´Ù. ÆĶó¹ÌÅÍ·Î º¯È¯ÇÏ´Â ÀÌÀ¯´Â ¹öÆ° Ŭ¸¯½Ã ÅؽºÃĸ¦ ¹Ù²Ù±â À§ÇؼÀÌ´Ù. Äڵ忡¼´Â UMaterialInstanceDynamic::SetTextureParameterValue ÇÔ¼ö¸¦ ÀÌ¿ëÇØ ¹Ù²Û´Ù. ¸ÓƼ¸®¾ó À̸§Àº M_ui_mask·Î ÇÑ´Ù. UImage¿¡ ¸ÓƼ¸®¾ó Àû¿ëUImage À§µåÁ¬ÀÎ Image_pictureÀÇ µðÅ×ÀÏ > Brush > Image¿¡ ¸ÓƼ¸®¾ó "M_ui_mask"·Î ÁöÁ¤ÇÑ´Ù.UImageÀÇ Image´Â ÅؽºÃÄ »Ó¸¸ ¾Æ´Ï¶ó ¸ÓƼ¸®¾óµµ ÁöÁ¤ÀÌ °¡´ÉÇÑ´Ù. UTexture2D À̹ÌÁö·Î ¹Ù²Ù±âUMaterialInstanceDynamic::SetTextureParameterValue¸¦ ÀÌ¿ëÇØ "BaseTexture"¸¦ ¹Ù²Û´Ù.ReplaceTexture´Â ½ÇÇàÀü¿¡ ÅؽºÃÄ ¸®¼Ò½º¸¦ ÁöÁ¤ÇØ µÐ´Ù. MainMenu.h #pragma once
#include "CoreMinimal.h" #include "Blueprint/UserWidget.h" #include "MainMenu.generated.h" UCLASS() class UI_TEST_API UMainMenu : public UUserWidget { GENERATED_BODY() protected: virtual bool Initialize(); private: UFUNCTION() void OnPlayGame1(); UFUNCTION() void OnPlayGame2(); UFUNCTION() void OnGetTexture2D(UTexture2DDynamic* _texture); protected: UPROPERTY()//UPROPERTY(meta = (BindWidget)) class UButton* Game1_Button; UPROPERTY()//UPROPERTY(meta = (BindWidget)) class UButton* Game2_Button; UPROPERTY() class UImage* Image_picture; protected: UPROPERTY(EditAnywhere, BlueprintReadWrite) class UTexture2D* ReplaceTexture; class UAsyncTaskDownloadImage* mDownloadTask; }; Button02¸¦ Ŭ¸¯Çϸé "UTexture2D* ReplaceTexture" À̹ÌÁö·Î ¹Ù²Û´Ù. UTexture2D::GetDynamicMaterial ÇÔ¼ö·Î ¸ÓƼ¸®¾óÀ» ±¸ÇÑ´Ù. UMaterialInstanceDynamic::SetTextureParameterValue ÇÔ¼ö¿¡ ReplaceTexture¸¦ ÁöÁ¤ÇÑ´Ù. void UMainMenu::OnPlayGame2() { UE_LOG(LogTemp, Warning, TEXT("Clicked Game222222!")); UMaterialInstanceDynamic* Mat = Image_picture->GetDynamicMaterial(); if (Mat) { UE_LOG(LogTemp, Warning, TEXT("Exist Mat")); Mat->SetTextureParameterValue(FName(TEXT("BaseTexture")), ReplaceTexture); } } ½ÇÇàȸéÀº ´ÙÀ½°ú °°´Ù. UTexture2DDynamic À̹ÌÁö·Î ¹Ù²Ù±âÀ¥¿¡¼ ´Ù¿î·ÎµåÇÑ UTexture2DDynamic À̹ÌÁö·Î ¹Ù²Û´Ù.À̹ÌÁö ´Ù¿î·Îµå¿¡ ´ëÇÑ ÄÚµå ¼³¸íÀº »ý·« ÇÑ´Ù. void UMainMenu::OnGetTexture2D(UTexture2DDynamic* _texture)
{ //Image_picture->SetBrushFromTextureDynamic(_texture, true); //À̹ÌÁö Àß ¹Þ¾Ò´ÂÁö Å×½ºÆ® #if 1 UMaterialInstanceDynamic* Mat = Image_picture->GetDynamicMaterial(); if (Mat) { UE_LOG(LogTemp, Warning, TEXT("Exist Mat")); Mat->SetTextureParameterValue(FName(TEXT("BaseTexture")), _texture); } #endif } void UMainMenu::OnPlayGame1() { UE_LOG(LogTemp, Warning, TEXT("Clicked Game11111!")); //Start downloading the image. FString mURL = TEXT("https://xpressengine.github.io/XEIcon/assets/img/img_main_m.jpg"); mDownloadTask = NewObject<UAsyncTaskDownloadImage>(); mDownloadTask->OnSuccess.AddDynamic(this, &UMainMenu::OnGetTexture2D); mDownloadTask->Start(mURL); } Button01À» Ŭ¸¯Çϸé ÅؽºÃĸ¦ ´Ù¿î·Îµå ÇÑ´Ù. ÅؽºÃÄ ´Ù¿î·Îµå°¡ ³¡³ª¸é OnGetTexture2D ÇÔ¼ö¿¡¼ UTexture2DDynamic ÅؽºÃÄ·Î ¹Ù²Û´Ù. ½ÇÇà ȸéÀº ´ÙÀ½°ú °°´Ù. ´Ù¿î·Îµå) MainMenu.h MainMenu.cpp circle_mask.png ÂüÁ¶) UE4 C++ read network pictures https://blog.katastros.com/a?ID=01700-140cf229-69f3-42a1-9027-0502477c2b3c À̹ÌÁö¸¦ ´Ù¿î·ÎµåÇÏ°í UTexture2DDynamic·Î ÅؽºÃÄ ¹Ù²Ù±â https://answers.unrealengine.com/questions/916137/view.html Åõ¸íÇÑ PNG À̹ÌÁö¸¦ ¸¸µé¾î ÁÖ´Â °÷ https://www.remove.bg/ko |