热重载资源

可参考的官方例子: hot_asset_reloading, [hot_shader_reloading][example::hot_shader_reloading].


在运行时,如果你修改了已被加载到游戏中的资源的文件(通过 AssetServer),Bevy 会监测到并自动重新加载该资源。这对于快速迭代非常有用。你可以在游戏运行的时候编辑你的资源,并在游戏中即时看到它的变化。

并非所有的[文件格式][buildins::file-formats]和使用情况都能得到同样的支持。典型的资源类型,如纹理和图片应该没有问题,但复杂的 GLTF 或场景文件,或涉及自定义逻辑的资源则可能不会被即时加载刷新。

如果你需要某个有自定义逻辑的资源也能被热重载,你可以在一个系统中使用 AssetEvent 事件([了解更多][cb::assetevent])来实现它。

热重载是一个可选择项,并且必须被启用才能工作。你可以在一个初始化系统中来启用它:

    asset_server.watch_for_changes().unwrap();

着色器 Shaders

Bevy 也支持着色器的热重载。你可以编辑你的自定义着色器代码并立即看到变化。这只有在你通过 bevy 资源系统(通过 AssetServer)加载你的着色器时才有效。参见[官方示例][example::hot_shader_reloading]。