ワンクリックで
bevy-reflection
Reference for Bevy's reflection system — Reflect derive, dynamic field access, serialization, trait reflection, and scenes.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Reference for Bevy's reflection system — Reflect derive, dynamic field access, serialization, trait reflection, and scenes.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
Reference for Avian physics engine — rigid bodies, colliders, joints, spatial queries, collision events, character controllers, and debug rendering.
Reference for loading, managing, and tracking assets in Bevy — AssetServer, handles, loading states, events, custom loaders, and hot reloading.
Reference for playing and controlling audio in Bevy — AudioPlayer, AudioSink, spatial audio, volume, and playback settings.
Reference for Bevy Scene Notation (BSN) — the bsn! macro for defining inline scenes with components, children, relationships, observers, and dynamic props.
Reference for cameras in Bevy — Camera2d, Camera3d, viewports, projection, render layers, mouse-to-world, and free camera controllers.
Reference for Bevy Commands — spawning/despawning entities, inserting/removing components, custom commands, trait extensions, and testing.
| name | bevy-reflection |
| description | Reference for Bevy's reflection system — Reflect derive, dynamic field access, serialization, trait reflection, and scenes. |
| metadata | {"crate":"bevy_reflect","bevy":"0.19"} |
Derive Reflect to enable runtime introspection, dynamic field access, and serialization:
#[derive(Reflect)]
struct Slider {
#[reflect(@RangeInclusive::<f32>::new(0.0, 1.0))]
value: f32,
}
app.register_type::<Slider>();
This adds the type to AppTypeRegistry (shared TypeRegistry).
let mut slider = Slider { value: 0.5 };
*slider.get_field_mut("value").unwrap() = 2.0;
assert_eq!(*slider.get_field::<f32>("value").unwrap(), 2.0);
Derive macro infers: Struct, TupleStruct, Enum, Tuple, List, Array, Map, Set. Opaque types can't be broken down further.
Options:
Serialize/Deserialize via serde:#[derive(Reflect, Serialize, Deserialize, Clone)]
#[reflect(opaque)]
#[reflect(Serialize, Deserialize)]
struct Trader { balance: Decimal }
fn serialize(type_registry: Res<AppTypeRegistry>) {
let reg = type_registry.read();
let serializer = ReflectSerializer::new(&slider, ®);
let ron = ron::ser::to_string_pretty(&serializer, ron::ser::PrettyConfig::default()).unwrap();
}
#[reflect_trait]
trait DoThing { fn do_thing(&self) -> String; }
#[derive(Reflect)]
#[reflect(DoThing)]
struct MyType { value: String }
impl DoThing for MyType { fn do_thing(&self) -> String { format!("{} World!", self.value) } }
// Dynamic access:
let reflect_do_thing = type_registry.get_type_data::<ReflectDoThing>(reflect_value.type_id()).unwrap();
let my_trait: &dyn DoThing = reflect_do_thing.get(&*reflect_value).unwrap();
Reflection powers scene serialization. Register types with register_type, then DynamicWorld::from_world(world).serialize(&type_registry) to produce RON.