PETimer

PETimer开源项目GitHub地址:点击跳转

PETimer

1.双端通用:基于C#语言实现的高效便捷计时器,可运行在服务器(.net core/.net framework)以及Unity客户端环境中。

2.功能丰富:PETimer支持帧数定时以及时间定时。定时任务可循环、可替换、可取消。可使用独立线程计时(自行设定检测间隔),也可以使用外部驱动计时,比如使用MonoBehaviour中的Update()函数来驱动。

3.集成简单:只有一个PETimer.cs文件,只需实例化一个PETimer类,对接相应的API,便能整合进自己的游戏框架,实现便捷高效的定时回调服务。

技术支持QQ:1785275942

使用示意:

1.Unity当中使用

//实例化计时类
PETimer pt = new PETimer();
//时间定时任务
pt.AddTimeTask(TimerTask, 500, PETimeUnit.Millisecond, 3);
//帧数定时任务
pt.AddFrameTask(FrameTask, 100, 3); int tempID = pt.AddTimeTask((int tid) => {
Debug.Log("定时等待替换......");
}, 1, PETimeUnit.Second, 0); //定时任务替换
pt.ReplaceTimeTask(tempID, (int tid) => {
Debug.Log("定时任务替换完成......");
}, 2, PETimeUnit.Second, 0); //定时任务删除
pt.DeleteTimeTask(tempID); //定时检测与处理由MonoBehaviour中的Update()函数来驱动
void Update() {
pt.Update();
}

2.服务器中使用

第一种用法:运行线程检测并处理任务(类似于在Unity中使用)

PETimer pt = new PETimer();
//必须在While循环中调用pt.Update()来驱动计时
while (true) {
pt.Update();
}

第二种用法:独立线程检测并处理任务

//在PETimer实例化时,传入检测间隔参数(单位毫秒)
PETimer pt = new PETimer(100);

关于定时任务的添加、替换、删除与Unity当中使用方法一致

3.可设置定时回调处理器

当定时任务的回调处理可通过设置处理Handle来覆盖默认的执行处理(一般用于独立线程计时)

pt.SetHandle((Action<int> cb, int tid) => {
//覆盖默认的回调处理
//TODO
});

4.日志工具接口

通过SetLog(Action log)接口,可以传入第三方的日志显示工具。(下面以Unity为例,实现在Unity编辑器控制台中输出日志信息)

pt.SetLog((string info) => {
Debug.Log("LogInfo:" + info);
});

5.其它常用API

//获取本地DateTime
public DateTime GetLocalDate();
//获取年份
public int GetYear();
//获取月份
public int GetMonth();
//获取天数
public int GetDay();
//获取星期
public int GetWeek();
//获取自1970-1-1以来的毫秒总数
public double GetMillisecondsTime();
//获取当前时间字符串
public string GetLocalTimeStr();

C#开源定时回调库PETimer的使用的更多相关文章

  1. Android开源项目及库搜集

    TimLiu-Android 自己总结的Android开源项目及库. github排名 https://github.com/trending,github搜索:https://github.com/ ...

  2. iOS、mac开源项目及库汇总

    原文地址:http://blog.csdn.net/qq_26359763/article/details/51076499    iOS每日一记------------之 中级完美大整理 iOS.m ...

  3. Android 开源项目及库汇总(2)

    Android 开源项目及库汇总(2) ListenToCode 2.7 2018.10.10 15:43 字数 8527 阅读 1001评论 0喜欢 29 地图 百度地图– Android百度地图 ...

  4. 最好的.NET开源免费ZIP库DotNetZip(.NET组件介绍之三)

    在项目开发中,除了对数据的展示更多的就是对文件的相关操作,例如文件的创建和删除,以及文件的压缩和解压.文件压缩的好处有很多,主要就是在文件传输的方面,文件压缩的好处就不需要赘述,因为无论是开发者,还是 ...

  5. Win10 UWP开发系列——开源控件库:UWPCommunityToolkit

    在开发应用的过程中,不可避免的会使用第三方类库.之前用过一个WinRTXamlToolkit.UWP,现在微软官方发布了一个新的开源控件库—— UWPCommunityToolkit 项目代码托管在G ...

  6. Cowboy 开源 WebSocket 网络库

    Cowboy.WebSockets 是一个托管在 GitHub 上的基于 .NET/C# 实现的开源 WebSocket 网络库,其完整的实现了 RFC 6455 (The WebSocket Pro ...

  7. java开源时间/日期库Joda-Time

    任何企业应用程序都需要处理时间问题.应用程序需要知道当前的时间点和下一个时间点,有时它们还必须计算这两个时间点之间的路径.使用 JDK 完成这项任务将非常痛苦和繁琐.现在来看看 Joda Time,一 ...

  8. fastjson是阿里巴巴的开源JSON解析库

    fastjson的API十分简洁. String text = JSON.toJSONString(obj); //序列化 VO vo = JSON.parseObject("{...}&q ...

  9. 人生维艰,何不利用开源.NET函数库让工作更轻松

    今天推荐的文章会谈到一些让你工作更轻松的开源.NET函数库. 即使业界有时候认为.NET开源社区不太健康,很多开发团队都更多依赖于微软提供的东西来开发.不过最近在.NET世界中还是诞生了一些优秀和有意 ...

随机推荐

  1. leetcode747

    public class Solution { public int DominantIndex(int[] nums) { var list = new List<KeyValuePair&l ...

  2. MFC单文档分割区(CSplitterWnd)

    用VS08程序向导,单文档程序,默认设置生成的.工程名为3view; 其中默认生成的视图类CMy3viewView,对应3viewView.h,3viewView.cpp; 在Resourse Vie ...

  3. maven创建webapp项目

    新建maven项目 勾选 create a simple project 点击next 填写maven项目信息,packaging 选择war,点击Finish 创建成功后,项目结构如下 选择项目右键 ...

  4. 如何设置tomcat,直接通过IP 访问

    找到tomcat的主目录,进入conf文件夹,找到server.xml文件,并打开:   修改tomcat的监听端口为80端口: 在server.xml文件中找到: <Connector por ...

  5. objective-C中的"非正式协议"和“正式协议”

    objective-C中的接口与泛型 先承认我是标题党,因为在obj-c的世界中,官方根本没有"接口"与"泛型"这样的说法. 不过在obj-c中有二个与之接近的 ...

  6. ubuntu下面板上无网络连接的图标

    解决方法:删除旧的网络配置,重新让networkManager自动配置 sudo service network-manager stop sudo rm /var/lib/NetworkManage ...

  7. win7下IIS的安装和配置图文教程

    1. 首先是安装IIS.打开控制面板,找到”程序与功能”,点进去 2. 点击左侧”打开或关闭Windows功能” 3. 找到”Internet 信息服务”,按照下图打勾即可 等待安装完成 4. 安装完 ...

  8. Bug of VS2015+WDK

    1>  Signability test failed.1>  1>  Errors:1>  22.9.7: DriverVer set to incorrect date ( ...

  9. linux: cmake(未完,待更新)

    参考: http://blog.csdn.net/netnote/article/details/4051620 http://blog.csdn.net/fan_hai_ping/article/d ...

  10. linux系统文件属性详解

    一.文件信息 当创建一个文件的时候,系统保存了有关该文件的全部信息,包括: 文件的位置: 文件类型: 文件长度: 哪位用户拥有该文件,哪些用户可以访问该文件: 硬连接计数: 文件的修改时间: 文件的权 ...