플러그인을 사용해서 메시를 저장하고 불러오는 것을 구현해보자
먼저 Static Mesh를 클릭했을 때 등장하는 디테일창에
Mesh에 관련된 버튼을 만들어본다
월드에 카메라가 있다
C++클래스로 Actor 하나를 생성해주고
블루프린트를 생성하여 카메라 메시를 입혀주었다
액터를 클릭하면 디테일창이 뜬다
이 디테일창에 나만의 카테고리를 추가하고
필요한 기능들을 프로퍼티에 추가해보는 작업을 할 예정이다
먼저 플러그인 모듈 쪽에 Property Editor를 등록해준다
IDetailCustomization을 상속받는 클래스 FStaticMesh_Detail에
IDetailCategoryBuilder& mesh = DetailBuilder.EditCategory("Mesh");
Mesh라는 카테고리가 없다면 생성해서 리턴해주고, 있다면 Mesh카테고리를 리턴해주게 된다
디테일 창에 Mesh라는 칸이 등록이 되려면
mesh.AddCustomRow(FText::FromString("FindColor")) //카테고리에 한 줄 추가, text는 검색할때 찾을 검색어
.NameContent()
[
//Slate UI 동적할당
SNew(STextBlock)
.Text(FText::FromString("Color")) //ui에 띄울 text
]//배열
.ValueContent()
.VAlign(VAlign_Center)
.MaxDesiredWidth(250)
[
SNew(SButton)
.VAlign(VAlign_Center) //가운데 정렬
.HAlign(HAlign_Fill) //채우기 정렬
.OnClicked(this, &FStaticMesh_Detail::OnClicked_Paint) //클릭했을때 이벤트(델리게이트)
.Content()
[
SNew(STextBlock)
.Text(FText::FromString("Paint"))
]
];
AddCustomRow함수를 이용해서 추가를 할 수 있다
Slate UI에서 동적할당은 SNew()로 이루어진다
OnClicked 이벤트를 이용해서 로그를 띄워보았다
잘 등록되었다
마지막으로 Paint버튼을 클릭했을 때 이벤트에 해당 메시의 색을 바꿔보는 작업을 해보았다
이를 위해서는 선택된 Object가 무엇인지 알아야한다
DetailBuilder.GetObjectsBeingCustomized(Objects);
virtual void GetObjectsBeingCustomized( TArray< TWeakObjectPtr<UObject> >& OutObjects ) const = 0;
DeatilBuilder에 있는 GetObjectsBeingCustomized함수는
선택된 object들이 배열의 형식으로 들어옴을 확인할 수 있다
OnClicked_Paint()에 선택된 object가 ACStaticMesh로 캐스팅되는지 확인하고
Paint()함수에서 색을 바꿔주는 설정을 해주면 된다
Color 프로퍼티를 생성한 것과 동일한 방법으로
Mesh 프로퍼티와 Save Meshes 버튼도 만들어주었다
참고로 카테고리와 프로퍼티를 숨길 수도 있다
이를 통해 Actor 카테고리의 CanbeDamaged가 숨겨졌고
Collision(콜리전) 카테고리가 사라진 것을 확인할 수 있다
'> Study > Unreal Engine 4' 카테고리의 다른 글
[Plugin] Console Command (0) | 2024.04.12 |
---|---|
[Plugin] Debugging (0) | 2024.04.11 |
[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 |