[UE] Plugin, Slate UI

언리얼 엔진에서 플러그인은 엔진의 기능을 확장하는 모듈식 구성요소이다. 사용자 정의 플러그인을 생성하여 새로운 기능을 추가하거나 기존 기능을 수정할 수 있으므로 개발자가 특정 요구 사항에 맞게 엔진을 조정할 수 있다. 커스텀 플러그인을 만들 때 모듈식 디자인의 모범 사례를 따르고 언리얼 엔진의 프로그래밍 규칙을 준수하는 것이 중요하다.
목차
Plugins | ||
Example | ||
Example.Build.cs ExampleModule.h .cpp ExampleDebuggerCategory.h .cpp 생성 |
||
Slate UI
언리얼 엔진에서 커스텀 플러그인을 만들기
- 언리얼 에디터를 열고 "플러그인" 메뉴로 이동한다.
- "새 플러그인"을 클릭하고 생성할 플러그인 유형을 선택한다.
- 플러그인의 이름과 위치를 선택하고 "플러그인 만들기"를 클릭한다.
- 소스 코드 디렉토리를 포함하여 기본 파일 및 폴더 세트로 플러그인이 생성된다.
- 소스 코드 디렉토리에서 새 C++ 클래스 또는 블루프린트 스크립트를 생성하여 플러그인용 새 모듈을 생성한다.
- 모듈의 소스 코드 또는 Blueprint 스크립트에서 플러그인의 기능을 정의한다.
- 소스 코드 또는 Blueprint 스크립트를 컴파일하여 플러그인을 빌드한다.
- 플러그인이 빌드되면 언리얼 엔진 프로젝트에 추가할 수 있는 별도의 모듈로 패키징 및 배포할 수 있다.
커스텀 플러그인을 만들 때 모듈식 디자인의 모범 사례를 따르고 언리얼 엔진의 프로그래밍 규칙을 준수하는 것이 중요하다.
모듈화
Lib (static Library)
- 프로그래밍의 일부분이 되어 똑같은 메모리 공간을 사용한다.
DLL (Dynamic Link Library)
- 별도의 메모리 공간을 사용한다. Map 단위를 DLL로 만들 수도 있다.
- 해당 경우, 점검 시 해당 맵만 멈춰놓고(=얼려놓고) 점검할 수 있다.
Slate UI
Game | ||
private Module | ← (X) | Project |
public Module | ← (O) |
UMG vs. Slate UI
UMG는 게임에서 뜨는 UI
Slate UI는 Editor에 뜨는 UI
EVerbosity
https://docs.unrealengine.com/4.26/en-US/API/Runtime/Core/Logging/ELogVerbosity__Type/
ELogVerbosity::Type
Enum that defines the verbosity levels of the logging system.
docs.unrealengine.com
프로젝트 & 플러그인
새 프로젝트 생성


새 플러그인 만들기




