Struct bevy::asset::Handle [−]
Expand description
A handle into a specific Asset of type T
Handles contain a unique id that corresponds to a specific asset in the Assets collection.
Accessing the Asset
A handle is not the asset itself, but should be seen as a pointer to the asset. Modifying a
handle’s id
only modifies which asset is being pointed to. To get the actual asset, try using
Assets::get
or Assets::get_mut
.
Strong and Weak
A handle can be either “Strong” or “Weak”. Simply put: Strong handles keep the asset loaded, while Weak handles do not affect the loaded status of assets. This is due to a type of reference counting. When the number of Strong handles that exist for any given asset reach zero, the asset is dropped and becomes unloaded. In some cases, you might want a reference to an asset but don’t want to take the responsibility of keeping it loaded that comes with a Strong handle. This is where a Weak handle can be very useful.
For example, imagine you have a Sprite
component and a Collider
component. The Collider
uses
the Sprite
’s image size to check for collisions. It does so by keeping a Weak copy of the
Sprite
’s Strong handle to the image asset.
If the Sprite
is removed, its Strong handle to the image is dropped with it. And since it was the
only Strong handle for that asset, the asset is unloaded. Our Collider
component still has a Weak
handle to the unloaded asset, but it will not be able to retrieve the image data, resulting in
collisions no longer being detected for that entity.
Fields
id: HandleId
The ID of the asset as contained within its respective Assets collection
Implementations
pub fn make_strong(&mut self, assets: &mut Assets<T>)
pub fn make_strong(&mut self, assets: &mut Assets<T>)
Makes this handle Strong if it wasn’t already.
This method requires the corresponding Assets collection
pub fn clone_weak(&self) -> Handle<T>
pub fn clone_untyped(&self) -> HandleUntyped
pub fn clone_weak_untyped(&self) -> HandleUntyped
Trait Implementations
type Storage = TableStorage
impl<T> ExtractComponent for Handle<T> where
T: Asset,
impl<T> ExtractComponent for Handle<T> where
T: Asset,
ECS WorldQuery
to fetch the components to extract.
pub fn extract_component(
handle: <<<Handle<T> as ExtractComponent>::Query as WorldQuery>::Fetch as Fetch<'_, '_>>::Item
) -> Handle<T>
pub fn extract_component(
handle: <<<Handle<T> as ExtractComponent>::Query as WorldQuery>::Fetch as Fetch<'_, '_>>::Item
) -> Handle<T>
Defines how the component is transferred into the “render world”.
impl From<Handle<Image>> for StandardMaterial
impl From<Handle<Image>> for StandardMaterial
pub fn from(texture: Handle<Image>) -> StandardMaterial
pub fn from(texture: Handle<Image>) -> StandardMaterial
Performs the conversion.
impl From<Handle<Image>> for ColorMaterial
impl From<Handle<Image>> for ColorMaterial
pub fn from(texture: Handle<Image>) -> ColorMaterial
pub fn from(texture: Handle<Image>) -> ColorMaterial
Performs the conversion.
impl From<Handle<Mesh>> for Mesh2dHandle
impl From<Handle<Mesh>> for Mesh2dHandle
pub fn from(handle: Handle<Mesh>) -> Mesh2dHandle
pub fn from(handle: Handle<Mesh>) -> Mesh2dHandle
Performs the conversion.
impl<T> FromReflect for Handle<T> where
T: Asset,
HandleId: FromReflect,
impl<T> FromReflect for Handle<T> where
T: Asset,
HandleId: FromReflect,
pub fn from_reflect(reflect: &(dyn Reflect + 'static)) -> Option<Handle<T>>
pub fn from_reflect(reflect: &(dyn Reflect + 'static)) -> Option<Handle<T>>
Creates a clone of a reflected value, converting it to a concrete type if it was a dynamic types (e.g. DynamicStruct
)
impl<T> GetTypeRegistration for Handle<T> where
T: Asset,
impl<T> GetTypeRegistration for Handle<T> where
T: Asset,
pub fn get_type_registration() -> TypeRegistration
impl<T> PartialOrd<Handle<T>> for Handle<T> where
T: Asset,
impl<T> PartialOrd<Handle<T>> for Handle<T> where
T: Asset,
pub fn partial_cmp(&self, other: &Handle<T>) -> Option<Ordering>
pub fn partial_cmp(&self, other: &Handle<T>) -> Option<Ordering>
This method returns an ordering between self
and other
values if one exists. Read more
This method tests less than (for self
and other
) and is used by the <
operator. Read more
This method tests less than or equal to (for self
and other
) and is used by the <=
operator. Read more
This method tests greater than (for self
and other
) and is used by the >
operator. Read more
pub fn clone_value(&self) -> Box<dyn Reflect + 'static, Global>ⓘ
pub fn set(
&mut self,
value: Box<dyn Reflect + 'static, Global>
) -> Result<(), Box<dyn Reflect + 'static, Global>>
pub fn reflect_ref(&self) -> ReflectRef<'_>
pub fn reflect_mut(&mut self) -> ReflectMut<'_>
pub fn serializable(&self) -> Option<Serializable<'_>>
pub fn serializable(&self) -> Option<Serializable<'_>>
Returns a serializable value, if serialization is supported. Otherwise None
will be
returned. Read more
pub fn reflect_hash(&self) -> Option<u64>
pub fn reflect_hash(&self) -> Option<u64>
Returns a hash of the value (which includes the type) if hashing is supported. Otherwise
None
will be returned. Read more
pub fn reflect_partial_eq(
&self,
value: &(dyn Reflect + 'static)
) -> Option<bool>
pub fn reflect_partial_eq(
&self,
value: &(dyn Reflect + 'static)
) -> Option<bool>
Returns a “partial equal” comparison result if comparison is supported. Otherwise None
will be returned. Read more
pub fn field_at_mut(
&mut self,
index: usize
) -> Option<&mut (dyn Reflect + 'static)>
pub fn iter_fields(&self) -> FieldIter<'_>ⓘ
pub fn clone_dynamic(&self) -> DynamicStruct
Auto Trait Implementations
impl<T> RefUnwindSafe for Handle<T>
impl<T> UnwindSafe for Handle<T>
Blanket Implementations
Mutably borrows from an owned value. Read more
impl<T> Downcast for T where
T: Any,
impl<T> Downcast for T where
T: Any,
Convert Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
. Read more
pub fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
pub fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
Convert Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
. Read more
Convert &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s. Read more
pub fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
pub fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s. Read more
Compare self to key
and return true
if they are equal.
pub fn from_world(_world: &mut World) -> T
pub fn from_world(_world: &mut World) -> T
Creates Self
using data from the given World
pub fn path(
&'r self,
path: &'p str
) -> Result<&'r (dyn Reflect + 'static), ReflectPathError<'p>>
pub fn path_mut(
&'r mut self,
path: &'p str
) -> Result<&'r mut (dyn Reflect + 'static), ReflectPathError<'p>>
fn get_path_mut<T>(
&'r mut self,
path: &'p str
) -> Result<&'r mut T, ReflectPathError<'p>> where
T: Reflect,
fn instrument(self, span: Span) -> Instrumented<Self>ⓘNotable traits for Instrumented<T>impl<T> Future for Instrumented<T> where
T: Future, type Output = <T as Future>::Output;
fn instrument(self, span: Span) -> Instrumented<Self>ⓘNotable traits for Instrumented<T>impl<T> Future for Instrumented<T> where
T: Future, type Output = <T as Future>::Output;
impl<T> Future for Instrumented<T> where
T: Future, type Output = <T as Future>::Output;
fn in_current_span(self) -> Instrumented<Self>ⓘNotable traits for Instrumented<T>impl<T> Future for Instrumented<T> where
T: Future, type Output = <T as Future>::Output;
fn in_current_span(self) -> Instrumented<Self>ⓘNotable traits for Instrumented<T>impl<T> Future for Instrumented<T> where
T: Future, type Output = <T as Future>::Output;
impl<T> Future for Instrumented<T> where
T: Future, type Output = <T as Future>::Output;
pub fn clone_type_data(&self) -> Box<dyn TypeData + 'static, Global>ⓘ
pub fn vzip(self) -> V
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>ⓘNotable traits for WithDispatch<T>impl<T> Future for WithDispatch<T> where
T: Future, type Output = <T as Future>::Output;
where
S: Into<Dispatch>,
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>ⓘNotable traits for WithDispatch<T>impl<T> Future for WithDispatch<T> where
T: Future, type Output = <T as Future>::Output;
where
S: Into<Dispatch>,
impl<T> Future for WithDispatch<T> where
T: Future, type Output = <T as Future>::Output;
Attaches the provided Subscriber
to this type, returning a
WithDispatch
wrapper. Read more
fn with_current_subscriber(self) -> WithDispatch<Self>ⓘNotable traits for WithDispatch<T>impl<T> Future for WithDispatch<T> where
T: Future, type Output = <T as Future>::Output;
fn with_current_subscriber(self) -> WithDispatch<Self>ⓘNotable traits for WithDispatch<T>impl<T> Future for WithDispatch<T> where
T: Future, type Output = <T as Future>::Output;
impl<T> Future for WithDispatch<T> where
T: Future, type Output = <T as Future>::Output;
Attaches the current default Subscriber
to this type, returning a
WithDispatch
wrapper. Read more