Delegate를 인자로 사용하기 위한 방법 - 구조체 왜 Delegate를 인자로 사용하지 못할까?간단한 내부 구조DECLARE_DELEGATE_OneParam과 같이 선언한 Delegate 타입은 함수 포인터 + 캡처 객체주소를 포함하는 구조이다.MyDelegate.AddUObject(this, &AClassName::FunctionName);다음과 같이 사용한다면 AClassName이 함수 포인터(힙에 할당)이며 this가 캡처 객체 인스턴스 주소이다.즉, 내부적으론 어떤 함수를 가리키는 포인터, 그 함수가 멤버 함수라면 해당 객체에 대한 포인터가 있다.또한 바인딩 상태, 종류(멤버, 람다, 정적), 등록 해제 상태 등 다양한 값들이 관리가 된다. 그래서 왜 못하는가?Delegate는 내부적으로 함수 포인터 정보(힙 메모리) + 캡처 객체 정보로 이루.. 2025. 3. 25. Uneal DataAsset으로 Combo System 만들기 // Fill out your copyright notice in the Description page of Project Settings.#pragma once#include "CoreMinimal.h"#include "Engine/DataAsset.h"#include "ABComboActionData.generated.h"/** * */UCLASS()class PRACTICE_API UABComboActionData : public UPrimaryDataAsset{ GENERATED_BODY()public: UABComboActionData(); UPROPERTY(EditAnywhere, Category = Name) FString MontageSectionNamePrefix; UPROPERTY(Ed.. 2025. 3. 24. Unreal DataAsset DataAssetUDataAsset을 상속받은 Unreal Object Class이다.에디터에서 에셋 형태로 편리하게 데이터를 관리할 수 있다. 예시캐릭터 컨트롤에 관련된 주요 옵션을 모아 Data Asset으로 관리를 예시로 해보자.C++ Class에서 DataAsset을 추가하고헤더파일에 이와 같이 다양하게 추가해준다.float값의 경우엔 생성자에 다음과 같이 작성해주면 된다. 그리고 Unreal 에디터에서Miscellaneous -> DataAsset으로 들어가서 방금 생성한 Class를 선택해주면 생성이 된다. 생성한 DataAsset에 들어가보면다음과 같이 헤더 파일에 선언한 속성값을 채워넣을 수 있게 UI가 제공이 된다.다음과 같이 사용할 값을 DataAsset(여기선 UABCharacterC.. 2025. 3. 22. 게임 시작 시 포커스가 뷰포트로 들어가게 하기 void APlayerController::BeginPlay(){ Super::BeginPlay(); FInputModeGameOnly GameOnlyInputMode; SetInputMode(GameOnlyInputMode);}다음과 같이 입력하면 되며GameOnlyInputMode의 의미가 게임 입력만 활성화하고 마우스 커서나 UI 포커스는 무시한다는 의미이다.즉, 시작하자마자 모든 입력처리는 게임 안에서 처리가 된다.SetInputMode()함수가 APlayerCotroller에 있는 함수임으로 PlayerController에서만 사용이 가능하다. 2025. 3. 21. 이전 1 2 3 4 ··· 17 다음