You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改bevy_mod_picking默认选中高亮颜色(透明化需求)

修改bevy_mod_picking选中网格高亮颜色的方案

核心组件关系说明

  • Highlight只是标记组件,仅用来告知系统该实体需要启用高亮逻辑,本身不存储任何样式配置
  • Highlightable才是控制高亮样式的核心组件,默认会自动给添加了PickableBundle的实体挂载,你可以通过手动添加/修改它来覆盖默认行为

单个实体修改方案

如果只需要给特定实体隐藏高亮效果,在创建实体时手动添加Highlightable组件,将选中、悬停、按下状态的颜色设为完全透明:

use bevy::prelude::*;
use bevy_mod_picking::prelude::*;

fn spawn_pickable_cube(commands: &mut Commands, meshes: &mut ResMut<Assets<Mesh>>, materials: &mut ResMut<Assets<StandardMaterial>>) {
    commands.spawn((
        PbrBundle {
            mesh: meshes.add(Mesh::from(shape::Cube { size: 1.0 })),
            material: materials.add(Color::WHITE.into()),
            ..default()
        },
        PickableBundle::default(),
        Highlight, // 启用高亮标记
        // 覆盖默认高亮配置,设置全透明隐藏效果
        Highlightable {
            selected: HighlightKind::new_static(Color::rgba(0.0, 0.0, 0.0, 0.0)),
            hovered: HighlightKind::new_static(Color::rgba(0.0, 0.0, 0.0, 0.0)),
            pressed: HighlightKind::new_static(Color::rgba(0.0, 0.0, 0.0, 0.0)),
            ..default()
        },
    ));
}

全局默认值修改方案

如果要让所有拾取实体默认隐藏高亮,直接在注册HighlightPlugin时配置全局默认值:

use bevy::prelude::*;
use bevy_mod_picking::prelude::*;
use bevy_mod_picking::highlight::HighlightPlugin;

fn main() {
    App::new()
        .add_plugins(DefaultPlugins)
        .add_plugins(PickingPlugins)
        // 全局配置高亮默认样式
        .add_plugins(HighlightPlugin {
            selected_default: HighlightKind::new_static(Color::rgba(0.0, 0.0, 0.0, 0.0)),
            hovered_default: HighlightKind::new_static(Color::rgba(0.0, 0.0, 0.0, 0.0)),
            pressed_default: HighlightKind::new_static(Color::rgba(0.0, 0.0, 0.0, 0.0)),
            ..default()
        })
        .add_systems(Startup, spawn_pickable_cube)
        .run();
}

相关编码模式参考

  • 标记组件+配置组件分离:这类ECS库常用模式,标记组件(如Highlight)仅做逻辑标识,配置组件(如Highlightable)存储具体参数,避免单一组件职责过重
  • 全局默认+局部覆盖:插件提供全局默认配置,同时允许单个实体通过挂载配置组件覆盖全局规则,兼顾统一性和灵活性
  • 静态/动态高亮切换:HighlightKind提供new_static(固定颜色)和new_dynamic(动态生成颜色)两种模式,后者可以根据实体状态、资源等动态调整高亮样式,适合复杂场景

内容的提问来源于stack exchange,提问作者dim_voly

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 09:42:31