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 예시 코드