GameMaker 编译器允许您将批处理文件(Windows)或 Shell 脚本(在 macOS 和 Linux 上)放在项目目录中,并放在项目中每个扩展的目录中。
脚本文件可以放置在项目目录的根目录中,与项目的.yyp文件放在一起。
脚本文件也可以放置在扩展名的目录中,这个目录可能像下面这样:project_directory/extensions/extension_folder/.
脚本文件的扩展版本将首先执行,其根目录版本将最后执行。扩展的执行顺序无法控制,因此扩展开发人员必须确保一个扩展的脚本不依赖于另一个扩展的脚本。
具有特定名称的脚本文件,放置在上面描述的任何目录中,在编译过程的不同点执行:
注意 这些步骤按运行顺序列出,但"平台特定步骤"下的除外。
Windows 批处理文件名 | MacOS/Linux Shell 脚本名称 | 描述 |
---|---|---|
pre_project_step.bat | pre_project_step.sh | 这在资源编译器加载项目文件之前执行 |
post_project_step.bat | post_project_step.sh | 这是在资源编译器加载了项目文件之后执行的 |
pre_run_step.bat | pre_run_step.sh | 仅在测试游戏时运行 (IDE 中的"运行"或 F5 键),在创建软件包时不运行 此操作在游戏部署即将开始之前执行 |
pre_build_step.bat | pre_build_step.sh | 这是在要求资源编译器构建游戏之前执行的 |
post_textures.bat | post_textures.sh | 这是在游戏的纹理生成之后执行的。您可以使用此步骤手动优化游戏纹理。 这个脚本接收一个名为 TexturesDir 的环境变量,它存储到生成的纹理的路径。 |
post_build_step.bat | post_build_step.sh | 这是在资源编译器已经开始构建游戏之后执行的 |
remote_build_step.bat | remote_build_step.sh | 当您在Windows机器上并为macOS/iOS/tvOS或Ubuntu远程编译时,这将在远程机器上执行。 |
pre_package_step.bat | pre_package_step.sh | 这在最终打包步骤之前执行,最终打包步骤是所有文件都准备就绪但即将创建最终 ZIP 文件或存储包的时候 |
post_package_step.bat | post_package_step.sh | 仅在创建包/可执行文件时运行 这在完成最终打包步骤并准备好最终ZIP文件或存储包后执行 |
post_run_step.bat | post_run_step.sh | 仅在测试游戏时运行(IDE中的"运行"或 F5 键),而不是在创建软件包时运行 这在游戏准备就绪并准备运行时执行脚本执行后,游戏将启动 |
平台特定步骤 | ||
pre_gradle_step.bat | pre_gradle_step.sh | Android 这是在创建 Android 工具所需的文件时执行的,但在调用 Gradle 之前。您可以使用此步骤在 Android 工具将其编译为最终可执行文件之前自行访问和修改 Android 文件。 |
在所有目标平台上构建时都支持这些脚本文件。
您可以在批处理文件/外壳脚本中检索扩展版本和任何扩展选项:
将此处的 <ExtensionName> 替换为您正在使用的扩展的名称。
如果您使用多个运行脚本的扩展,例如 Steamworks 和 GDK,那么在导出到 GDK 时,您将希望禁用 Steamworks,反之亦然。
有关这一点,请参见: 如何禁用扩展?