6 个版本
0.13.3 | 2024年1月1日 |
---|---|
0.13.2 | 2023年12月29日 |
0.12.0 | 2023年11月12日 |
0.11.1 | 2023年8月31日 |
在 Rust 模式 中排名第 1183
每月下载量 60 次
32KB
🦊 简单地将 bevy 的句柄/实体静态地附加到类型
🐑 在任何系统中获取它们,而不使用资源。
🦄 查看 type_cell 了解其他使用案例!
[dependencies]
bevy_cell = "0.13"
use bevy_cell::*;
I. 有两种有效语法
🐰 {Type} [name1] [name2] [name3]
🦝 Type: [name1] [name2] [name3];
II. []
内的语法会改变附加的类型
🐈 实体 - 只需选择一个名称:[camera]
🦥 句柄 - 使用 |
分隔类型:[Image|cat]
🐹 原始类型 - 使用 :
分隔类型:[Image:cat]
🐒 如果未设置类型,则使用父类型:[|cat]
[:cat]
III. 在 []
内设置集合类型
🦄 单个 - 使用 **II.** 中的语法
🐔 Vec - 在名称后添加 <>
:[cameras<>]
🐲 HashMap - 在名称后面添加 <KeyType>
: [cameras<usize>]
// Macro Examples
bycell! {
Camera: [main] [secondary];
AudioSource: [|hit] [|shots<>];
Player: [main] [Scene|models<u8>];
}
IV. 设置值
🐑 在(预)启动时一次使用 Type::set_..(value)
🦌 值可以是实现其类型的任何内容!
// Setter Examples
Camera::set_main(commands.spawn(..).id());
AudioSource::set_shots([
assets.load("shot0.ogg"),
assets.load("shot1.ogg"),
assets.load("shot3.ogg"),
]);
Player::set_models([
(5, assets.load("player5.glb")),
(7, assets.load("player7.glb")),
]);
V. 获取值
🐏 根据集合类型提供不同的获取器!
// Single Getter
Camera::main(); // Cloned
Camera::main_ref(); // Static Reference
// Vec Getters
AudioSource::shots(1); // Cloned
AudioSource::shots_ref(1); // Static Reference
AudioSource::shots_vec(); // Static Reference to Vec
// HashMap Getters
Player::models(&5); // Cloned
Player::models_ref(&5); // Static Reference
Player::models_map(); // Static Reference to HashMap
VI. 可变性
🐝 你可以在名称前添加 mut
来使任何这些值可变
🦞 仅在你能够避免竞争条件时使用
🦧 一个想法是在状态改变时对某个东西进行修改!
// Macro Examples
bycell! {
Camera: [mut main] [mut secondary];
AudioSource: [|mut hit] [|mut shots<>];
Player: [mut main] [Scene|mut models<u8>];
}
许可证
根据你的选择,在 Apache License, Version 2.0 或 MIT 许可证 下许可。除非你明确声明,否则你根据 Apache-2.0 许可证定义的任何有意提交以包含在此软件包中的贡献,都将如上双许可,没有额外的条款或条件。
依赖项
~2MB
~26K SLoC