1个不稳定版本
0.1.0 | 2022年9月3日 |
---|
#1210 in 游戏开发
25KB
113 行
bevy_double_res
普通bevy引擎资源简单双缓冲实现
使用方法
首先,创建您的缓冲区
fn main() {
use bevy_double_res::prelude::*;
let mut tuple = (10, 20).into_double_buf();
//...
}
或者
fn main() {
use bevy_double_res::prelude::*;
let mut tuple = DoubleBuffer::new((10, 20));
//...
}
其次,修改项目
fn main() {
//...
tuple.apply(|current, next| {
next.0 = current.1;
next.1 = current.0;
});
tuple.swap();
//...
}
或者
fn main() {
//...
let (current, next) = tuple.split_ordered();
next.0 = current.1;
next.1 = current.0;
tuple.swap();
//...
}
不要忘记交换!
最后,显示缓冲区内容
fn main() {
use bevy_double_res::prelude::*;
let mut tuple = (10, 20).into_double_buf();
tuple.apply(|current, next| {
next.0 = current.1;
next.1 = current.0;
});
tuple.swap();
println!("{:?}", tuple.current()); // outputs: (20, 10)
}
在系统中使用
创建资源的方式相同
fn setup(mut commands: Commands) {
let tuple = (10, 20).into_double_buf();
commands.insert_resource(tuple);
}
在系统中访问资源
- 只读?则使用 DoubleRes(与 Res 相匹配)
- 可变?则使用 DoubleResMut(与 ResMut 相匹配)
fn circular_dependent_system(mut tuple: DoubleResMut<(i32, i32)>) {
tuple.apply(|current, next| {
next.0 = current.1;
next.1 = current.0;
});
tuple.swap();
}
请参阅使用示例
依赖项
~7–14MB
~172K SLoC