#cron #bevy #cron-expression #plugin #bevy-ecs

bevy_cronjob

Bevy中运行cron作业(重复计划)的简单助手

6个版本 (3个重大更改)

0.4.0 2024年7月5日
0.3.0 2024年2月18日
0.2.0 2023年11月6日
0.1.2 2023年8月7日

#1041 in 游戏开发

Download history 154/week @ 2024-07-01 7/week @ 2024-07-08 13/week @ 2024-07-29

每月60次下载

MIT/Apache

17KB

crates.io MIT/Apache 2.0 crates.io CI Documentation

bevy_cronjob

bevy_cronjob 是一个用于在Bevy中运行cron作业(重复计划)的简单助手。

使用方法

use std::time::Duration;
use bevy::{ MinimalPlugins};
use bevy::app::{App, PluginGroup, ScheduleRunnerPlugin, Update};
use bevy::log::{info, LogPlugin};

use bevy_ecs::prelude::{IntoSystemConfigs};
use bevy_cronjob::schedule_passed;

fn main() {
    App::new()
        .add_plugins(
            MinimalPlugins.set(ScheduleRunnerPlugin::run_loop(Duration::from_secs_f64(
                1.0 / 60.0,
            ))),
        )
        .add_plugins(LogPlugin::default())
        .add_systems(Update, print_per_5_sec.run_if(schedule_passed("0/5 * * * * *")))
        .add_systems(Update, print_per_min.run_if(schedule_passed("0 * * * * *")))
        .add_systems(Update, print_per_hour.run_if(schedule_passed("0 0 * * * *")))
        .run();
}

fn print_per_5_sec() {
    info!("print every 5 sec")
}

fn print_per_min() {
    info!("print every minute")
}
fn print_per_hour() {
    info!("print every hour")
}

表达式

计划表达式基于 cron

小时 月份中的天数 月份 星期中的某一天 年份
* * * * * * *
0-59 0-59 0-23 1-23 1-12 1-7 1970-2100

时间以UTC指定。注意年份可能被省略。

可以使用逗号分隔的值,例如 1,2,3。例如,一个每15秒执行的计划为 0,15,30,45 * * * * *

可以使用破折号指定范围。例如 1-5 * * * * * 将在分钟的前5秒内每秒执行一次。

支持版本

bevy bevy_cronjob
0.14 0.4
0.13 0.3
0.12 0.2
0.11 0.1

许可证

根据以下任一许可证双授权

  • MIT
  • Apache 2.0

依赖关系

~10–18MB
~234K SLoC