EditorExportPlugin
A script that is executed when exporting the project.
A script that is executed when exporting the project.
EditorExportPlugins are automatically invoked whenever the user exports the project. They can be used to modify scenes and resources during project export based on what Feature Tags are set. For each plugin, EditorExportPlugin._ExportBegin is called at the beginning of the export process and then EditorExportPlugin._ExportFile is called for each exported file.
Register a EditorExportPlugin by creating a new EditorPlugin and calling its EditorPlugin.AddExportPlugin method.
Declarations checked against C# SDK 1.0.0. Expand a name to see declarations and documentation.
Constructors1
EditorExportPluginConstructor
public EditorExportPlugin();Methods51
AddAppleEmbeddedPlatformBundleFilevoid
public void AddAppleEmbeddedPlatformBundleFile(string path);Adds an Apple embedded platform bundle file from the given path to the exported project.
| Name | Type | Default |
|---|---|---|
path | string | — |
AddAppleEmbeddedPlatformCppCodevoid
public void AddAppleEmbeddedPlatformCppCode(string code);Adds C++ code to the Apple embedded platform export. The final code is created from the code appended by each active export plugin.
| Name | Type | Default |
|---|---|---|
code | string | — |
AddAppleEmbeddedPlatformEmbeddedFrameworkvoid
public void AddAppleEmbeddedPlatformEmbeddedFramework(string path);Adds a dynamic library (*.dylib, .framework) to the Linking Phase in the Apple embedded platform's Xcode project and embeds it into the resulting binary.
Note: For static libraries (.a), this works in the same way as EditorExportPlugin.AddAppleEmbeddedPlatformFramework.
Note: This method should not be used for System libraries as they are already present on the device.
| Name | Type | Default |
|---|---|---|
path | string | — |
AddAppleEmbeddedPlatformFrameworkvoid
public void AddAppleEmbeddedPlatformFramework(string path);Adds a static library (.a) or a dynamic library (.dylib, *.framework) to the Linking Phase to the Apple embedded platform's Xcode project.
| Name | Type | Default |
|---|---|---|
path | string | — |
AddAppleEmbeddedPlatformLinkerFlagsvoid
public void AddAppleEmbeddedPlatformLinkerFlags(string flags);Adds linker flags for the Apple embedded platform export.
| Name | Type | Default |
|---|---|---|
flags | string | — |
AddAppleEmbeddedPlatformPlistContentvoid
public void AddAppleEmbeddedPlatformPlistContent(string plistContent);Adds additional fields to the Apple embedded platform's project Info.plist file.
| Name | Type | Default |
|---|---|---|
plistContent | string | — |
AddAppleEmbeddedPlatformProjectStaticLibvoid
public void AddAppleEmbeddedPlatformProjectStaticLib(string path);Adds a static library from the given path to the Apple embedded platform project.
| Name | Type | Default |
|---|---|---|
path | string | — |
AddAppleEmbeddedPlatformSpmPackage2 overloads
public void AddAppleEmbeddedPlatformSpmPackage(string url, string version, ReadOnlySpan<string> products);Adds a Swift Package Manager package to the Apple embedded platform's Xcode project. The url is the URL of the package, version is the version requirement (e.g. "1.0.0"), and products is an array of product names to include from the package.
Note: Only supported on iOS and visionOS.
| Name | Type | Default |
|---|---|---|
url | string | — |
version | string | — |
products | ReadOnlySpan<string> | — |
public void AddAppleEmbeddedPlatformSpmPackage(string url, string version, string[] products);Adds a Swift Package Manager package to the Apple embedded platform's Xcode project. The url is the URL of the package, version is the version requirement (e.g. "1.0.0"), and products is an array of product names to include from the package.
Note: Only supported on iOS and visionOS.
| Name | Type | Default |
|---|---|---|
url | string | — |
version | string | — |
products | string[] | — |
AddFile2 overloads
public void AddFile(string path, byte[] file, bool remap);Adds a custom file to be exported. path is the virtual path that can be used to load the file, file is the binary data of the file.
When called inside EditorExportPlugin._ExportFile and remap is true, the current file will not be exported, but instead remapped to this custom file. remap is ignored when called in other places.
file will not be imported, so consider using EditorExportPlugin._CustomizeResource to remap imported resources.
| Name | Type | Default |
|---|---|---|
path | string | — |
file | byte[] | — |
remap | bool | — |
public void AddFile(string path, ReadOnlySpan<byte> file, bool remap);Adds a custom file to be exported. path is the virtual path that can be used to load the file, file is the binary data of the file.
When called inside EditorExportPlugin._ExportFile and remap is true, the current file will not be exported, but instead remapped to this custom file. remap is ignored when called in other places.
file will not be imported, so consider using EditorExportPlugin._CustomizeResource to remap imported resources.
| Name | Type | Default |
|---|---|---|
path | string | — |
file | ReadOnlySpan<byte> | — |
remap | bool | — |
AddIosBundleFilevoid · Deprecated
public void AddIosBundleFile(string path);Adds an iOS bundle file from the given path to the exported project.
| Name | Type | Default |
|---|---|---|
path | string | — |
AddIosCppCodevoid · Deprecated
public void AddIosCppCode(string code);Adds C++ code to the iOS export. The final code is created from the code appended by each active export plugin.
| Name | Type | Default |
|---|---|---|
code | string | — |
AddIosEmbeddedFrameworkvoid · Deprecated
public void AddIosEmbeddedFramework(string path);Adds a dynamic library (*.dylib, .framework) to Linking Phase in iOS's Xcode project and embeds it into resulting binary.
Note: For static libraries (.a), this works the in same way as EditorExportPlugin.AddAppleEmbeddedPlatformFramework.
Note: This method should not be used for System libraries as they are already present on the device.
| Name | Type | Default |
|---|---|---|
path | string | — |
AddIosFrameworkvoid · Deprecated
public void AddIosFramework(string path);Adds a static library (.a) or a dynamic library (.dylib, *.framework) to the Linking Phase to the iOS Xcode project.
| Name | Type | Default |
|---|---|---|
path | string | — |
AddIosLinkerFlagsvoid · Deprecated
public void AddIosLinkerFlags(string flags);Adds linker flags for the iOS export.
| Name | Type | Default |
|---|---|---|
flags | string | — |
AddIosPlistContentvoid · Deprecated
public void AddIosPlistContent(string plistContent);Adds additional fields to the iOS project Info.plist file.
| Name | Type | Default |
|---|---|---|
plistContent | string | — |
AddIosProjectStaticLibvoid · Deprecated
public void AddIosProjectStaticLib(string path);Adds a static library from the given path to the iOS project.
| Name | Type | Default |
|---|---|---|
path | string | — |
AddMacOSPluginFilevoid
public void AddMacOSPluginFile(string path);Adds file or directory matching path to PlugIns directory of macOS app bundle.
Note: This is useful only for macOS exports.
| Name | Type | Default |
|---|---|---|
path | string | — |
AddSharedObject2 overloads
public void AddSharedObject(string path, ReadOnlySpan<string> tags, string target);Adds a shared object or a directory containing only shared objects with the given tags and destination path.
Note: In case of macOS exports, those shared objects will be added to Frameworks directory of app bundle.
In case of a directory code-sign will error if you place non code object in directory.
| Name | Type | Default |
|---|---|---|
path | string | — |
tags | ReadOnlySpan<string> | — |
target | string | — |
GetExportPlatformEditorExportPlatform
public EditorExportPlatform GetExportPlatform();Returns currently used export platform.
EditorExportPlatformGetExportPresetEditorExportPreset
public EditorExportPreset GetExportPreset();Returns currently used export preset.
EditorExportPresetGetOptionVariant
public Variant GetOption(StringName name);Returns the current value of an export option supplied by EditorExportPlugin._GetExportOptions.
| Name | Type | Default |
|---|---|---|
name | StringName | — |
VariantSkipvoid
public void Skip();To be called inside EditorExportPlugin._ExportFile. Skips the current file, so it's not included in the export.
_BeginCustomizeResourcesbool
public virtual bool _BeginCustomizeResources(EditorExportPlatform platform, string[] features);Return true if this plugin will customize resources based on the platform and features used.
When enabled, EditorExportPlugin._GetCustomizationConfigurationHash and EditorExportPlugin._CustomizeResource will be called and must be implemented.
| Name | Type | Default |
|---|---|---|
platform | EditorExportPlatform | — |
features | string[] | — |
bool_BeginCustomizeScenesbool
public virtual bool _BeginCustomizeScenes(EditorExportPlatform platform, string[] features);Return true if this plugin will customize scenes based on the platform and features used.
When enabled, EditorExportPlugin._GetCustomizationConfigurationHash and EditorExportPlugin._CustomizeScene will be called and must be implemented.
Note: EditorExportPlugin._CustomizeScene will only be called for scenes that have been modified since the last export.
| Name | Type | Default |
|---|---|---|
platform | EditorExportPlatform | — |
features | string[] | — |
bool_CustomizeResourceResource
public virtual Resource _CustomizeResource(Resource resource, string path);Customize a resource. If changes are made to it, return the same or a new resource. Otherwise, return null. When a new resource is returned, resource will be replaced by a copy of the new resource.
The path argument is only used when customizing an actual file, otherwise this means that this resource is part of another one and it will be empty.
Implementing this method is required if EditorExportPlugin._BeginCustomizeResources returns true.
Note: When customizing any of the following types and returning another resource, the other resource should not be skipped using EditorExportPlugin.Skip in EditorExportPlugin._ExportFile:
AtlasTextureCompressedCubemapCompressedCubemapArrayCompressedTexture2DCompressedTexture2DArrayCompressedTexture3D
| Name | Type | Default |
|---|---|---|
resource | Resource | — |
path | string | — |
Resource_CustomizeSceneEntity
public virtual Entity _CustomizeScene(Entity scene, string path);Customize a scene. If changes are made to it, return the same or a new scene. Otherwise, return null. If a new scene is returned, it is up to you to dispose of the old one.
Implementing this method is required if EditorExportPlugin._BeginCustomizeScenes returns true.
Note: To change a variable in your scene, use the @export annotation when declaring it.
| Name | Type | Default |
|---|---|---|
scene | Entity | — |
path | string | — |
Entity_EndCustomizeResourcesvoid
public virtual void _EndCustomizeResources();This is called when the customization process for resources ends.
_EndCustomizeScenesvoid
public virtual void _EndCustomizeScenes();This is called when the customization process for scenes ends.
_EndGenerateAppleEmbeddedProjectvoid
public virtual void _EndGenerateAppleEmbeddedProject(string path, bool willBuildArchive);This is called after Xcode project generation, but before it is built. Note: Only supported on iOS and visionOS.
| Name | Type | Default |
|---|---|---|
path | string | — |
willBuildArchive | bool | — |
_ExportBeginvoid
public virtual void _ExportBegin(string[] features, bool isDebug, string path, uint flags);Virtual method to be overridden by the user. It is called when the export starts and provides all information about the export. features is the list of features for the export, is_debug is true for debug builds, path is the target path for the exported project. flags is only used when running a runnable profile, e.g. when using native run on Android.
| Name | Type | Default |
|---|---|---|
features | string[] | — |
isDebug | bool | — |
path | string | — |
flags | uint | — |
_ExportEndvoid
public virtual void _ExportEnd();Virtual method to be overridden by the user. Called when the export is finished.
_ExportFilevoid
public virtual void _ExportFile(string path, string type, string[] features);Virtual method to be overridden by the user. Called for each exported file before EditorExportPlugin._CustomizeResource and EditorExportPlugin._CustomizeScene. The arguments can be used to identify the file. path is the path of the file, type is the Resource represented by the file (e.g. PackedEntity), and features is the list of features for the export.
Calling EditorExportPlugin.Skip inside this callback will make the file not included in the export.
| Name | Type | Default |
|---|---|---|
path | string | — |
type | string | — |
features | string[] | — |
_GetAndroidDependenciesstring[]
public virtual string[] _GetAndroidDependencies(EditorExportPlatform platform, bool debug);Virtual method to be overridden by the user. This is called to retrieve the set of Android dependencies provided by this plugin. Each returned Android dependency should have the format of an Android remote binary dependency: org.reckfell.example:my-plugin:0.0.0
For more information see Android documentation on dependencies.
Note: Only supported on Android and requires EditorExportPlatformAndroid.gradle_build/use_gradle_build to be enabled.
| Name | Type | Default |
|---|---|---|
platform | EditorExportPlatform | — |
debug | bool | — |
string[]_GetAndroidDependenciesMavenReposstring[]
public virtual string[] _GetAndroidDependenciesMavenRepos(EditorExportPlatform platform, bool debug);Virtual method to be overridden by the user. This is called to retrieve the URLs of Maven repositories for the set of Android dependencies provided by this plugin.
For more information see Gradle documentation on dependency management.
Note: Google's Maven repo and the Maven Central repo are already included by default.
Note: Only supported on Android and requires EditorExportPlatformAndroid.gradle_build/use_gradle_build to be enabled.
| Name | Type | Default |
|---|---|---|
platform | EditorExportPlatform | — |
debug | bool | — |
string[]_GetAndroidLibrariesstring[]
public virtual string[] _GetAndroidLibraries(EditorExportPlatform platform, bool debug);Virtual method to be overridden by the user. This is called to retrieve the local paths of the Android libraries archive (AAR) files provided by this plugin.
Note: Relative paths must be relative to Reckfell's asset://addons/ directory. For example, an AAR file located under asset://addons/hello_world_plugin/HelloWorld.release.aar can be returned as an absolute path using asset://addons/hello_world_plugin/HelloWorld.release.aar or a relative path using hello_world_plugin/HelloWorld.release.aar.
Note: Only supported on Android and requires EditorExportPlatformAndroid.gradle_build/use_gradle_build to be enabled.
| Name | Type | Default |
|---|---|---|
platform | EditorExportPlatform | — |
debug | bool | — |
string[]_GetAndroidManifestActivityElementContentsstring
public virtual string _GetAndroidManifestActivityElementContents(EditorExportPlatform platform, bool debug);Virtual method to be overridden by the user. This is used at export time to update the contents of the activity element in the generated Android manifest.
Note: Only supported on Android and requires EditorExportPlatformAndroid.gradle_build/use_gradle_build to be enabled.
| Name | Type | Default |
|---|---|---|
platform | EditorExportPlatform | — |
debug | bool | — |
string_GetAndroidManifestApplicationElementContentsstring
public virtual string _GetAndroidManifestApplicationElementContents(EditorExportPlatform platform, bool debug);Virtual method to be overridden by the user. This is used at export time to update the contents of the application element in the generated Android manifest.
Note: Only supported on Android and requires EditorExportPlatformAndroid.gradle_build/use_gradle_build to be enabled.
| Name | Type | Default |
|---|---|---|
platform | EditorExportPlatform | — |
debug | bool | — |
string_GetAndroidManifestElementContentsstring
public virtual string _GetAndroidManifestElementContents(EditorExportPlatform platform, bool debug);Virtual method to be overridden by the user. This is used at export time to update the contents of the manifest element in the generated Android manifest.
Note: Only supported on Android and requires EditorExportPlatformAndroid.gradle_build/use_gradle_build to be enabled.
| Name | Type | Default |
|---|---|---|
platform | EditorExportPlatform | — |
debug | bool | — |
string_GetCustomizationConfigurationHashulong
public virtual ulong _GetCustomizationConfigurationHash();Return a hash based on the configuration passed (for both scenes and resources). This helps keep separate caches for separate export configurations.
Implementing this method is required if EditorExportPlugin._BeginCustomizeResources returns true.
Note: EditorExportPlugin._CustomizeResource and EditorExportPlugin._CustomizeScene will not be called when the EditorExportPlugin script is modified unless this hash changes too.
ulong_GetExportFeaturesstring[]
public virtual string[] _GetExportFeatures(EditorExportPlatform platform, bool debug);Return a string[] of additional features this preset, for the given platform, should have.
| Name | Type | Default |
|---|---|---|
platform | EditorExportPlatform | — |
debug | bool | — |
string[]_GetExportOptionVisibilitybool
public virtual bool _GetExportOptionVisibility(EditorExportPlatform platform, string option);Validates option and returns the visibility for the specified platform. The default implementation returns true for all options.
| Name | Type | Default |
|---|---|---|
platform | EditorExportPlatform | — |
option | string | — |
bool_GetExportOptionWarningstring
public virtual string _GetExportOptionWarning(EditorExportPlatform platform, string option);Check the requirements for the given option and return a non-empty warning string if they are not met.
Note: Use EditorExportPlugin.GetOption to check the value of the export options.
| Name | Type | Default |
|---|---|---|
platform | EditorExportPlatform | — |
option | string | — |
string_GetExportOptionsReckfell.Collections.Array<Reckfell.Collections.Dictionary>
public virtual Reckfell.Collections.Array<Reckfell.Collections.Dictionary> _GetExportOptions(EditorExportPlatform platform);Return a list of export options that can be configured for this export plugin.
Each element in the return value is a Reckfell.Collections.Dictionary with the following keys:
option: A dictionary with the structure documented byReckfellObject.GetPropertyList, but all keys are optional.default_value: The default value for this option.update_visibility: An optional boolean value. If set totrue, the preset will emitReckfellObject.PropertyListChangedwhen the option is changed.
| Name | Type | Default |
|---|---|---|
platform | EditorExportPlatform | — |
Reckfell.Collections.Array<Reckfell.Collections.Dictionary>_GetExportOptionsOverridesReckfell.Collections.Dictionary
public virtual Reckfell.Collections.Dictionary _GetExportOptionsOverrides(EditorExportPlatform platform);Return a Reckfell.Collections.Dictionary of override values for export options, that will be used instead of user-provided values. Overridden options will be hidden from the user interface.
| Name | Type | Default |
|---|---|---|
platform | EditorExportPlatform | — |
Reckfell.Collections.Dictionary_GetNamestring
public virtual string _GetName();Return the name identifier of this plugin (for future identification by the exporter). The plugins are sorted by name before exporting. Implementing this method is required.
string_ShouldUpdateExportOptionsbool
public virtual bool _ShouldUpdateExportOptions(EditorExportPlatform platform);Return true if the result of EditorExportPlugin._GetExportOptions has changed and the export options of the preset corresponding to platform should be updated.
| Name | Type | Default |
|---|---|---|
platform | EditorExportPlatform | — |
bool_SupportsPlatformbool
public virtual bool _SupportsPlatform(EditorExportPlatform platform);Return true if the plugin supports the given platform.
| Name | Type | Default |
|---|---|---|
platform | EditorExportPlatform | — |
bool_UpdateAndroidPrebuiltManifestbyte[]
public virtual byte[] _UpdateAndroidPrebuiltManifest(EditorExportPlatform platform, byte[] manifestData);Provide access to the Android prebuilt manifest and allows the plugin to modify it if needed.
Implementers of this virtual method should take the binary manifest data from manifest_data, copy it, modify it, and then return it with the modifications.
If no modifications are needed, then an empty byte[] should be returned.
| Name | Type | Default |
|---|---|---|
platform | EditorExportPlatform | — |
manifestData | byte[] | — |
byte[]