Unity计时器设计 - 基础计时器

Unity计时器设计 - 基础计时器

在Unity中,Time类的功能较少,例如Time.time在Awake等函数中无法获取,并且没有计时器概念等,大部分项目有计时器的需求,这篇文章将实现一个自己定义的计时器。


在开始写代码之前,先总结需求:

计时器应当具有以下操作:

  • 设置计时器
  • 开始和取消计时器
  • 暂停和继续计时器
  • 重置计时器
  • 一系列事件(OnStart,OnUpdate,OnCancel,OnEnd等)。

并且具有这些属性:

  • 计时器时间:开始、剩余、到时、总时长。
  • 计时器状态:未开始,运行中,暂停中。

设计完以上内容后,可以做这些事情:

  • 延时函数
  • 一切基于时间执行的概念,例如技能,类似cocos2d-x的动作系统等。
  • 很多情况下,计时器不希望随挂载对象被销毁时消失,所以Timer不继承于MonoBehaviour。

总结完可以开始写了。
首先,添加引用

using UnityEngine;
using System;

可以运行的最基础的计时器:

//注意不继承于MonoBehavior
public class Timer
{
    //开始时间
    public float StartTime { get; private set; }
    //持续时间
    public float Duration { get; private set; }
    //结束时间
    public float EndTime { get; private set; }
    //当前时间
    public float CurTime { get; private set; }

    //运行标识
    public bool IsStart { get; private set; }

    //开始和结束事件,这里直接用System.Action(相当于空返回值无参数委托)
    public Action OnStart { get; set; }
    public Action OnEnd {
  • 2
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值