본문 바로가기
Delegate를 인자로 사용하기 위한 방법 - 구조체 왜 Delegate를 인자로 사용하지 못할까?간단한 내부 구조DECLARE_DELEGATE_OneParam과 같이 선언한 Delegate 타입은 함수 포인터 + 캡처 객체주소를 포함하는 구조이다.MyDelegate.AddUObject(this, &AClassName::FunctionName);다음과 같이 사용한다면 AClassName이 함수 포인터(힙에 할당)이며 this가 캡처 객체 인스턴스 주소이다.즉, 내부적으론 어떤 함수를 가리키는 포인터, 그 함수가 멤버 함수라면 해당 객체에 대한 포인터가 있다.또한 바인딩 상태, 종류(멤버, 람다, 정적), 등록 해제 상태 등 다양한 값들이 관리가 된다. 그래서 왜 못하는가?Delegate는 내부적으로 함수 포인터 정보(힙 메모리) +  캡처 객체 정보로 이루.. 2025. 3. 25.
게임 시작 시 포커스가 뷰포트로 들어가게 하기 void APlayerController::BeginPlay(){ Super::BeginPlay(); FInputModeGameOnly GameOnlyInputMode; SetInputMode(GameOnlyInputMode);}다음과 같이 입력하면 되며GameOnlyInputMode의 의미가 게임 입력만 활성화하고 마우스 커서나 UI 포커스는 무시한다는 의미이다.즉, 시작하자마자 모든 입력처리는 게임 안에서 처리가 된다.SetInputMode()함수가 APlayerCotroller에 있는 함수임으로 PlayerController에서만 사용이 가능하다. 2025. 3. 21.
경로기반 Class & Object 정보를 들고오는 방법 Asset해당 Asset에서 우클릭하여 Copy Reference를 해준다.이렇게 Asset주소를 들고온 후 생성자에서 다음과 같이 TEXT에 붙여주면 된다.붙여넣기를 하면 앞부분과 마지막에 '가 하나 더 붙는데 이건 삭제해주면 된다.'부분을 삭제하지 않으면 Crash가 난다. 그리고 Class 정보를 들고오기에 _C를 붙여주면 된다.여기서 _C는 해당 BP의 Generated Class를 의미한다.  CPPCPP도 동일하게 Copy Reference를 해준다.붙여넣기하면 여기도 '가 생기는데 동일하게 삭제해주면 된다. C++ 직접 참조(StaticClass()) vs 경로 기반 로딩 (FClassFinder)C++직접 참조컴파일 타임에 타입 안정성을 검사한다.런타임 시에 오류 위험이 없다.StaticC.. 2025. 3. 21.
Unreal StaticClass() StaticClass()이 함수는 클래스의 UClass 객체를 반환하는 정적 메서드로 주어진 클래스에 대한 정보를 저장한다.특정 클래스의 인스턴스를 생성할 때 또는 해당 클래스와 관련된 작업을 수행할 때 유용하게 사용된다.더보기정적 메서드: 객체 인스턴스와 관련 없이 클래스 자체에 속하는 메서드이다.객체를 생성하지 않고 호출이 가능하며 보통 클래스의 공통 기능이나 유틸리티 기능을 제공하는데 사용된다.더보기UclassUClass는 UE에서 클래스를 정의하고 관리하는 시스템.모든 UObject 파생 클래스(Actor, Component)는 UClass를 통해 인스턴스를 생성하고 조작이 가능하다. 또한 클래스의 구조, 속성, 메서드, 가상 함수, 에디터 노출 등 다양한 메타 정보를 저장한다. StaticCla.. 2024. 10. 3.