https://docs.unrealengine.com/5.3/ko/calling-blueprints-in-the-unreal-editor/
Runtime에서 호출할 수 있는 함수를 Editor에서 Editor UI를 통해 호출하는 방법
Actor를 상속하는 클래스에만 적용
Custom Function의 Detail Panel에서 Call in Editor를 활성화하면 Editor에서 호출 가능
단, 입력에서 Parameter를 요구하면 보이지 않음
https://docs.unrealengine.com/5.3/ko/editor-utility-widgets-in-unreal-engine/
UMG 기반으로 만드는 Editor 용 UI
새로운 Window에서 열림
https://docs.unrealengine.com/5.3/ko/scripted-actions-in-unreal-engine/
Content Browser나 Level Viewport의 Actor를 우클릭하여 실행하는 함수
Asset에서 작동하려면 AssetActionUtility 상속
Actor에서 작동하려면 ActorActionUtility 상속
Actor나 Asset에 종속적이지 않은 Action을 정의할 때 사용하는 듯
Actor나 Asset을 우클릭하면 나타나는 Context Menu에서 Scripted Action의 SubMenu에서 호출 가능
특정 Object Type을 지정하고자 할 경우 'GetSupportedClass'함수를 override하여 지정
입력 매개변수 지정 가능
https://docs.unrealengine.com/5.3/ko/running-blueprints-at-unreal-editor-startup/
EditorUtilityObject를 상속하는 class만 가능
Subsystem에 바인딩하여 Asset 규칙이 일치하는지 등을 점검하는 용도로 사용 가능
https://docs.unrealengine.com/5.3/ko/setting-up-editor-modules-for-customizing-the-editor-in-unreal-engine/
Runtime에 수행해야 하는 code와 Editor에서 수행되어야 하는 code를 Module을 통해 분리하는 것이 좋음
.Build.cs 파일과 .Target.cs파일, .uproject 파일을 수정하면 Editor에서 '새로운 C++ 클래스 마법사`를 수행할 때 모듈 선택 가능
https://docs.unrealengine.com/5.3/ko/details-panel-customizations-in-unreal-engine/
Unreal은 UPROPERTY 매크로 정보를 이용하여 Detail Panel에 프로퍼티를 출력하는 방법을 결정
그보다 더 자세하게 수정하고자 할 경우 IDetailCustomization, IPropertyTypeCustomization를 상속
UObject 파생 클래스에 대한 Detail Panel Customization
CustomizeDetails 함수 override를 통해 Slate UI code 작성
명시하지 않은 UPROPERTY 항목은 Default로 출력
Custom Property 대한 Detail Panel Customization
주로 구조체에 사용되는 듯
CustomizeHeader 함수 override를 Detail Panel의 Header 부분 수정
CustomizeChilren 함수 override를 통해 Slate UI code 작성
매개변수로 넘어오는 IDetailChildBuilder::AddProperty를 통해 수정하고자 하는 Property 지정
명시하지 않은 UPROPERTY 항목은 Default로 출력
UObject의 Property와 Category 변경을 지원하는 Utility 함수
IDetailCustomization::CustomizeDetail에서 사용 가능
Custom Property의 변경을 지원하는 Utility 함수
IPropertyCustomization::CustomizeHeader, IPropertyCustomization::CustomizeChildren에서 사용 가능
변경되는 Property에 반응하는 Delegate와 Property에 대한 Reference 등 Detail Panel에 정보를 제공하는 Wrapper?
그냥 Property가 유효한지 확인할 수 있는 Handler
굳이 따지자면 Property의 Wrapper
폰트, 섬네일, IPropertyUtilities에 대한 Shared Reference 제공
IPropertyUtilities는 Detail Panel Refresh, Color Select Tool Window 등을 지원
https://docs.unrealengine.com/5.3/ko/details-panel-quickstart-guide-for-unreal-engine/
IModuleInterface를 상속하면서 구현한 StartupModule(), ShutdownModule()에서 CustomProperty의 Layout을 등록
Unity의 경우 Attribute로 CustomEditor를 등록하면 자동으로 인식했지만 UE의 경우 명시적으로 Layout과 Class, Struct을 지정해야 하는 방식
https://docs.unrealengine.com/5.3/ko/reordering-and-hiding-properties-in-details-panel-customizations-in-unreal-engine/
Property의 순서 변경 및 숨기기, Advance, Sort 정의 가능
https://docs.unrealengine.com/5.3/ko/refreshing-custom-details-panels-in-unreal-engine/
Normally, the Details Panel rebuilds itself only when you select an object. This means that if you use edit conditions to add, hide, or skip adding a field in a Details Panel customization, the Details Panel updates even when you change the variables used in your edit condition. Instead, the Details Panel updates when you de-select and re-select the object.
일반적으로 디테일 패널(Details Panel) 은 사용자가 오브젝트를 선택할 때만 자체 리빌드됩니다. 즉, 편집 조건을 사용하여 디테일 패널 커스터마이제이션에서 필드를 추가하거나 숨기거나 추가를 건너뛰는 경우, 편집 조건에 사용된 변수를 변경해도 디테일 패널이 업데이트됩니다. 대신, 오브젝트 선택을 해제하거나 재선택할 때도 디테일 패널이 업데이트됩니다.
내부적인 Logic에 의해 Property가 변경되어도 Detail Panel에는 바로 반영되지는 않지만 강제로 갱신하거나 Edit Condition을 통해 재선택하든, Object를 재선택하는 상황에만 Detail Panel에 수정된 정보가 갱신된다는 의미인 듯
Unity에서 Detail Panel에서 Method를 통해 값을 수정해도 명시하지 않으면 다시 선택 시 수정된 값이 반영되지 않았던 것을 생각하면 아마 비슷한 원리인 듯
DetailBuilder::ForceRefreshDetails()를 통해 강제 갱신 가능
IPropertyHandler::SetOnPropertyValueChanged에 Delegate를 등록하는 형식으로 구현하면 Property의 Value가 변경되는 즉시 갱신 가능
https://docs.unrealengine.com/5.3/ko/edit-conditions-for-properties-in-the-details-panel-in-unreal-engine/
조건에따라 Detail Panel에서 View되는 방식을 변경하는 방법
변수의 간단한 Edit Condition은 UPROPERTY를 통해 작성 가능하지만, 함수가 필요할 경우 ReDraw할 때 Property를 추가, 삭제하거나 Delegate를 통해 등록
https://docs.unrealengine.com/5.3/ko/slate-editor-window-quickstart-guide-for-unreal-engine/
Slate는 Live Coding으로 컴파일 할 수 없음