Unity3d 中定时器的使用

转载 2016年08月30日 10:08:51

来源http://wiki.ceeger.com/start?do=search&id=Invoke

  • 延时是个很常用的功能
    n 秒后执行 一个函数,每隔 n 秒重复执行 一个函数。

  • 反悔了,想取消它?
    可以统统取消,也可以只取消具体的某一个延时执行的设定。

MonoBehaviour.Invoke 延迟调用

JavaScript ⇒ Invoke(methodName: string, time: float): void;
C# ⇒ void Invoke(string methodName, float time);

Description 描述

Invokes the method methodName in time seconds.

在time秒后,延迟调用方法methodName。

JavaScript:

// Launches a projectile in 2 seconds

var projectile : Rigidbody;

Invoke("LaunchProjectile", 2);

function LaunchProjectile () 
{ 
    var instance : Rigidbody = Instantiate(projectile); 
    instance.velocity = Random.insideUnitSphere * 5; 
} 

C#:

using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour {
    public Rigidbody projectile;
    void LaunchProjectile() {
        Rigidbody instance = Instantiate(projectile);
        instance.velocity = Random.insideUnitSphere * 5;
    }
    void Example() {
        Invoke("LaunchProjectile", 2);
    }
}

MonoBehaviour.InvokeRepeating 重复延迟调用

JavaScript ⇒ InvokeRepeating(methodName: string, time: float, repeatRate: float): void;
C# ⇒ void InvokeRepeating(string methodName, float time, float repeatRate);

Description 描述

Invokes the method methodName in time seconds, then repeatedly every repeatRate seconds.

在time秒调用methodName方法,然后每repeatRate秒重复调用。

JavaScript:

// Starting in 2 seconds.
// a projectile will be launched every 0.3 seconds

var projectile : Rigidbody;

InvokeRepeating("LaunchProjectile", 2, 0.3);

function LaunchProjectile () 
{ 
    var instance : Rigidbody = Instantiate(projectile); 
    instance.velocity = Random.insideUnitSphere * 5; 
} 

C#:

using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour {
    public Rigidbody projectile;
    void LaunchProjectile() {
        Rigidbody instance = Instantiate(projectile);
        instance.velocity = Random.insideUnitSphere * 5;
    }
    void Example() {
        InvokeRepeating("LaunchProjectile", 2, 0.3F);
    }
}

MonoBehaviour.CancelInvoke 取消延迟调用

JavaScript ⇒ CancelInvoke(): void;
C# ⇒ void CancelInvoke();

Description 描述

Cancels all Invoke calls on this MonoBehaviour.

在当前MonoBehaviour,取消所有Invoke调用

JavaScript:

// Starting in 2 seconds.
// a projectile will be launched every 0.3 seconds
var projectile : Rigidbody;
InvokeRepeating("LaunchProjectile", 2, 0.3);

// Cancels the repeating invoke call, 
// when the user pressed the ctrl button 
function Update() 
{ 
    if (Input.GetButton ("Fire1")) 
        CancelInvoke(); 
}

function LaunchProjectile () 
{ 
    instance = Instantiate(projectile); 
    instance.velocity = Random.insideUnitSphere * 5; 
} 

C#:

using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour {
    public Rigidbody projectile;
    void Update() {
        if (Input.GetButton("Fire1"))
            CancelInvoke();

    }
    void LaunchProjectile() {
        instance = Instantiate(projectile);
        instance.velocity = Random.insideUnitSphere * 5;
    }
    void Example() {
        InvokeRepeating("LaunchProjectile", 2, 0.3F);
    }
}

JavaScript ⇒ CancelInvoke(methodName: string): void;
C# ⇒ void CancelInvoke(string methodName);

Description 描述

Cancels all Invoke calls with name methodName on this behaviour.

在当前behaviour,取消所有方法名为methodName的Invoke调用。

JavaScript:

// Starting in 2 seconds.
// a projectile will be launched every 0.3 seconds

var projectile : Rigidbody; 
InvokeRepeating("LaunchProjectile", 2, 0.3);

// Cancels the repeating invoke call, // when the user pressed the ctrl button 
function Update() 
{ 
    if (Input.GetButton ("Fire1")) 
        CancelInvoke("LaunchProjectile"); 
}

function LaunchProjectile () 
{ 
    instance = Instantiate(projectile); 
    instance.velocity = Random.insideUnitSphere * 5; 
} 

C#:

using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour {
    public Rigidbody projectile;
    void Update() {
        if (Input.GetButton("Fire1"))
            CancelInvoke("LaunchProjectile");

    }
    void LaunchProjectile() {
        instance = Instantiate(projectile);
        instance.velocity = Random.insideUnitSphere * 5;
    }
    void Example() {
        InvokeRepeating("LaunchProjectile", 2, 0.3F);
    }
}

相关文章推荐

Unity3D中定时器的使用

http://unity3d.9tech.cn/news/2014/0402/40149.html 在游戏设计过程中定时器是必不可少的工具,我们知道update方法是MonoBehavior中一个...
  • OnafioO
  • OnafioO
  • 2015年03月16日 21:51
  • 3861

Unity中定时执行事件的定时器

事件执行定时器!

Unity定时器Timer类

本文只作为参考,个人水平有限,望见谅! 在写代码的时候经常碰到过一定时间之后执行某个方法的情况,刚开始时会定义一个bool值和一些时间count进行时间上的判断,于是乎就出现了许多的变量,时间一长...
  • zzmkljd
  • zzmkljd
  • 2016年10月14日 16:00
  • 1895

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

unity3d 定时器的使用

//Time类包含了一个重要的类变量deltaTime,它表示距上一次调用Update或FixedUpdate所用的时间。 //因此通过它可以让游戏对象按照一个常速进行旋转,而不是依赖于它的帧频: f...
  • fzhlee
  • fzhlee
  • 2013年03月18日 16:20
  • 9476

[Unity3d]u3d中定时器的使用

在游戏设计过程中定时器是必不可少的工具,我们知道update方法是MonoBehavior中一个人人皆知的定时器方法,每帧都在调用,那还有其他什么定时器的方法呢,这里介绍一下。 1.Invoke(s...

关于Unity中的简易定时器

方法①:使用变量在Update中计时 方法②:使用协程Coroutine 方法③:使用InvokeRepeating...

Unity3d C# Timer定时器的使用

前言: 定时器的作用就是每隔一个指定的时间,调用一次,和Tick事件绑定的函数。 这个时间值由Interval进行设置,interval=500 (100=1秒)则表示每隔5s就调用一次函...

Unity3D UGUI之自制定时器(二)

  • 2015年04月20日 22:01
  • 5KB
  • 下载

Unity3D定时器的调用

转载自:http://unity3d.9tech.cn/news/2014/0402/40149.html 在游戏设计过程中定时器是必不可少的工具,我们知道update方法是MonoBeha...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Unity3d 中定时器的使用
举报原因:
原因补充:

(最多只允许输入30个字)