UE의 스마트 포인터 라이브러리에는 아래 4가지 스마트 포인터가 있습니다. - TSharedPtr - TSharedRef - TWeakPtr - TUniquePtr 위 스마트 포인터들은 메모리 할당과 추적의 부담을 해소해주도록 설계된 C++11의 스마트 포인터의 커스텀 구현입니다. 위 스마트 포인터들은 언리얼 오브젝트(UObject)에 대해 사용할 수 없습니다. 언리얼 오브젝트(UObject)는 별도의 메모리 추적 시스템(GC)를 사용하기 때문입니다. (UObject GC에 의헤 TSharedPtr로 관리됩니다. 그래서 TSharedPtr로 UObject를 가르킬 수 없습니다. => 사이클 발생) TSharedPtr 위에서 설명한것과 같이 TSharedPtr은 UObject를 가르킬 수 없습니다. UOb..
1시간 정도 해매다가 해결한 에러입니다. 원인부터 설명하면 저는 일단 filename.generated.h 를 두번 참조하여 발생하였습니다...;; 당연히 한번만 include 하는것이 정상이지만 정신없이 파일들 만들고 필요한 헤더 파일들을 추가하다 발생한 문제인듯합니다. 처음에는 "Severity Code Description Project File Line Suppression State Error C1189 #error: "LyraCloneEquipmentDefinition.generated.h already included, missing '#pragma once' in LyraCloneEquipmentDefinition.h" LyraClone C:\Rookiss\Rookiss_Lyra\Unrea..
이번글은 제가 햇갈렸던 Delegate에 대한 글입니다. DECLARE_DELEGATE_OneParam(FMyDelegate, int32); ---------- UCLASS() class DELEGATETEST_API TestClass: public AActor { GENERATED_BODY() // .... public : FMyDelegate TestClass_OneParam; }; ---------- void TestCharacter::CallDeleFunc_Single_OneParam(int32 nValue) { UE_LOG(LogTemp, Warning, TEXT("CallDeleFunc_Single_OneParam / %d"), nValue); } void TestCharacter::Begin..
이번글은 제가 Lyra프로젝트 클론코딩하다 UE_INLINE_GENERATED_CPP_BY_NAME 메크로안 매개변수를 잘 못 전달하여 LNK2005에러를 해결한 과정과 UE_INLINE_GENERATED_CPP_BY_NAME를 정리한 글입니다. 일단 해결한 방법은 ㄱ무식하게 작성했던 파일들을 노트패드에 다 복붙해두고 만들었던 파일 전부 다 삭제후 파일들을 다시 하나씩 만들어 빌드를 한단계씩 해나가며 원인을 찾아 해결하게 되었습니다. 원인은 LyraPawnComponent_CharacterParts.cpp .h, LyraControllerComponent_CharacterParts.cpp .h 이렇게 각각 4개씩 있고 각각의 .cpp파일 상단에 UE_INLINE_GENERATED_CPP_BY_NAME( ..
Lyra프로젝트를 보다 보면 거의 모든 cpp 클래스 생성자에 ALyraCharacter(const FObjectInitializer& ObjectInitializer = FObjectInitializer::Get()); 위처럼 되어 있는것을 볼 수 있습니다. FObjectInitislzier클래스는 무엇이며 생성자의 인자로 왜 전달하는 것인지 궁금하여 정리하게 되었습니다. UE 포럼에도 비슷한 글이 있었습니다. 생성자에 'FObjectInitializer'이거 왜쓰냐? 무슨 차이냐? 라는 질문인데 https://forums.unrealengine.com/t/do-i-have-to-use-fobjectinitializer-in-constructor/363383/3 Do I have to use FObje..