Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
EditorExportPlugin
继承: RefCounted < Object
在导出项目时执行的脚本。
描述
EditorExportPlugin 会在用户导出项目时自动调用。它们最常见的用途是确定哪些文件应该包含在导出的项目中。对于每个插件,导出过程开始时都会调用 _export_begin(),然后会为每一个导出的文件调用 _export_file()。
要使用 EditorExportPlugin,请先用 EditorPlugin.add_export_plugin() 注册。
教程
方法
方法说明
bool _begin_customize_resources(platform: EditorExportPlatform, features: PackedStringArray) virtual const 🔗
如果该插件将根据所使用的平台和功能自定义资源,则返回 true
。
启用后,_get_customization_configuration_hash() 和 _customize_resource() 将被调用并且必须被实现。
bool _begin_customize_scenes(platform: EditorExportPlatform, features: PackedStringArray) virtual const 🔗
如果该插件将根据所使用的平台和功能自定义场景,则返回 true
。
启用后,_get_customization_configuration_hash() 和 _customize_scene() 将被调用并且必须被实现。
注意:只会为上一次导出后发生修改的场景调用 _customize_scene()。
Resource _customize_resource(resource: Resource, path: String) virtual 🔗
对资源进行自定义。如果进行了修改,请返回相同的或新的资源,否则请返回 null
。如果返回的是新资源,则会使用新资源的副本替换 resource
。
path
参数只在自定义实际文件时使用,否则这个资源是另一个资源的一部分,该参数为空。
如果 _begin_customize_resources() 返回 true
,则需要实现该方法。
注意:自定义以下类型并返回不同资源时,不应在 _export_file() 中使用 skip() 跳过返回的资源:
Node _customize_scene(scene: Node, path: String) virtual 🔗
定制一个场景。如果对其进行了修改,则返回相同的或新的场景。否则,返回 null
。如果返回一个新的场景,则由你来处理旧的场景。
如果 _begin_customize_scenes() 返回 true
,则需要实现该方法。
void _end_customize_resources() virtual 🔗
资源的自定义处理完成时调用。
void _end_customize_scenes() virtual 🔗
场景的自定义处理完成时调用。
void _export_begin(features: PackedStringArray, is_debug: bool, path: String, flags: int) virtual 🔗
由用户重写的虚方法。它在导出开始时调用,并提供有关导出的所有信息。features
是导出的特性列表,is_debug
是 true
时用于调试构建,path
是导出项目的目标路径。flags
仅在运行可运行配置文件时使用,例如在 Android 上使用本机运行时。
void _export_end() virtual 🔗
可以被用户重写的虚方法。在导出完成后被调用。
void _export_file(path: String, type: String, features: PackedStringArray) virtual 🔗
用户要重写的虚方法。在 _customize_resource() 和 _customize_scene() 之前为每个导出的文件调用。参数可用于识别文件。path
是文件的路径,type
是文件所代表的 Resource(例如 PackedScene),features
是导出的特性列表。
在该回调中调用 skip() 将使文件不包含在导出中。
PackedStringArray _get_android_dependencies(platform: EditorExportPlatform, debug: bool) virtual const 🔗
由用户覆盖的虚方法。调用该函数是为了检索该插件提供的 Android 依赖项集。每个返回的 Android 依赖项应具有 Android 远程二进制依赖项的格式:org.godot.example:my-plugin:0.0.0
有关详细信息,请参阅 有关依赖项的 Android 文档。
注意:仅在 Android 上受支持,并且需要启用 EditorExportPlatformAndroid.gradle_build/use_gradle_build。
PackedStringArray _get_android_dependencies_maven_repos(platform: EditorExportPlatform, debug: bool) virtual const 🔗
由用户覆盖的虚方法。调用该函数是为了检索该插件提供的 Android 依赖项集的 Maven 存储库的 URL。
有关更多信息,请参阅 有关依赖管理的 Gradle 文档。
注意:Google 的 Maven 存储库和 Maven Central 存储库默认已包含在内。
注意:仅在 Android 上受支持,并且需要启用 EditorExportPlatformAndroid.gradle_build/use_gradle_build。
PackedStringArray _get_android_libraries(platform: EditorExportPlatform, debug: bool) virtual const 🔗
由用户覆盖的虚方法。调用该函数是为了检索该插件提供的 Android 库存档(AAR)文件的本地路径。
注意:相对路径必须相对于 Godot 的 res://addons/
目录。例如,位于 res://addons/hello_world_plugin/HelloWorld.release.aar
下的 AAR 文件,可以使用 res://addons/hello_world_plugin/HelloWorld.release.aar
作为绝对路径,或使用 hello_world_plugin/HelloWorld.release.aar
作为相对路径返回。
注意:仅在 Android 上受支持,并且需要启用 EditorExportPlatformAndroid.gradle_build/use_gradle_build。
String _get_android_manifest_activity_element_contents(platform: EditorExportPlatform, debug: bool) virtual const 🔗
由用户覆盖的虚方法。这在导出时用于更新生成的 Android 清单中的 activity
元素的内容。
注意:仅在 Android 上受支持,并且需要启用 EditorExportPlatformAndroid.gradle_build/use_gradle_build。
String _get_android_manifest_application_element_contents(platform: EditorExportPlatform, debug: bool) virtual const 🔗
由用户覆盖的虚方法。这在导出时用于更新生成的 Android 清单中的 application
元素的内容。
注意:仅在 Android 上受支持,并且需要启用 EditorExportPlatformAndroid.gradle_build/use_gradle_build。
String _get_android_manifest_element_contents(platform: EditorExportPlatform, debug: bool) virtual const 🔗
由用户覆盖的虚方法。这在导出时用于更新生成的 Android 清单中的 manifest
元素的内容。
注意:仅在 Android 上受支持,并且需要启用 EditorExportPlatformAndroid.gradle_build/use_gradle_build。
int _get_customization_configuration_hash() virtual const 🔗
根据传入的配置返回一个哈希值(对于场景和资源)。这有助于为单独的导出配置保留单独的缓存。
如果 _begin_customize_resources() 返回 true
,则需要实现该方法。
PackedStringArray _get_export_features(platform: EditorExportPlatform, debug: bool) virtual const 🔗
返回该预设对于给定的 platform
,应该具有的附加功能的 PackedStringArray。
bool _get_export_option_visibility(platform: EditorExportPlatform, option: String) virtual const 🔗
可选。
验证 option
并返回 platform
平台是否可见。默认实现会为所有选项都返回 true
。
String _get_export_option_warning(platform: EditorExportPlatform, option: String) virtual const 🔗
检查给定 option
的要求,如果不满足则返回非空警告字符串。
注意:使用 get_option() 检查导出选项的值。
Array[Dictionary] _get_export_options(platform: EditorExportPlatform) virtual const 🔗
返回导出选项列表,能够用来配置这个导出插件。
返回值中的每个元素都是一个 Dictionary,包含如下字段:
option
:字典,结构与 Object.get_property_list() 文档中的相同,但所有字段都是可选的。default_value
:该选项的默认值。update_visibility
:可选的布尔值。如果设为true
,则该选项发生变化时,预设会发出 Object.property_list_changed。
Dictionary _get_export_options_overrides(platform: EditorExportPlatform) virtual const 🔗
返回导出选项的覆盖值的 Dictionary,将使用该值代替用户提供的值。覆盖的选项将从用户界面中隐藏。
class MyExportPlugin extends EditorExportPlugin:
func _get_name() -> String:
return "MyExportPlugin"
func _supports_platform(platform) -> bool:
if platform is EditorExportPlatformPC:
# 可在所有桌面平台上运行,包括 Windows、MacOS 和 Linux。
return true
return false
func _get_export_options_overrides(platform) -> Dictionary:
# 覆盖“嵌入 PCK”以始终启用。
return {
"binary_format/embed_pck": true,
}
String _get_name() virtual const 🔗
返回该插件的名称标识符(供导出器将来识别)。插件在导出前按名称排序。
需要实现该方法。
bool _should_update_export_options(platform: EditorExportPlatform) virtual const 🔗
如果 _get_export_options() 的结果发生了改变,与 platform
对应的导出预设的选项需要更新,则返回 true
。
bool _supports_platform(platform: EditorExportPlatform) virtual const 🔗
如果插件支持给定的 platform
,则返回 true
。
void add_file(path: String, file: PackedByteArray, remap: bool) 🔗
添加一个要导出的自定义文件。path
是可以用来加载该文件的虚拟路径,file
是该文件的二进制数据。
在 _export_file() 中调用时,如果 remap
为 true
,则当前文件将不会被导出,而是被重新映射到这个自定义文件。在其他地方调用时会忽略 remap
。
file
将不会被导入,因此请考虑使用 _customize_resource() 来重新映射导入的资源。
void add_ios_bundle_file(path: String) 🔗
将给定的path
中的iOS bundle文件添加到导出的项目中。
void add_ios_cpp_code(code: String) 🔗
将 C++ 代码添加到 iOS 导出中。最终的代码是由每个激活的导出插件附加的代码创建的。
void add_ios_embedded_framework(path: String) 🔗
将动态库(*.dylib、*.framework)添加到 iOS 的 Xcode 项目的链接阶段,并将其嵌入到生成的二进制文件中。
注意:对于静态库(*.a),该方法的工作方式与 add_ios_framework() 相同。
注意:此方法不该用于系统库,因为它们已经存在于设备上。
void add_ios_framework(path: String) 🔗
在 iOS 的 Xcode 项目中链接阶段添加静态库(*.a)或动态库(*.dylib、*.framework)。
void add_ios_linker_flags(flags: String) 🔗
为 iOS 导出添加链接器标志。
void add_ios_plist_content(plist_content: String) 🔗
为 iOS 属性列表文件添加内容。
void add_ios_project_static_lib(path: String) 🔗
向 iOS 项目中添加位于给定路径 path
的静态库。
void add_macos_plugin_file(path: String) 🔗
将匹配 path
的文件或目录,添加到 macOS 应用程序包的 PlugIns
目录中。
注意:仅适用于 macOS 导出。
添加一个共享对象或仅包含具有给定 tags
和目标 path
的共享对象的目录。
注意:使用 macOS 导出时,这些共享对象将被添加到应用程序包的 Frameworks
目录中。
如果使用的是目录,如果将非代码对象放在该目录中,则代码签名时会报错。
EditorExportPlatform get_export_platform() const 🔗
返回当前使用的导出平台。
EditorExportPreset get_export_preset() const 🔗
返回当前使用的导出预设。
Variant get_option(name: StringName) const 🔗
返回 _get_export_options() 提供的导出选项的当前值。
void skip() 🔗
在 _export_file() 中调用。跳过当前文件,因此它不包含在导出中。