bevy 0.16 视频组件

/// 表示显示器支持的视频模式
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub struct VideoMode {
    /// 视频模式的分辨率(物理尺寸)
    pub physical_size: UVec2,
    
    /// 视频模式的位深度
    pub bit_depth: u16,
    
    /// 刷新率(毫赫兹)
    pub refresh_rate_millihertz: u32,
}

字段说明

字段名称 类型 描述
physical_size UVec2 视频模式的分辨率(物理尺寸)
bit_depth u16 视频模式的位深度
refresh_rate_millihertz u32 刷新率(单位:毫赫兹)

特性实现 (Trait Implementations)

Clone

impl Clone for VideoMode {
    /// 返回值的副本
    fn clone(&self) -> VideoMode;
    
    /// 从源执行复制赋值
    fn clone_from(&mut self, source: &Self);
}

Debug

impl Debug for VideoMode {
    /// 使用格式化器显示结构体信息
    fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>;
}

Deserialize<'de>

impl<'de> Deserialize<'de> for VideoMode {
    /// 从 Serde 反序列化器反序列化该值
    fn deserialize<__D>(__deserializer: __D) -> Result<VideoMode, __D::Error>;
}

PartialEq

impl PartialEq for VideoMode {
    /// 判断两个实例是否相等
    fn eq(&self, other: &VideoMode) -> bool;
    
    /// 判断是否不相等(默认实现通常足够)
    fn ne(&self, other: &Rhs) -> bool;
}

Serialize

impl Serialize for VideoMode {
    /// 使用 Serde 序列化器序列化该值
    fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>;
}

Reflect(反射相关)

impl Reflect for VideoMode {
    /// 将值转换为 Box<dyn Any>
    fn into_any(self: Box<VideoMode>) -> Box<dyn Any>;
    
    /// 获取值的 &dyn Any 形式
    fn as_any(&self) -> &dyn Any;
    
    /// 获取值的 &mut dyn Any 形式
    fn as_any_mut(&mut self) -> &mut dyn Any;
}

自动特性实现 (Auto Trait Implementations)

特性 说明
Freeze 标记类型为不可变
RefUnwindSafe 保证在栈展开时安全
Send 可跨线程安全传递
Sync 可跨线程安全共享引用
Unpin 允许移动后继续使用
UnwindSafe 保证在 panic 时不会导致内存不安全

泛型实现 (Blanket Implementations)

常见类型转换

impl<T> From<T> for T; // T 到 T 的平凡转换
impl<T, U> Into<U> for T where U: From<T>; // 通用类型转换

反射相关

impl<T> GetPath for T where T: Reflect + ?Sized; // 获取反射路径
impl<T> Reflectable for T where T: Reflect + GetTypeRegistration + Typed + TypePath; // 反射能力支持

序列化/反序列化

impl<T> Serialize for T where T: Serialize + ?Sized; // 序列化支持
impl<T> DeserializeOwned for T where T: for<'de> Deserialize<'de>; // 反序列化拥有值的支持

其他工具特性

impl<T> Instrument for T; // 添加诊断工具
impl<T> Tap for T;        // 链式调用工具
impl<T> ToOwned for T where T: Clone; // 克隆到拥有值的转换

使用说明

该结构体用于表示显示器的视频模式参数,常用于全屏模式设置:

let video_mode = VideoMode {
    physical_size: UVec2::new(1920, 1080),
    bit_depth: 32,
    refresh_rate_millihertz: 60_000, // 60 Hz
};
posted @ 2025-05-11 12:20  Furau  阅读(3)  评论(0)    收藏  举报