F8 Timer

January 5, 2026 · View on GitHub

license Unity Version Platform

简介(希望自己点击F8,就能开始制作游戏,不想多余的事)

Unity F8 Timer组件,提供Timer、FrameTimer两种计时器,暂停/恢复,自动释放Timer

导入插件(需要首先导入核心)

注意!内置在->F8Framework核心:https://github.com/TippingGame/F8Framework.git
方式一:直接下载文件,放入Unity
方式二:Unity->点击菜单栏->Window->Package Manager->点击+号->Add Package from git URL->输入:https://github.com/TippingGame/F8Framework.git

视频教程:【Unity框架】(7)时间管理

代码使用方法

void Start()
{
    // 普通Timer,传入自身this,每1秒执行一次,延迟0秒后开始,执行3次(-1表示循环)
    int timeid = FF8.Timer.AddTimer(this, 1f, 0f, 3,
        () => { LogF8.Log("tick"); },
        () => { LogF8.Log("完成"); },
        ignoreTimeScale: false);

    // 拓展方法
    FF8.Timer.AddTimer(1f, () => { });
    FF8.Timer.AddTimer(1f, false, () => { });
    FF8.Timer.AddTimer(1f, 1, () => { }, () => { });
    // 更多拓展方法
    this.AttachTimerF8(1f, () => { }, () => { }, false);
    this.DelayTimerF8(1f, () => { });
    this.IntervalTimerF8(1f, () => { });
    this.RepeatTimerF8(1f, 5, () => { });
    this.UntilTimerF8(1f,  () => true, () => { });

    // FrameTimer,传入自身this,每1帧执行一次,延迟0帧后开始,循环执行(-1表示循环)
    timeid = FF8.Timer.AddTimerFrame(this, 1f, 0f, -1,
        () => { LogF8.Log("tick"); },
        () => { LogF8.Log("完成"); },
        ignoreTimeScale: false);
    
    // 拓展方法
    FF8.Timer.AddTimerFrame(1f, () => { });
    FF8.Timer.AddTimerFrame(1f, false, () => { });
    FF8.Timer.AddTimerFrame(1f, 1, () => { }, () => { });

    // 停止id为timeid的Timer
    FF8.Timer.RemoveTimer(timeid);

    // 监听游戏程序获得或失去焦点,重新开始或暂停所有Timer
    FF8.Timer.AddListenerApplicationFocus();

    // 手动重新开始或暂停所有Timer,或指定id
    FF8.Timer.Pause();
    FF8.Timer.Resume();
    // 重新启动所有Timer,或指定id
    FF8.Timer.Restart();

    // 网络游戏,与服务器对表,单位ms
    FF8.Timer.SetServerTime(1702573904000);
    FF8.Timer.GetServerTime();

    // 获取游戏中的总时长
    FF8.Timer.GetTime();
}

自动OnApplicationFocus监听窗口焦点,暂停所有Timer