本文内容
代码Gem规范
代码Gem包含可扩展 Open 3D Engine (O3DE) 编辑器或为您的 O3DE 项目集成功能和逻辑的源代码。它们还包含源代码所需的资产,如界面元素以及用作测试和示例的资产。
创建Gem
按照 创建O3DE Gem创建一个基于DefaultGem模板的Gem。代码Gem和资产Gem具有相同的Gem目录结构,您可以使用相同的命令来创建它们。
Gem代码
Gem 的代码组件位于 Code
目录中。DefaultGem 模板会在 Gem 的 Code/Source
目录中提供以下模板代码。
您可以从自己创建的 Gem 或引擎源代码的 Templates/DefaultGem
目录中的 DefaultGem 模板浏览 Gem 的源代码。
以下文件是 Gem 的代码组件。
<Gem>ModuleInterface.h
, <Gem>Module.cpp
<Gem>ModuleInterface
是主要的 Gem AZ::Module
类,包含将 Gem 功能连接到 O3DE 的入口函数。DefaultGem 模板已经通过调用 AZ_DECLARE_MODULE_CLASS
宏设置了连接到 O3DE 的 Gem 模块。
有关模块及其在 O3DE 中职责的更多信息,请参阅 Gem 模块系统 概述。
<Gem>SystemComponent.cpp
, <Gem>SystemComponent.h
<Gem>SystemComponent
类是一个全局单例类,负责管理 Gem 的代码。Gem模块注册了Gem系统组件,该组件负责管理Gem模块的生命周期:初始化、激活和停用。Gem系统组件在Gem加载时激活,在Gem卸载时停用。
Gem 系统组件允许 Gem 模块内的组件通过连接到其他 Gem 的 EBus,与其他 Gem 的组件进行通信。它还处理初始化和关闭、事件、内存分配和调试器连接。
<Gem>EditorModule.cpp
<Gem>EditorModule
类包含在编辑器中使用Gem的逻辑。它与处理Gem逻辑的主Gem模块是分开的。例如,如果Gem实现了一个组件,主Gem模块会实现组件的逻辑,而编辑器模块会在编辑器中实现组件的用户界面。
<Gem>EditorSystemComponent.cpp
, <Gem>EditorSystemComponent.h
<Gem>EditorSystemComponent
类是管理编辑器模块的系统组件类。你可以使用该类来编程编辑器功能。例如,如果你的 Gem 实现了在 O3DE 编辑器中出现的组件或窗口。
构建 Gem
先决条件
您必须先注册您的Gem,然后才能构建它。
如果你使用 o3de
脚本中的
create-gem
命令 创建了一个 Gem,它会自动注册。
有关将Gem注册到项目的更多信息,请参阅 将Gem注册到项目。
使用命令行构建 Gem
将一个 Gem 注册到引擎、项目或全局 o3de_manifest.json
之后,就可以使用 CMake 构建该 gem,与
构建引擎和项目 的方式相同。
添加到项目 的 Gem 会在构建项目时自动构建。不过,在开发一个 Gem 时,你可能想单独构建它,以避免重建整个项目。
要单独构建一个 Gem,请在适合你的
引擎构建类型 的目录中,使用 cmake --build
命令并指定构建方案和配置。使用 --target
标志指定要构建的 Gem 模块: 主 Gem 模块使用 <Gem Name>
,编辑器模块使用 <Gem Name>.Editor
。 如果你的 Gem 包含静态库,你也可以将它们包含在要构建的目标列表中。
下面的示例显示了为名为 MyGem
的Gem构建编辑器和主Gem模块的命令:
cmake --build build/windows --target MyGem.Editor MyGem --config profile -- -m
当你构建一个 gem 时,构建系统也会构建该 gem 的依赖项,这些依赖项列在该 gem 的 code/CMakeLists.txt
文件中。