언리얼을 사용하면서 내가 원하는 기능이 없을 때
플러그인을 제작하여 편리하게 사용할 수 있다
언리얼에서 모듈의 개념은 라이브러리와 같다
플러그인은 모듈을 제작하는 것이다
라이브러리에는 dll파일과 lib파일이 있다
dll (dynamic linked library)
프로그램과 다른 메모리 공간을 사용한다
-> 필요할 때 부르고 필요없을 때 해제할 수 있다
lib (static library)
프로그램과 같은 메모리 공간을 사용한다
-> 해당 프로그램이 로드될 때 함께 로드된다
-> 퍼포먼스를 위해서 또는 프로그램이 완전히 붙어있어야 하는 경우에 사용한다
플러그인은 언리얼 상단 탭에 편집 -> 플러그인에서 볼 수 있다
새 플러그인을 누르면 다양한 플러그인을 제작할 수 있다
시작점이 있는 클래스의 경우 IMPLEMENT_MODULE()로 해당 클래스가 시작 클래스라는 것을 알려준다
플러그인은 언리얼을 아예 껐다 켜야 변경사항이 반영된다 ㅠㅠ
따라서 F5키로 컴파일을 자주 하게 된다
확인해보면 Start와 End가 언리얼이 시작되고 꺼질때 잘 불려진 것을 확인할 수 있다
디버깅 할 때 단따옴표로 AI나 EQS를 디버깅 하는데
똑같이 나만의 디버깅을 만들 수 있다
5번에 나만의 디버깅을 만들어봤다
카테고리를 Example이라는 이름으로 만들어주고
RegisterCategory()의 파라미터를 살펴보면
SharedRef를 사용하는 델리게이트가 있다
Shared 포인터는 MakeShareable()로 만들 수 있다
모듈에서 실행하고 카테고리를 리턴하는 부분은 클래스를 따로 만들어 뺐다
플러그인 안에 여러가지 기능을 만들어보기 위함이다
C++클래스를 만드는 것과 동일하게 만들고
내가 만든 플러그인으로 선택하고 만들어주면 된다
필요한 파라미터를 리턴받고 델리게이트 이므로 바인딩 시켜준다
카테고리를 등록하고 ShutdownModule에서 해제시켜주는 것도 잊으면 안된다
잘 등록되었다
FGameplayDebuggerCategory 를 상속받아
함수들을 오버라이딩해 사용해본다
void CollectData(APlayerController* OwnerPC, AActor* DebugActor) override;
void DrawData(APlayerController* OwnerPC, FGameplayDebuggerCanvasContext& CanvasContext) override;
이렇게 두 함수를 오버라이딩해서
플레이어부터 라인트레이스를 하고
플레이어의 위치, 라인트레이스해서 히트된 액터, 디버깅할 액터 등의 정보를 출력해보았다
'> Study > Unreal Engine 4' 카테고리의 다른 글
[Plugin] Detail Property (0) | 2024.04.17 |
---|---|
[Plugin] Console Command (0) | 2024.04.12 |
[Unreal C++] EQS (Environment Query System) (0) | 2024.02.26 |
[Unreal C++] Component Overlap, Delgate, Trigger (0) | 2023.07.14 |
[Unreal C++] Player, Animation, Delgate (0) | 2023.07.06 |