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