diff --git a/crates/bevy_ecs/src/resource/resource_query.rs b/crates/bevy_ecs/src/resource/resource_query.rs index ef1105b55d..ab33775bce 100644 --- a/crates/bevy_ecs/src/resource/resource_query.rs +++ b/crates/bevy_ecs/src/resource/resource_query.rs @@ -295,9 +295,13 @@ impl<'a, T: Resource + FromResources> ResourceQuery for Local<'a, T> { type Fetch = FetchResourceLocalMut; fn initialize(resources: &mut Resources, id: Option) { - let value = T::from_resources(resources); let id = id.expect("Local resources can only be used by systems"); - resources.insert_local(id, value); + + // Only add the local resource if it doesn't already exist for this system + if resources.get_local::(id).is_none() { + let value = T::from_resources(resources); + resources.insert_local(id, value); + } } }