[UE4]為專案加入Plugin

在UE4中,所有的Plugin主要存在於二個地方:

l Engine Plugin:${UE4_ENGINE_ROOT}/Engine/Plugin/,我們在Marketplace上購買的Plugin會下載到其中的Marketplace資料夾。

l Game Plugin:${PROJECT_NAME}/Plugin/,通常我們自己製作的Plugin都是放在這個地方。

製作Plugin的方法非常簡單,我們只需要使用引擎Editor中所提供的工具,就可以快速的製作出各種不同用途的Plugin給專案使用。這個工具提供了各種不同的Plugin範本,在建立的同時會同時為我們的Plugin建立一個預設的Module。

首先,讓我們試著建立一個空白的Plugin吧。

在Editor中選擇Edit->Plugins後,就會跳出Figure 2.6.1畫面。

image

Figure 2.6.1 按下NewPlugin後,就會出現Plugin範本讓我們選擇。

image

Figure 2.6.2 選擇Blank,填入必須資訊按下Create Plugin之後,就會在${PROJECT_NAME}/Plugins下面建立出一個新的Plugin。

在建立完Plugin之後,我們會得到Figure 2.6.3中的目錄結構跟檔案。

image

Figure 2.6.3 使用Blank Plugin範本所建立出來的Plugin。

其中:

l Resources/Icon128.png:為一個128×128大小的png,主要是用來顯示在Editor中。

l ${PLUGIN_NAME}.uplugin:存儲有關於這個Plugin的相關資訊,例如版本號碼、Plugin需載入的Module、作者名稱……等等。

l ${PLUGIN_NAME}.Build.cs:用來描述這個Module跟其他Module的相依關係、其相依專案include檔所存放的相對路徑與其他各種編譯設定。

l ${PLUGIN_NAME}.h跟${PLUGIN_NAME}.cpp:Module Interface的相關定義與實作。

在打開.uplugin後,會看到一個用json格式來描述Module的資訊,見Code 2.6.1。

HorizonGameLibrary.uplugin

{

“FileVersion”: 3,

“Version”: 1,

“VersionName”: “1.0”,

“FriendlyName”: “HorizonGameLibrary”,

“Description”: “Describe about your Plugin here”,

“Category”: “Other”,

“CreatedBy”: “your name here”,

“CreatedByURL”: “”,

“DocsURL”: “”,

“MarketplaceURL”: “”,

“SupportURL”: “”,

“CanContainContent”: true,

“IsBetaVersion”: false,

“Installed”: false,

“Modules”: [

{

“Name”: “HorizonGameLibrary”,

“Type”: “Runtime”,

“LoadingPhase”: “Default”

}

]

}

Code 2.6.1 Host Type在Blank Plugin的範本預設為Developer,要設成Runtime我們才可以在Shipping中使用。

若是我們想要在這個Plugin中增加其他的Module,只要將相關的程式碼加到${PLUGIN_NAME}/Source下面、並把該Module的載入資訊加到uplugin中就行。比較需要注意的是,Plugin所使用的是IMPLEMENT_MODULE來實作我們的Module Interface,而不是IMPLEMENT_GAME_MODULE。

Leave a Reply

Your email address will not be published. Required fields are marked *