Latest commit b724a0f
use bevy::prelude::*; /// 这个示例演示了几种加载资源的方法 fn main() { App::new() .insert_resource(Msaa { samples: 4 }) .add_plugins(DefaultPlugins) .add_startup_system(初始设置) .run(); } fn 初始设置( mut commands: Commands, asset_server: Res<AssetServer>, meshes: Res<Assets<Mesh>>, mut materials: ResMut<Assets<StandardMaterial>>, ) { // 默认情况下,AssetServer 会从根目录的 assets 文件夹内加载资产 // 修改 CARGO_MANIFEST_DIR 环境变量来指定资产文件夹 // 从 Cargo 运行 App 时,CARGO_MANIFEST_DIR 自动设置成当前工作空间的根目录 // 查看 https://doc.rust-lang.org/cargo/reference/environment-variables.html let cube_handle = asset_server.load("modles/cube/cube.gltf#Mesh0/Primitive0"); let sphere_handle = asset_server.load("modles/sphere/sphere.gltf#Mesh0/Primitive0"); // 所有的资产在完成加载后,最终都会进入其 Assets<T> 集合 if let Some(sphere) = meshes.get(&sphere_handle) { // 可能会注意到它没有运行! 这是因为资产并行加载而没有阻塞 // 加载资产后,会显示在相关的 Assets<T> 集合中 info!("{:?}", sphere.primitive_topology()); } else { info!("还没有加载球体"); } // 可以将所有资产加载到这样的文件夹中。 它们将并行加载而不会阻塞 let _scenes: Vec<HandleUntyped> = asset_server.load_folder("modles/monkey").unwrap(); // 然后可以像这样访问文件夹中的任何资产: let monkey_handle = asset_server.get_handle("models/monkey/Monkey.gltf#Mesh0/Primitive0"); // 还可以把资产直接添加到 Assets<T> let material_handle = materials.add(StandardMaterial { base_color: Color::rgb(0.8, 0.7, 0.6), ..Default::default() }); // 生成“猴子” commands.spawn_bundle(PbrBundle { mesh: monkey_handle, material: material_handle.clone(), transform: Transform::from_xyz(-3.0, 0.0, 0.0), ..Default::default() }); // 生成“方块” commands.spawn_bundle(PbrBundle { mesh: cube_handle, material: material_handle.clone(), transform: Transform::from_xyz(0.0, 0.0, 0.0), ..Default::default() }); // 生成“球体” commands.spawn_bundle(PbrBundle { mesh: sphere_handle, material: material_handle, transform: Transform::from_xyz(3.0, .0., 0.0), ..Default::default() }); // 生成“点光源” commands.spawn_bundle(PointLightBundle { transform: Transform::from_xyz(4.0, 5.0, 4.0), ..Default::default() }); // 生成“相机” commands.spawn_bundle(PerspectiveCameraBundle { transform: Transform::from_xyz(0.0, 3.0, 10.0).looking_at(Vec3::ZERO, Vec3::Y), ..Default::default() }); }