Plugins > Example
- Binaries: Plugin용 DLL이 컴파일 되어 들어가있다.
- Content: 에셋용. 게임 런타임쪽 들어갈 리소스.
- Resource: 파일을 직접적으로 사용. ex. 이미지, 사운드 파일.
- .uplugin: plugin 엔진 설정.
Plugin 코드
UObject로부터 상속받지 않는 모든 Class는 F를 붙인다. ex. FExampleModule
ExampleBuild.cs
Game | ||
private Module | ← (X) | Project |
public Module | ← (O) |
ExampleBuild.cs
using UnrealBuildTool; public class Example : ModuleRules { public Example(ReadOnlyTargetRules Target) : base(Target) //public은 외부에 공개 { PCHUsage = ModuleRules.PCHUsageMode.UseExplicitOrSharedPCHs; PublicIncludePaths.Add(ModuleDirectory); PublicDependencyModuleNames.Add("Core"); PrivateDependencyModuleNames.Add("CoreUObject"); PrivateDependencyModuleNames.Add("Engine"); PrivateDependencyModuleNames.Add("Slate"); PrivateDependencyModuleNames.Add("SlateCore"); PrivateDependencyModuleNames.Add("GameplayDebugger"); } }
PrivateDependencyModuleNames (List<String>)
- List of private dependency module names. These are modules that our private code depends on but nothing in our public include files depend on.
ExampleModule
ExampleModule.h
#pragma once #include "CoreMinimal.h" #include "Modules/ModuleManager.h" class FExampleModule : public IModuleInterface { public: virtual void StartupModule() override; virtual void ShutdownModule() override; };
ExampleModule.cpp
#include "ExampleModule.h" #include "ExampleDubuggerCategory.h" #include "GameplayDebugger.h" #define LOCTEXT_NAMESPACE "FExampleModule" IMPLEMENT_MODULE(FExampleModule, Example)//모듈의 시작점을 알려준다. void FExampleModule::StartupModule() { IGameplayDebugger::FOnGetCategory category; category.BindStatic(&FExampleDubuggerCategory::MakeInstance); IGameplayDebugger::Get().RegisterCategory("Example", category, EGameplayDebuggerCategoryState::EnabledInGameAndSimulate, 5); //5번 슬롯 할당 IGameplayDebugger::Get().NotifyCategoriesChanged(); } void FExampleModule::ShutdownModule() { if (IGameplayDebugger::IsAvailable()) IGameplayDebugger::Get().UnregisterCategory("Example"); } #undef LOCTEXT_NAMESPACE
ExampleDebuggerCategory
새 C++ 클래스 - ExampleDebuggerCategory 생성



ExampleDebuggerCategory.h
#pragma once #include "CoreMinimal.h" #include "GameplayDebuggerCategory.h" class EXAMPLE_API FExampleDubuggerCategory : public FGameplayDebuggerCategory { public: FExampleDubuggerCategory(); ~FExampleDubuggerCategory(); public: static TSharedRef<FGameplayDebuggerCategory> MakeInstance(); public: void CollectData(APlayerController* OwnerPC, AActor* DebugActor) override; };
ExampleDebuggerCategory.cpp
#include "ExampleDubuggerCategory.h" #include "GameFramework/Character.h" #include "GameFramework/PlayerController.h" FExampleDubuggerCategory::FExampleDubuggerCategory() { } FExampleDubuggerCategory::~FExampleDubuggerCategory() { } TSharedRef<FGameplayDebuggerCategory> FExampleDubuggerCategory::MakeInstance() { return MakeShareable(new FExampleDubuggerCategory()); } void FExampleDubuggerCategory::CollectData(APlayerController * OwnerPC, AActor * DebugActor) { FGameplayDebuggerCategory::CollectData(OwnerPC, DebugActor); //GLog->Log(OwnerPC->GetPawn()->GetName()); //if (!!DebugActor) // GLog->Log(DebugActor->GetName()); }


프로젝트 세팅 - 게임플레이 디버거 - Add Ons - 카테고리
- 0번에 Example이 들어왔다.
- 아래의 Override Slot Idx를 체크하면 Slot Idx를 바꿀 수 있다.
실행화면

'⭐ Unreal Engine > UE Plugin - Basic' 카테고리의 다른 글
[UE] Plugin (Save StaticMesh & RenderData, LOD) (0) | 2023.04.12 |
---|---|
[UE] Plugin (StaticMesh Detail) (0) | 2023.04.07 |
[UE] StaticMesh (0) | 2023.04.06 |
[UE] Console Command (0) | 2023.04.05 |
[UE] Console, DrawDebugLine (0) | 2023.04.04 |
댓글
이 글 공유하기
다른 글
-
[UE] Plugin (StaticMesh Detail)
[UE] Plugin (StaticMesh Detail)
2023.04.07플러그인 모듈 생성 플러그인 모듈은 플러그인의 기능을 구현하는 C++ 코드다. 모듈은 모든 Unreal Engine 모듈과 동일한 방식으로 작동하며, 헤더 파일과 소스 파일로 구성된다. Unreal Editor에서 "Add New -> C++ Class"를 선택하고 "Module Class"를 선택하여 모듈 클래스를 만들 수 있다. 목차 Plugins Example Example.Build.csExampleConsoleCommand.h .cpp ExampleDebuggerCategory.h .cppExampleModule.h .cppStaticMesh_Detail.h .cppSource Utilities CHelper.hCLog.h .cpp Global.hCStaticMesh.h .cpp…. -
[UE] StaticMesh
[UE] StaticMesh
2023.04.06플러그인 시스템을 통해 개발자는 Unreal Editor 내에서 StaticMesh에 적용할 수 있는 새로운 도구, 수정자 및 렌더링 옵션을 생성할 수 있으며 이러한 새로운 기능을 다른 개발자 또는 더 넓은 커뮤니티와 쉽게 공유할 수 있다. StaticMesh 플러그인을 만들려면 개발자는 먼저 Unreal의 Asset Editor를 사용하여 수행할 수 있는 새 자산 유형을 정의해야 한다. 이 새로운 자산 유형은 새로운 재료 또는 충돌 모양과 같은 사용자 정의 속성 및 기능으로 확장될 수 있다. 플러그인이 생성되면 다른 프로젝트에서 사용할 수 있도록 패키징 및 배포할 수 있으며, 개발자는 언리얼 에디터의 사용자 인터페이스를 통해 자신의 StaticMesh에 새 기능을 쉽게 추가할 수 있다. 전반적으로 Un… -
[UE] Console Command
[UE] Console Command
2023.04.05콘솔이 열리면 게임 설정 변경, 액터 스폰 또는 사용자 지정 스크립트 실행과 같은 다양한 작업을 수행할 수 있는 명령을 입력할 수 있다. 전반적으로 콘솔은 언리얼 엔진으로 작업하는 개발자에게 필수적인 도구로, 전체 프로젝트를 다시 컴파일하고 다시 시작하지 않고도 게임을 빠르게 테스트하고 디버그할 수 있는 방법을 제공한다. 목차 Plugins Example Example.Build.csExampleConsoleCommand.h .cpp ExampleDebuggerCategory.h .cppExampleModule.h .cpp Console Command FModuleManager::LoadModuleChecked FModuleManager::LoadModuleChecked("__Pr… -
[UE] Console, DrawDebugLine
[UE] Console, DrawDebugLine
2023.04.04언리얼 엔진에서 콘솔은 사용자가 실시간으로 명령을 입력하고 기능을 실행할 수 있게 해주는 개발자 도구이다. 개발 중에 게임을 테스트하고 디버깅하는 방법을 제공하는 중요한 기능이다. 콘솔은 게임 내 또는 편집기에서 물결표 키(~)를 눌러 액세스할 수 있다. 콘솔이 열리면 게임 설정 변경, 액터 스폰 또는 사용자 지정 스크립트 실행과 같은 다양한 작업을 수행할 수 있는 명령을 입력할 수 있다. 목차 Plugins Example Example.Build.csExampleConsoleCommand.h .cpp 생성ExampleDebuggerCategory.h .cpp ExampleModule.h .cpp Console 개념정리 언리얼 엔진의 몇 가지 일반적인 콘솔 명령: stat fps: 현재…
댓글을 사용할 수 없습니다.