1. UI에서 데이터에 접근하는방법?
* 변수선언후 직접접근 :
이게 최선인가?
AAA급 게임은 어떻게 하는가? 답은 MVC다!
2. UI의 구성요소 (MVC kkkkk)
뷰, 모델(데이터, 마나, 레벨 등), 위젯컨트롤러(모델에서 데이터 검색후 뷰에 전달)
* 의존성 설정
뷰 -> 컨트롤러 -> 모델
3. 구현
i) 위젯(뷰)만들기
뷰는 컨트롤러를 사용한다. / 초기화도 해야함.
// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "CoreMinimal.h"
#include "Blueprint/UserWidget.h"
#include "AuraUserWidget.generated.h"
/**
*
*/
UCLASS()
class AURA_API UAuraUserWidget : public UUserWidget
{
GENERATED_BODY()
public:
UFUNCTION(BlueprintCallable)
void SetWidgetController(UObject* InWidgetController);
UPROPERTY(BlueprintReadOnly)
TObjectPtr<UObject> WidgetController;
protected:
UFUNCTION(BlueprintImplementableEvent)
void WidgetControllerSet();
};
// Fill out your copyright notice in the Description page of Project Settings.
#include "UI/Widget/AuraUserWidget.h"
void UAuraUserWidget::SetWidgetController(UObject* InWidgetController)
{
//의존성 주입 (초기화)
WidgetController=InWidgetController;
WidgetControllerSet(); //BP에서 구현한 함수 실행할것임.
}
ii) 위젯컨트롤러 만들기
역할 : 데이터를 가져와 모든 위젯에 브로드캐스팅!
컨트롤러는 PC, PS, ASC, AS 모두를 가진다.
UCLASS()
class AURA_API UAuraWidgetController : public UObject
{
GENERATED_BODY()
public:
//멤버들 초기화하는 함수
UFUNCTION(BlueprintCallable)
void SetWidgetControllerParams(const FWidgetControllerParams&
WCParams);
//속성들 방송하는 함수
virtual void BroadcastInitialValues();
protected:
UPROPERTY(BlueprintReadOnly, Category="WidgetController");
TObjectPtr<APlayerController> PlayerController;
UPROPERTY(BlueprintReadOnly, Category="WidgetController");
TObjectPtr<APlayerState> PlayerState;
UPROPERTY(BlueprintReadOnly, Category="WidgetController");
TObjectPtr<UAbilitySystemComponent> AbilitySystemComponent;
UPROPERTY(BlueprintReadOnly, Category="WidgetController");
TObjectPtr<UAttributeSet> AttributeSet;
};
'UE5 > UI' 카테고리의 다른 글
[UE5] UI 체력포션먹으면 마나25감소 구현 (0) | 2024.05.28 |
---|---|
[UE5] 체력변화가생길시 즉시 업데이트 구현 // 바인딩 버그?(auto vs 직접호출), 의존성점검(뷰->컨트롤러->모델) (0) | 2024.05.28 |
[UE5] 체력통에 실제값을 연결하는 방법 // .cpp.h키는법 (0) | 2024.05.28 |
[UE5] HUD 마나통 뷰포트(화면)에 띄워주기 // TSubClassOf란? (0) | 2024.05.27 |
[UE5] UI 체력통 만들기, 오버레이 (0) | 2024.05.27 |