在 Bevy 书中使用了以下代码:
struct GreetTimer(Timer);
fn greet_people(
time: Res<Time>, mut timer: ResMut<GreetTimer>, query: Query<&Name, With<Person>>) {
// update our timer with the time elapsed since the last update
// if that caused the timer to finish, we say hello to everyone
if timer.0.tick(time.delta()).just_finished() {
for name in query.iter() {
println!("hello {}!", name.0);
}
}
}
timer.0
和name.0
调用有什么作用? 书中没有解释,我发现Timer
有一个tick方法,那么既然timer
已经是Timer
了,.0
在这里有什么作用呢?
GreetTimer
,而不是Timer
。并且GreetTimer
是一个tuple struct,所以你必须访问它的第一个(也是唯一的)元素,因为GreetTimer
本身没有定义tick()
方法。 - justinas