ECS跟常見的OOP(Object Oriented Programming)物件導向不同而是DOP(Data Oriented Programming)資料導向,ECS FAQ
想像一個簡單的賽車遊戲。每輛車(Entity)都有速度(Component)和位置(Component)。當車輛移動時,一個系統(例如"移動系統")會根據速度更新車輛的位置。
Bevy:Bevy是使用Rust語言並採用了ECS概念的遊戲引擎。
以上面的舉例用Bevy開發應該會是
use bevy::prelude::*;
// 定義一個車輛組件
struct Car {
speed: f32,
}
// 定義一個移動系統
fn move_system(mut query: Query<(&Car, &mut Transform)>) {
for (car, mut transform) in query.iter_mut() {
transform.translation.x += car.speed;
}
}
fn main() {
App::build()
.add_startup_system(setup.system())
.add_system(move_system.system())
.run();
}
fn setup(commands: &mut Commands) {
commands.spawn((Car { speed: 2.0 }, Transform::from_translation(Vec3::new(0.0, 0.0, 0.0))));
}