3D ¿ùµå¿¡ 2D À§Á¬À» Ç¥½Ã ÇÑ´Ù. ij¸¯ÅÍ À§¿¡ HP¹Ù³ª ij¸¯ÅÍÀÇ Ç³¼± µµ¿ò¸»À» Ç¥½Ã ÇÒ¼ö ÀÖ´Ù. 1. Widget ¸¸µé±â°èÃþ ±¸Á¶¿¡¼ ·çÆ® ĵ¹Ù½º¸¦ ÁöÁ¤ÇÑ´Ù.¿À¸¥ÂÊ À§ ȸéÅ©±â ¿·¿¡ "FullScreen"À» "Custom"À¸·Î º¯°æ ÈÄ¿¡ ³Êºñ¿Í ³ôÀ̸¦ ÁöÁ¤ÇÑ´Ù. ¿©±â¼´Â 200X34 Å©±â·Î ÁöÁ¤Çß´Ù. 2. Å×½ºÆ®¸¦ À§ÇÑ ºó ¾×Å͸¦ ¸¸µé±âºó ¾×ÅÍ´Â Actor¸¦ »ó¼ÓÇÏ¿© ¸¸µç´Ù.ºó ¾×ÅÍ¿¡ DrawDebugSphere ÇÔ¼ö·Î ±¸¸¦ Ç¥½Ã ÇÑ´Ù. ºó ¾×ÅÍ »ý¼ºÀº tutorial14.htmlÀ» Âü°í ÇÑ´Ù. ºó ¾×Å͸¦ »ý¼ºÈÄ Widget Ãß°¡´Â ´ÙÀ½°ú °°ÀÌ ÇÑ´Ù. 3-1 »ý¼ºÀÚ¿¡¼ Widget Ãß°¡ ÇÏ´Â ¹æ¹ý CreateDefaultSubobject·Î À§Á¬ ÄÄÆ÷³ÍÆ®¸¦ »ý¼ºÇÑ´Ù. À§Á¬À» RootComponentÀÇ ÀÚ½ÄÀ¸·Î Ãß°¡ ÇÑ´Ù. À§Á¬ÀÇ Space´Â 2DÀ̹ǷΠEWidgetSpace::ScreenÀ¸·Î ÁöÁ¤ÇÑ´Ù. À§Á¬ ¸®¼Ò½º¸¦ ·ÎµùÇÑ´Ù. À¯Àú À§Á¬ Ŭ·¡½º¸¦ ÁöÁ¤ÇÑ´Ù. WidgetÀÇ SetDrawSize¸¦ Custom »çÀÌÁî¿Í µ¿ÀÏÇÏ°Ô ÁöÁ¤ Çϴ°ÍÀÌ Áß¿äÇÏ´Ù. UWidgetComponent* Widget = CreateDefaultSubobject<UWidgetComponent>(TEXT("TargetWidget")); Widget->SetupAttachment(RootComponent); Widget->SetWidgetSpace(EWidgetSpace::Screen); static ConstructorHelpers::FClassFinder<UUserWidget> UI_WIDGET(TEXT("/Game/blueprint/BP_MyText_Widget.BP_MyText_Widget_C")); if (UI_WIDGET.Succeeded()) { Widget->SetWidgetClass(UI_WIDGET.Class); Widget->SetDrawSize(FVector2D(200.0f, 34.0f)); } #include "EmptyActor.h"
#include "Components/SphereComponent.h" #include "Components/StaticMeshComponent.h" #include "DrawDebugHelpers.h" #include "Blueprint/UserWidget.h" #include "Components/WidgetComponent.h AEmptyActor::AEmptyActor(const FObjectInitializer& ObjectInitializer) { PrimaryActorTick.bCanEverTick = true; USceneComponent* SceneComponent = ObjectInitializer.CreateDefaultSubobject<USceneComponent>(this, TEXT("RootComponent")); SceneComponent->SetMobility(EComponentMobility::Movable); SetRootComponent(SceneComponent); USphereComponent* SphereComponent = CreateDefaultSubobject<USphereComponent>(TEXT("SphereComponent")); SphereComponent->InitSphereRadius(10.0f); SphereComponent->SetCollisionProfileName(TEXT("Pawn")); SphereComponent->SetupAttachment(RootComponent); //1¹ø ¹æ½Ä - »ý¼ºÀÚ¿¡¼ Widget Ãß°¡ UWidgetComponent* Widget = CreateDefaultSubobject<UWidgetComponent>(TEXT("TargetWidget")); Widget->SetupAttachment(RootComponent); Widget->SetWidgetSpace(EWidgetSpace::Screen); static ConstructorHelpers::FClassFinder<UUserWidget> UI_WIDGET(TEXT("/Game/blueprint/BP_MyText_Widget.BP_MyText_Widget_C")); if (UI_WIDGET.Succeeded()) { Widget->SetWidgetClass(UI_WIDGET.Class); Widget->SetDrawSize(FVector2D(200.0f, 34.0f)); //ÀÌ°Í Áß¿äÇÏ´Ù... ¾ÈÇϸé ȸé Àüü·Î ±×·Á ÁÂÇ¥°¡ ÀÌ»óÇÏ´Ù. } } void AEmptyActor::BeginPlay() { Super::BeginPlay(); UWorld* World = GetWorld(); if (World) { float Radius = 10.0f; FVector Center = GetActorLocation(); DrawDebugSphere(World, Center, Radius, 16, FColor(181, 0, 0), true, -1, 0, 1.0f); } } void AEmptyActor::Tick(float DeltaTime) { Super::Tick(DeltaTime); } 3-2 BeginPlay¿¡¼ Widget Ãß°¡ »ý¼ºÀÚ¿¡¼ ´ÙÀ½°ú °°Àº ¸í·ÉÀ» ½ÇÇàÇÑ´Ù. CreateDefaultSubobject·Î À§Á¬ ÄÄÆ÷³ÍÆ®¸¦ »ý¼ºÇÑ´Ù. À§Á¬À» RootComponentÀÇ ÀÚ½ÄÀ¸·Î Ãß°¡ ÇÑ´Ù. À§Á¬ÀÇ Space´Â 2DÀ̹ǷΠEWidgetSpace::ScreenÀ¸·Î ÁöÁ¤ÇÑ´Ù. UWidgetComponent* Widget = CreateDefaultSubobject<UWidgetComponent>(TEXT("TargetWidget")); Widget->SetupAttachment(RootComponent); Widget->SetWidgetSpace(EWidgetSpace::Screen); BeginPlay¿¡¼ ´ÙÀ½°ú °°Àº ¸í·ÉÀ» ½ÇÇàÇÑ´Ù. »ý¼ºÀÚ¿¡¼ ¸¸µç À§Á¬ Ŭ·¡½º¸¦ ã´Â´Ù. À§Á¬ ¸®¼Ò½º¸¦ ·ÎµùÇÑ´Ù. UserWidget ÀνºÅϽº¸¦ »ý¼º½Ã À§Á¬ ¸®¼Ò½º¸¦ ÁöÁ¤ÇÑ´Ù. À¯Àú À§Á¬ Ŭ·¡½º¸¦ ÁöÁ¤ÇÑ´Ù. WidgetÀÇ SetDrawSize¸¦ Custom »çÀÌÁî¿Í µ¿ÀÏÇÏ°Ô ÁöÁ¤ Çϴ°ÍÀÌ Áß¿äÇÏ´Ù. UWidgetComponent* Widget = this->FindComponentByClass<UWidgetComponent>(); if (Widget && Widget->GetName() == TEXT("TargetWidget")) { FStringClassReference WidgetRef(TEXT("/Game/blueprint/BP_MyText_Widget.BP_MyText_Widget_C")); if (UClass* WidgetClass = WidgetRef.TryLoadClass<UUserWidget>()) { UUserWidget* UserWidget = CreateWidget<UUserWidget>(GetWorld(), WidgetClass); Widget->SetWidgetClass(UserWidget->GetClass()); Widget->SetDrawSize(FVector2D(200.0f, 34.0f)); } } #include "EmptyActor.h"
#include "Components/SphereComponent.h" #include "Components/StaticMeshComponent.h" #include "DrawDebugHelpers.h" #include "Blueprint/UserWidget.h" #include "Components/WidgetComponent.h AEmptyActor::AEmptyActor(const FObjectInitializer& ObjectInitializer) { PrimaryActorTick.bCanEverTick = true; USceneComponent* SceneComponent = ObjectInitializer.CreateDefaultSubobject<USceneComponent>(this, TEXT("RootComponent")); SceneComponent->SetMobility(EComponentMobility::Movable); SetRootComponent(SceneComponent); USphereComponent* SphereComponent = CreateDefaultSubobject<USphereComponent>(TEXT("SphereComponent")); SphereComponent->InitSphereRadius(10.0f); SphereComponent->SetCollisionProfileName(TEXT("Pawn")); SphereComponent->SetupAttachment(RootComponent); //2¹ø ¹æ½Ä - BeginPlay¿¡¼ Widget Ãß°¡ UWidgetComponent* Widget = CreateDefaultSubobject<UWidgetComponent>(TEXT("TargetWidget")); Widget->SetupAttachment(RootComponent); Widget->SetWidgetSpace(EWidgetSpace::Screen); } void AEmptyActor::BeginPlay() { Super::BeginPlay(); UWorld* World = GetWorld(); if (World) { float Radius = 10.0f; FVector Center = GetActorLocation(); DrawDebugSphere(World, Center, Radius, 16, FColor(181, 0, 0), true, -1, 0, 1.0f); } //2¹ø ¹æ½Ä - BeginPlay¿¡¼ Widget Ãß°¡ UWidgetComponent* Widget = this->FindComponentByClass<UWidgetComponent>(); if (Widget && Widget->GetName() == TEXT("TargetWidget")) { FStringClassReference WidgetRef(TEXT("/Game/blueprint/BP_MyText_Widget.BP_MyText_Widget_C")); if (UClass* WidgetClass = WidgetRef.TryLoadClass<UUserWidget>()) { UUserWidget* UserWidget = CreateWidget<UUserWidget>(GetWorld(), WidgetClass); Widget->SetWidgetClass(UserWidget->GetClass()); Widget->SetDrawSize(FVector2D(200.0f, 34.0f)); //ÀÌ°Í Áß¿äÇÏ´Ù... ¾ÈÇϸé ȸé Àüü·Î ±×·Á ÁÂÇ¥°¡ ÀÌ»óÇÏ´Ù. } } } void AEmptyActor::Tick(float DeltaTime) { Super::Tick(DeltaTime); } ½ÇÇà ȸéÀº ´ÙÀ½°ú °°´Ù. ¹®Á¦Á¡ : À§Á¬ "TEXT SHOW"´Â 3D º®À̳ª Àå¾Ö¹°¿¡ °¡·Á ÄøµÀÌ ÀÚµ¿À¸·Î ¾ÈµÈ´Ù. º®ÀÌ ÀÖÀ¸¸é ij¸¯ÅÍ´Â ¼û¾îµµ GUI´Â ·»´õ¸µÀÌ µÈ´Ù. 3D ¸Þ½¬¿¡ ÀÇÇØ Äøµ µÇ´Â ¹æ¹ýÀº ¾ÆÁ÷ ãÁö¸¦ ¸øÇß´Ù. |