#texture-atlas #texture #atlas #bevy #sprites #graphics

bevy_heterogeneous_texture_atlas_loader

从ron文件清单中加载异构纹理图集

19个版本 (8个重大更新)

0.10.0 2022年11月14日
0.9.3 2022年10月12日
0.7.0 2022年7月31日
0.5.1 2022年2月27日

#896 in 游戏开发

Download history 159/week @ 2024-07-29

每月159次下载

MIT/Apache

35KB
105

Bevy Heterogenous Texture Atlas Loader

crates.io MIT/Apache 2.0 crates.io

Bevy Heterogenous Texture Atlas Loader 允许您从 RON 文件清单中加载异构纹理图集。

Bevy 兼容性

版本 bevy
0.10 0.9
0.7到0.9 0.8
0.6 0.7
< 0.6 0.6

基本用法

  1. 将以下内容添加到项目中的 Cargo.toml[dependencies] 部分

    bevy_heterogeneous_texture_atlas_loader = "0.10.0"
    
  2. TextureAtlasLoaderPlugin 添加到您的 Bevy 应用程序中。

    use bevy_heterogeneous_texture_atlas_loader::*;
    app.add_plugin(TextureAtlasLoaderPlugin);
    
  3. 将图集源图像和 .ron 清单添加到您的资产文件夹中。

  4. 使用资产服务器加载纹理图集清单

    let texture_atlas: Handle<TextureAtlas> = asset_server.load("<path>.ron");
    

    然后插件将加载图集图像并自动创建 TextureAtlas 资产。

  5. TextureAtlas 的精灵索引遵循清单中精灵的顺序。图集索引 0 将是清单中的第一个精灵,1 是第二个,依此类推。您还可以使用 TextureAtlas::get_texture_index 方法通过资产路径查找索引

    texture_atlas.get_texture_index(&Handle::weak("sprite_name".into()))
    

    这在 \examples\example.rs 中可以看到使用

清单

  • 要为像这样的不规则大小和位置的精灵创建一个精灵表清单

    /assets/example.png

  1. 在您的资产文件夹中创建一个 .ron 文件。

    输出 TextureAtlas 中的精灵索引隐式地按照输入列表精灵矩形的顺序排序。

  • 使用 name 字段为精灵提供一个唯一的名称,该名称可用于使用具有资产路径 "sprite_name" 的弱 Handle<Image> 来查找 TextureAtlas 索引。

    (
        // Path to the texture atlas source image file 
        path: "example.png",        
    
        // List of sprites        
        sprites: [    
            (
                // use a handle with the asset path "rothko" 
                // to retrieve this sprite's index using TextureAtlas::get_texture_index.
                name: "rothko",  
    
                // top left x coordinate of the sprite in pixels
                x: 18,           
    
                // top left y coordinate of the sprite in pixels
                y: 19,              
    
                // width of the sprite in pixels
                w: 46,              
    
                // height of the sprite in pixels
                h: 48               
            ),
            (
                name: "face", 
                x: 93, 
                y: 108, 
                w: 32, 
                h: 31
            ),
            (
                name: "patches", 
                x: 176, 
                y: 34, 
                w: 20, 
                h: 34
            ),
        ]
    )
    
  • 如果您不需要为精灵命名,可以省略 name 字段

    (
        path: "example.png",
    
        sprites:[         
            (    
                // sprite at atlas index 0
                x: 18, 
                y: 19, 
                w: 46, 
                h: 48
            ),
             (
                // sprite at atlas index 1
                x: 93, 
                y: 108, 
                w: 32, 
                h: 31
            ),
            // ...
        ]
    )
    

示例

  • minimal.rs

    加载一个纹理图集并在其纹理之间循环。使用以下命令运行:

    cargo run --example minimal
    
  • example.rs

    加载和显示纹理图集的示例。使用以下命令运行:

    cargo run --example example
    

two.rs

Another example of loading and displaying texture atlases. Run with
```
cargo run --example example
```
  • bevy_asset_loader.rs

    使用 bevy_asset_loader 管理加载的示例。使用以下命令运行:

    cargo run --example bevy_asset_loader
    

依赖项

~17-33MB
~518K SLoC