해당 Type은 플러그인이 영향을 미칠 콘턴츠의 경로가 결정된다.
이것은 게임 코드에 영향을 미치는 플러그인이라면 런타임이 되기를 바라겠지만,
이제 내가 만들 건 편집 도구이니까, Editor에 영향을 미치길 바란다.
따라서 영향을 미치는 Type을 Editor로 변경해준다.
따라서 이 플러그인(모듈)은 로드되는 시기에 결정된다.
이제 LoadingPhase를 기본값으로 설정된 것 대신 사전 기본값으로 변경하자.
이제 이 플러그인은 게임 모듈보다 먼저 로드되며,
이러한 설정은 내가 만들고자 하는 사용자 정의 편집기 도구에 적합한 설정이다.
사용자 정의 편집 도구의 기능은
총 2가지를 가질 것이다.
첫째는, 애셋의 수를 줄이고 늘리거나 하는 에셋에 대한 작업
둘째는 레벨에 올려져있는 액터 자체에 대한 작업이다.
에셋에 대해서는 AssetActionUtilty를 통하여 Editor와 소통할 것이며,
액터에 대해서는 ActorActionUtility를 통해여 Editor와 소통할 것이다.
이러한 기능을 원활히 사용하기 위해
UFUNCTION(CallInEditor)라는 기능도 추가 제작할 것이다.
AssetActionUtilty는 이미 언리얼에서 만들어둔 클래스 타입이다.
해당 클래스 타입은 C++로 제작할 수 있다.
Editor 플러그인 실행 타입에 맞게 변경해준다.
이 설정을 대충 넘어가면 나중에 컴파일이 되지 않을 수 있으니,
꼭 확인하길 바란다.
클래스를 생성해줬다면,
테스트할 함수를 생성해준다.
// 헤더파일
class SUPERMANAGER_API UQuickAssetAction : public UAssetActionUtility
{
GENERATED_BODY()
public:
UFUNCTION(CallInEditor)
void TestFunc();
...
}
// 소스파일
void UQuickAssetAction::TestFunc()
{
if (GEngine) {
GEngine->AddOnScreenDebugMessage(-1, 8.f, FColor::Cyan, TEXT("Working"));
}
}
하지만, 바로 실행이 되지 않을 것이다.
왜냐하면, 해당 클래스에 필요한 모듈을 제대로 설정해주지 않았기 때문이다.
엔진 폴더 경로를 찾는 것은 좀 까다롭다.
cs 파일에 들어가서 모듈을 다음과 같이 설정해주면 된다.
PrivateIncludePaths.AddRange(
new string[] {
System.IO.Path.GetFullPath(Target.RelativeEnginePath) + "/Source/Editor/Blutility/Private"
}
);
PublicDependencyModuleNames.AddRange(
new string[]
{
"Core","Blutility"
// ... add other public dependencies that you statically link with here ...
}
);
이후 ctrl + B 를 눌러 안전하게 실행되면,
블루프린트 액터 하나를 만들어서
Test Func에 맞는 설정을 해두자.
설정이 완료되면 화면에 다음과 같이 뜰 것이다.
'DevLog > 언리얼 프로젝트' 카테고리의 다른 글
[DevLog] Lucy 240924 CombatComponent 클래스 다이어그램 (1) | 2024.09.24 |
---|---|
[DevLog] Lucy 240917 (1) | 2024.09.17 |
RPG- UE 5.1 CPP Project (0) | 2023.12.20 |