Unity3d当达到关卡胜利条件后,js计时器的启动与停止不停止该怎么办?

他的最新文章
他的热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)他的最新文章
他的热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)他的最新文章
他的热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)原地址:http://blog.sina.com.cn/s/blog_5b6cb9500101aejs.html
https://github.com/xuzhiping7/Unity3d-Timer
项目中管理计时器太混乱难看了,用好听点的话来说就是代码不优雅。
想了下就随手简单写了个时间管理模块了。其实有好几种实现方式的,但是选用了U3D最为合适和简单的方式写。效率可能不高,但做小游戏是压根没问题的了。
原理简单点来说就是统一管理计时器。
每个计时器有自己的开始、暂停、结束、重新开始。当计时结束之后则调用相应的一个或者多个函数。
Timer.cs算是基类,TimerManager.cs则是管理每一个计时器的管理程序。根据不同的项目改至适用即可。
就那样,代码非常简单。就是一个委托回调。
具体代码放到GITHUB了,有兴趣的同学可以上去看看。
https://github.com/xuzhiping7/Unity3d-Timer
//Coded by ZhipingXu
//Too simple, so I do not need to explain, just see the code. Help yourself.
public class Timer{
//If the Timer is running
private bool b_T
//Current time
private float f_CurT
//Time to reach
private float f_TriggerT
//Use delegate to hold the methods
public delegate void EventHandler();
//The trigger event list
public event EventH
/// &summary&
/// &/summary&
/// &param name="second"&Trigger Time&/param&
public Timer(float second)
f_CurTime = 0.0f;
f_TriggerTime =
/// &summary&
/// Start Timer
/// &/summary&
public void Start()
b_Tricking = true;
/// &summary&
/// Update Time
/// &/summary&
public void Update(float deltaTime)
if (b_Tricking)
f_CurTime += deltaT
if (f_CurTime & f_TriggerTime)
//b_Tricking must set false before tick() , cause if u want to restart in the tick() , b_Tricking would be reset to fasle .
b_Tricking = false;
/// &summary&
/// Stop the Timer
/// &/summary&
public void Stop()
b_Tricking = false;
/// &summary&
/// Continue the Timer
/// &/summary&
public void Continue()
b_Tricking = true;
/// &summary&
/// Restart the this Timer
/// &/summary&
public void Restart()
b_Tricking = true;
f_CurTime = 0.0f;
/// &summary&
/// Change the trigger time in runtime
/// &/summary&
/// &param name="second"&Trigger Time&/param&
public void ResetTriggerTime(float second)
f_TriggerTime =
using UnityE
using System.C
public class TimerManager : MonoBehaviour
// Use this for initialization
void Start () {
test = new Timer(3.0f);
test.tick += T
test.tick += Test2;
test.Start();
// Update is called once per frame
void Update () {
//If u have many timer
//u also can serval frame call one time to save some performance, but the deltaTime u should calculate youself
//like :(u should define lastTime youself-- float)
if(Time.frameCount%5 == 0)
delta = Time.time - lastT
test.Update(Time.deltaTime);
lastTime = Time.
test.Update(Time.deltaTime);
//Some time u may need this to avoid conflict when re-init something , just a tip .
void OnDestory(){
test.tick -= T
test.tick -= Test2;
void Test()
Debug.Log("1");
void Test2()
Debug.Log("2");
阅读(...) 评论()unity3d 倒计时器 出现问题_百度知道
unity3d 倒计时器 出现问题
就是想做一个简单的倒计时功能
public float Timer = 3f;
一个事件触发倒计时开始
public void start () {
Timer-=Time.deltaT
另一个事件触发重置倒计时
public void stop (){
Timer =Time.time % 3f;
倒计时到0的时候目标物...
我有更好的答案
  public float S
//这里用小于号;/移动速度  private float timer = 3; /&#47.deltaTime);  return:void
Start (){}
和 void Update () {} .deltaT计时器  private bool runing = /&#47.Translate(Vector3,u3d 比较重要得两个方法;
/&#47  看得出来你真得是不会;前面一个方法在开始得时候执行一次,之后就不执行了,第二个方法是没0;没0.02 秒会执行一次  if (timer &lt,不要使用等于号  {  runing =是否运行  void Update () {  if (runing)  {  这里得作用是在出发移动方法得之后,只执行移动的代码;
/&#47.02秒就会执行一次,后面的不用执行  }  timer -= Time,更多得方法说明,请百度u3d脚本生命周期。我下面给你个脚本.up * Speed * Time。我在这简单说说
采纳率:54%
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。

我要回帖

更多关于 scratch 计时器停止 的文章

 

随机推荐