Plugin Descriptor File
The .uplugin
plugin descriptor file contains information about your plugin stored in JSON format. This is mostly information that is displayed to users in the Plugins Browser, but there are a couple of requirements.
Requirements
- Your
.uplugin
file must be located in the root directory of your plugin's folder. - Every plugin must have at least one module listed in the
.uplugin
file.
Example
- MyCustomTools.uplugin
{
"FileVersion" : 3,
"Version" : 1,
"VersionName" : "1.0",
"FriendlyName" : "My Custom Tools",
"Description" : "This description appears in the Plugins browser.",
"Category" : "My Custom Tools",
"CreatedBy" : "Eric Buchholz",
"CreatedByURL" : "http://ericbuchholz.com",
"DocsURL" : "http://ericbuchholz.com/unreal-tools/plugins-modules/plugin-descriptor-file",
"EnabledByDefault" : true,
"CanContainContent" : true,
"Modules" :
[
{
"Name" : "MyCustomTools",
"Type" : "Runtime"
},
{
"Name" : "MyCustomToolsEditor",
"Type" : "Editor"
}
]
}
The only keys required for code plugins are FileVersion
and Modules
, but including other fields will make your plugin more discoverable and people will know who to yell at when things break.
A list of all available keys with descriptions can be found here: \Engine\Source\Runtime\Projects\Public\PluginDescriptor.h
Modules
The most important part of the .uplugin
file is where we list the modules that are part of our plugin. Doing so is easy—the only required information is the name and the type, though there are other advanced optional settings, such as LoadingPhase
.
Module Type
Perhaps somewhat counterintuitively, the .uplugin
file is where we define what types our modules are (not in the .Build.cs
file). Below is a list of the module types you will most likely use to make tools, but here's a link to more in-depth documentation if you want to learn more. Your plugin can have modules that use different types.
- Runtime: Loaded in all cases, including shipped games.
- Editor: Only loaded when the editor starts up.
- Developer: Only loaded in development runtime or editor builds, but never in shipping builds.