1. UMG
UMG(Unreal Motion Graphic)λ μΈλ¦¬μΌ μμ§μμ μ¬μ©μ μΈν°νμ΄μ€λ₯Ό ꡬμ±ν μ μλ μ μ ν΄μ΄λ€.
2. μ¬μ©
UMGμμλ UIλ₯Ό ꡬμ±νλ κ΅¬μ± μμλ€μ μμ ―(Widget)μ΄λΌλ κ°λ μΌλ‘ μ¬μ©νλ©°, μμ ― λΈλ£¨νλ¦°νΈ(Widget Blueprint)μμ μ΄ μμ ―λ€μ νΈμ§νμ¬ UIλ₯Ό μ μν μ μλ€.
- λμμ΄λνμ μκ°μ λ μ΄μμ ꡬμ±μ μν νΈμ§μ°½μ΄λ€.
- κ·Έλννμ μΈν°λ μ κΈ°λ₯μ μν΄ λ§λ ¨λ μ½λ© μμμ νΈμ§μ°½μ΄λ€.
μμ ―μ κ³μΈ΅ ꡬ쑰λ₯Ό νμ©νμ¬ κ΅¬μ±νλ κ²μ΄ μ’λ€. ꡬννκ³ μ νλ μ¬μ μ΅μλ¨μΌλ‘ νμ¬ κ°κ°μ κ΅¬μ± μμλ€μ λ°°μΉνκ³ κ΅¬μ± μμκ° νΉμ ν κΈ°λ₯μ λ΄μ κ²½μ°μ μμ ―μΌλ‘ λ¬Άμ΄μ κ·Έλ£Ήννλ€.
- μ΅μμ μμ ―μ μΊλ²μ€ ν¨λμ νμ©νμ¬ μμ ―λ€μ λ μ΄μμμ ꡬμ±νλ€.
- νμ μμ ―μ νΉμ κΈ°λ₯λ³λ‘ μ€λΈμ νΈλ€μ κ·Έλ£Ήννμ¬ μ¬μ©ν μ μκ² ν΄ μ€λ€. νΉλ³ν κΈ°λ₯μ΄ μκ±°λ λ€λ₯Έ μ¬μμ μ¬μ¬μ©λμ§ μλλ€λ©΄, νμ μμ ―μΌλ‘ κ΄λ¦¬νμ§ μκ³ ν΄λΉ μ¬μμ λ°λ‘ μμ νλ κ²μ΄ μ’λ€.
1) μμ ― μμ±
μμ ―μ μμ±ν ν νλ νΈ μ±λμμ μ¬μ©μκ° μμ±ν μμ ―λ€μ νμΈν μ μλ€. μ΄ μμ ―λ€μ μ΅μμ μμ ―(μ¬)μ λ°°μΉνμ¬ νλμ λ μ΄μμμ ꡬμ±ν μ μλ κ²μ΄λ€.
2) νλ©΄μ μ΅μμ μμ ― λΆμ΄κΈ°
2-1) λ 벨 λΈλ£¨νλ¦°νΈ μ¬μ©
λ 벨 λΈλ£¨νλ¦°νΈμμ μ΅μμ μμ ―μ μμ±νκ³ κ·Έ μμ ―μ 보μ¬μ£Όλλ‘ μ€μ νλ€.
2-2) κ²μ λͺ¨λ μ¬μ©
κ²μ λͺ¨λλ₯Ό νμ₯νμ¬ κ²μμ΄ μμλμμ λ μμ ―μ μλ‘ λ§λ€μ΄μ νμνκ±°λ λμ€μ μ κ±° λ° λ³κ²½ν μ μλλ‘ νλ€. κ²μ λͺ¨λ μ¬μ©μ C++λ‘ κ΅¬νν΄ λ³Ό κ²μ΄λ€.
public:
UFUNCTION(BlueprintCallable, Category = "UMG_Game")
void ChangeMenuWidget(TSubclassOf<UUserWidget> NewWidgetClass);
protected:
virtual void BeginPlay() override;
UPROPERTY(EditAnyWhere, BlueprintReadOnly, Category = "UMG_Game")
TSubclassOf<UUserWidget> StartingWidgetClass; // κ²μμ΄ μμλ λ νμλ μμ ―
UPROPERTY()
UUserWidget* CurrentWidget; // νμ¬ νμλκ³ μλ μμ ―
#include <Blueprint/UserWidget.h>
void AGameModeBase::BeginPlay()
{
Super::BeginPlay();
ChangeMenuWidget(StartingWidgetClass);
}
void AGameModeBase::ChangeMenuWidget(TSubclassOf<UUserWidget> NewWidgetClass)
{
if (CurrentWidget != nullptr) {
CurrentWidget->RemoveFromViewport();
CurrentWidget = nullptr;
}
if (NewWidgetClass != nullptr) {
CurrentWidget = CreateWidget(GetWorld(), NewWidgetClass);
if (CurrentWidget != nullptr)
CurrentWidget->AddToViewport();
}
}
3. νμ©
μ΄μ UMGλ₯Ό μ¬μ©νμ¬ νμ΄ν μ¬μ λ§λ€μ΄λ³Ό κ²μ΄λ€.
νμ΄ν μ¬μ μμ μ νμ΄νκ³Ό λ©λ΄κ° 보μ΄λ©° GAME START λ²νΌμ λλ₯΄λ©΄, μλ리μ€κ° 보μ΄λλ‘ κ΅¬μ±λμ΄ μλ€.
- μ΅μμ μμ ―
- ν μ€νΈ: νμ΄ν
- νμ μμ ―: λ©λ΄
- νμ μμ ―: μλ리μ€
1) λ©λ΄ μμ ―
λ©λ΄ μμ ―μ μΈλ‘λ‘ κ΅¬μ±λ λ μ΄μμμ ν¨κ³Όμ μΌλ‘ μ μν μ μλ λ²ν°μ»¬ λ°μ€μ λ²νΌ, μ€νμ΄μλ₯Ό μ¬μ©νλ€. ꡬ체μ μΈ λ²νΌ Hover, Click λ±μ μμ μ νλ‘μ νΈμ λ§κ² μ€μ νλ©΄ λ κ² κ°λ€.
μ΄μ μμν λ μ λλ©μ΄μ κ³Ό ν¨κ» λ ΈμΆλλλ‘ ν κ²μ΄λ€. μλ‘μ΄ μ λλ©μ΄μ μ νλ μμ±ν ν μμ±ν μ λλ©μ΄μ μ ν΄λ¦ν μνλ‘ λ²νΌμ Details ν¨λμμ Color and Opacity μ + μμ΄μ½μ μ ννμ¬ ν΄λΉ μμ±μ ν€νλ μμΌλ‘ μΆκ°νλ€. μΆκ°λ‘ λ²ν°μ»¬ λ°μ€μ Transformλ μΆκ°νλ€.
κ·ΈλΌ μλμ κ°μ΄ μ¬λ¬ ν€νλ μμ΄ μ λλ©μ΄μ μ μΆκ°λ κ²μ νμΈν μ μμΌλ©° μνλ μ λλ©μ΄μ μ ꡬννλ©΄ λλ€.
- μμμλΆν° μ°¨λ‘λλ‘ λ²νΌμ΄ λνλ μ μλλ‘ alphaλ₯Ό μμ νλ€.
- λ©λ΄ μμ ―μ μ΅μλ¨μΈ λ²ν°μ»¬ λ°μ€μ positionμ μμ νλ€.
λ§μ§λ§μΌλ‘ κ·Έλν νμμ μμ μ μ λλ©μ΄μ μ μ¬μμν€λ©΄ λλ€.
2) μλλ¦¬μ€ μμ ―
μλ리μ€λ μ΄ 3κ°μ νλ©΄μ΄ μ°¨λ‘λλ‘ λ³΄μλ€ μ¬λΌμ§λ€. λͺ¨λ μλ리μ€κ° λλλ©΄ Stage 1μ΄ μμλλ€.
3κ°μ νλ©΄μ μν΄ κ°κ°μ μλλ¦¬μ€ μμ ―μ μμ±νλ€. μ΄ μμ ―λ€μ μ΄λ―Έμ§μ ν μ€νΈλ‘ ꡬμ±λ λ¨μν μμ ―μ΄λ€.
μ΅μμ μμ ―μ λ°°μΉν ν μλλ¦¬μ€ μμ ―λ€μ λ°°μΉν ν μλλ¦¬μ€ μ νμ μν μ λλ©μ΄μ μ μΆκ°νλ€.
- μλλ¦¬μ€ μμ ―μ΄ κ°μ₯ μμ 보μ¬μΌ νκΈ° λλ¬Έμ ZOrderλ₯Ό λ°°μΉλ λ€λ₯Έ μμ ―λ³΄λ€ κ°μ₯ ν¬κ² μ€μ νλ€.
- μλλ¦¬μ€ μμμ λ§κ² alphaλ₯Ό μ¬μ©νμ¬ FadeIn/Out νλ€.
- μ λλ©μ΄μ μ μκ°μ μ λλ©μ΄μ μ¬μ μ μ‘°μ κ°λ₯νκΈ° λλ¬Έμ μλλ¦¬μ€ μ¬μ΄μ FadeIn/Out μκ°μ κ³ λ €νμ¬ κ΅¬ννλ€.
λ§μ§λ§μΌλ‘ κ·Έλν νμμ GAME START λ²νΌμ λλ μ λ μ λλ©μ΄μ μ μ¬μμν€λ©΄ λλλ°, μ λλ©μ΄μ μ΄ μ’ λ£λλ μμ μ Stage 1μΌλ‘ μ΄λμ ν΄μΌ νκΈ° λλ¬Έμ Animation Finishedμ μ΄λ²€νΈλ₯Ό Bind μμΌ μ΄λ²€νΈκ° μ’ λ£λ λ λ°λ‘ λμνλλ‘ μΆκ°νλ€.