Unity自定义定时器

自己写的一个Timer,绑定到一个prefab上,使用时直接Instantaite,要用几个就Instantiate几个,非常方便

using UnityEngine;
using System.Collections;

public class Timer : MonoBehaviour
{
    private float _time;
    private float _lastTime;
    private bool _isStart;

    public float time
    {
        get { return _time; }
    }

    public bool isStart
    {
        get { return _isStart; }
    }

    // Use this for initialization
    void Start()
    {
        _time = 0;
        _lastTime = 0;
        _isStart = false;
    }

    // Update is called once per frame
    void Update()
    {
        if (_isStart)
        {
            _time = Time.time - _lastTime;
            //Debug.Log("Time:" + _time);
        }
    }

    public void RestartTimer()
    {
        _lastTime = Time.time;
        _isStart = true;
        Debug.Log("RestartTimer");
    }

    public void StopTimer()
    {
        if (_isStart)
        {
            _lastTime = 0;
            _time = 0;
            _isStart = false;
            Debug.Log("StopTimer");
        }
    }

    public void PauseTimer()
    {
        if (_isStart)
        {
            _lastTime = _time;
            _isStart = false;
            Debug.Log("PauseTimer");
        }
    }

    public void StartTimer()
    {
        if (!_isStart)
        {
            _lastTime = Time.time - time;
            _isStart = true;
            Debug.Log("StartTimer");
        }
    }

    #region //for test
    //void OnGUI()
    //{
    //    if (GUI.Button(new Rect(0, 0, 200, 200), "Start"))
    //    {
    //        StartTimer();
    //    }
    //    if (GUI.Button(new Rect(200, 0, 200, 200), "Pause"))
    //    {
    //        PauseTimer();
    //    }
    //    if (GUI.Button(new Rect(400, 0, 200, 200), "Stop"))
    //    {
    //        StopTimer();
    //    }
    //    if (GUI.Button(new Rect(600, 0, 200, 200), "Restart"))
    //    {
    //        RestartTimer();
    //    }
    //}
    #endregion
}
时间: 2024-11-24 07:36:46

Unity自定义定时器的相关文章

(Unity)Unity自定义Debug日志文件,利用VS生成Dll文件并使用Dotfuscated进展混淆,避免被反编译

Unity自定义Debug日志文件,利用VS生成Dll文件并使用Dotfuscated进行混淆,避免被反编译. 1.打开VS,博主所用版本是Visual Studio 2013. 2.新建一个VC项目,选择类库,取名为JefferyChan,具体步骤如下图: 3.因为要调用Unity中的相关文件,所以这里要引入外部文件.首先在Unity的安装文件夹中找到UnityEngine.dll,我的路径是:D:\Program Files (x86)\Unity\Editor\Data\Managed 如

自定义定时器(Timer)

最近做项目的时候,用到了java.util.Timer定时器类,也初步使用了,个人感觉不错.不过,在某些方面Timer类无法满足项目的需求,比如,在使用Timer时,调用schedule()方法之后(初始化),其循环周期无法改变,只有调用cancel()方法之后再重新启动才能将循环周期改变. 自己自定义了一个定时器线程,可开启.可关闭.可动态的改变循环周期,具体代码如下: /** * @ClassName: MyTimer * @Description: TODO 自定义定时器类 * @auth

Unity时钟定时器插件——Vision Timer源码分析之二

Unity时钟定时器插件--Vision Timer源码分析之二 By D.S.Qiu 尊重他人的劳动,支持原创,转载请注明出处:http.dsqiu.iteye.com 前面的已经介绍了vp_Timer(点击前往查看),vp_TimeUtility相对简单很多,vp_TimeUtility定义了个表示时间的结构Units: C#代码   /// <summary> /// represents a time measured in standard units /// </summar

Unity时钟定时器插件——Vision Timer源码分析之一

Unity时钟定时器插件--Vision Timer源码分析之一 By D.S.Qiu 尊重他人的劳动,支持原创,转载请注明出处:http.dsqiu.iteye.com 因为项目中,UI的所有模块都没有MonBehaviour类(纯粹的C#类),只有像NGUI的基本组件的类是继承MonoBehaviour.因为没有继承MonoBehaviour,这也不能使用Update,InVoke,StartCoroutine等方法,这样就会显得很蹩脚.后来一个同事添加vp_Timer和vp_TimeUti

Unity自定义mesh以及编译器

Star 自定义编辑器简易教程 an introduction to custom editors 原文地址 http://catlikecoding.com/unity/tutorials/star/ http://blog.csdn.net/lilanfei/article/details/7680802 简介 Introduction 这个教程将让你学会如何创建一个星型控件以及如何制作这个控件的自定义编辑器.你将学会: 动态的建立Mesh. 使用一个嵌套类. 建立一个自定义编辑器. 使用S

Unity自定义Atlas图集实现加载图集中的小图

Unity没有提供加载图集里面小图的API,下面是我学习框架课程(因为这个框架课程没有封装LoadAllAsset的方法)所学到的加载方法. 1.封装UIAtlas类,保存序列化的图集 /*******************  *  Title:CW_FrameWark  *  Author:CW  *  ScriptName:  UIAtlas  *  Des:自定义Atlas  ******************/using UnityEngine;using System.Collec

实现unity自定义资源

在游戏开发中,经常会用到一些配置文件保存一些数据,然后项目运行中读取这些配置文件中的数据在游戏中使用. 如:配置血条:根据角色类型(人物.动物.怪物等)配置不同的血条,包括血条大小,血条名或血条预设,血条颜色等一些简单数据. 如:配置子弹:子弹类型(真子弹.假子弹.追踪子弹等),子弹速度,伤害数值,子弹关联的特效等. 诸如此类的配置很多种,可创建一个可序列化的类存储数据,或者创建 XML .JSON 文件保存数据,创建 Excel 文件,创建 TXT 文件,皆可完成需求,灵活使用这些方法保存配置

Unity自定义组件之序列帧播放组件

我们知道在unity中播放序列帧动画有两种方式,第一种是利用Unity自带的animation组件来播放,我们只需要在工程目录中全选选中所有我们需要播放的图片,将其拖动到Hiercarchy上,Unity就会帮我们自动创建一个animation片段,我们就可以用animation组件来控制我们的动画,不过这种方式创建的图片Sprite Renderer类型的.第二种方式就是创建一个Image组件,利用代码创建一个sprite,写一段代码利用Update函数来逐帧替换Image的sprite来实现

unity自定义script模板

以mac为例,在/Applications/Unity/Unity.app/Contents/Resources/ScriptTemplates/ 新建1个模板文件:91-C# YourNameSpaceScript-NewBehaviourScript.cs.txt using System.Collections; using System.Collections.Generic; using UnityEngine; namespace YourNameSpace { public cla