Unreal Engine에서 플러그인을 구현하는 것은 복잡할 수 있지만, Unreal Engine이 제공하는 다양한 기능을 사용하면 플러그인을 쉽게 구현할 수 있다.

 

 

 


 

 

 

 

 

 
Plugins
  Example
    ButtonCommand.h .cpp 생성
Example.Build.cs

ExampleConsoleCommand.h .cpp 
ExampleDebuggerCategory.h .cpp
ExampleModule.h .cpp
StaticMesh_Detail.h .cpp
Source
  U2212_05
    Utilities
    CHelper.h
CLog.h .cpp
    Global.h
CStaticMesh.h .cpp
U2212_05.Build.cs
    U2212_05.uproject
 

 

 

 

 

 

 

Plugin (Button Command)

 


 

 

 

설명

 

Command List   Tool Bar

Command Info

Extender
- Button
     

 

더보기
template<typname T>
class A
{
T a;
void Test()
{
T b;
}
}
A<int> a;
class B : A<int>
{
}
//부모에서 자식 자료형을 다루는 경우

 

더보기
template<typname T>
class A
{
static T* Get();
int a;
}
//부모의 공용영역에 접근하기 위해(=static함수를 사용하기 위해) A<B>를사용한다.
class B : A<B>
{
int b;
}
B ob;
B::Get()

 

팩토리 패턴에 많이 사용한다. 아래의 ButtonCommand는 가변 싱글톤 팩토리 패턴을 사용하였다.

 


 

 

ButtonCommand 생성

 

새 C++ 클래스 - 없음 - ButtonCommand 생성

 

 

ButtonCommand.h

더보기
#pragma once
#include "CoreMinimal.h"
#include "Framework/Commands/Commands.h"
class EXAMPLE_API FButtonCommand
: public TCommands<FButtonCommand>
{
public:
FButtonCommand();
~FButtonCommand();
public:
void RegisterCommands() override;
public:
TSharedPtr<FUICommandList> Command;
public:
TSharedPtr<FUICommandInfo> LoadMesh;
};

 

 

 

ButtonCommand.cpp

더보기
#include "ButtonCommand.h"
FButtonCommand::FButtonCommand()
: TCommands("ToolBar_Buttons", FText(), NAME_None, FEditorStyle::GetStyleSetName())
{
Command = MakeShareable(new FUICommandList());
}
FButtonCommand::~FButtonCommand()
{
if (Command.IsValid())
Command.Reset();
}
void FButtonCommand::RegisterCommands()
{
#define LOCTEXT_NAMESPACE ""
UI_COMMAND(LoadMesh, "LoadMesh", "", EUserInterfaceActionType::Button)//버튼, 체크박스, 라디오버튼 등 원하는 방식으로 버튼을 만들어준다.
#undef LOCTEXT_NAMESPACE
}

EUserInterfaceActionType

  • 버튼이 어떤 방식으로 연결될 것인가를 결정한다.
  • 버튼 종류: Button, Check, CollapsedButton, RadioButton, ToggleButton, None.

 

 

 

 

※ 언리얼 규칙

 

#define LOC_DEFINE_REGION ~ #unef LOC_DEFINE_REGION 안에 정의된 매크로는 

반드시 #define LOCTEXT_NAMESPACE ~ #define LOCTEXT_NAMESPACE  안에 정의되어야 한다. 

#define LOC_DEFINE_REGION ~ #unef LOC_DEFINE_REGION
#define LOCTEXT_NAMESPACE ~ #define LOCTEXT_NAMESPACE 안에 정의된 UI_COMMAND 예시 코드