天天看点

Unity之定时调用

1.Invoke(string methodName,float time)

在一定时间调用methodName函数

​​using UnityEngine;​​
​​using System.Collections;​​
 

​​public​​​ ​​class​​​ ​​example : MonoBehaviour {​​


​​public​​​ ​​Rigidbody projectile;​​


​​void​​​ ​​LaunchProjectile() {​​


​​Rigidbody instance = Instantiate(projectile);​​


​​instance.velocity = Random.insideUnitSphere * ​​​​5​​​​;​​


​​}​​


​​public​​​ ​​void​​​ ​​Awake() {​​


​​Invoke(​​​​"LaunchProjectile"​​​​, ​​​​2​​​​);​​


​​}​​

​​}​​      

2.InvokeRepeating(string methodName,float time,float repeatRate)

每隔一定时间调用一次methodName函数

Invokes the method methodName in time seconds.

在time秒调用methodName方法;简单说,根据时间调用指定方法名的方法

After the first invocation repeats calling that function every repeatRate seconds.

从第一次调用开始,每隔repeatRate时间调用一次.

​​using UnityEngine;​​
​​using System.Collections;​​
 

​​public​​​ ​​class​​​ ​​example : MonoBehaviour {​​


​​public​​​ ​​Rigidbody projectile;​​


​​void​​​ ​​LaunchProjectile() {​​


​​Rigidbody instance = Instantiate(projectile);​​


​​instance.velocity = Random.insideUnitSphere * ​​​​5​​​​;​​


​​}​​


​​public​​​ ​​void​​​ ​​Awake() {​​


​​InvokeRepeating(​​​​"LaunchProjectile"​​​​, ​​​​2​​​​, ​​​​0​​​​.3F);  ​​​​//2秒后,没0.3f调用一次​​


​​}​​

​​}​​      

3.CancelInvoke(string methodName)

取消这个脚本中所有的调用

Cancels all Invoke calls on this MonoBehaviour.

取消这个MonoBehaviour上的所有调用。

​​public​​​ ​​class​​​ ​​example : MonoBehaviour {​​


​​public​​​ ​​Rigidbody projectile;​​


​​void​​​ ​​Update() {​​


​​if​​​ ​​(Input.GetButton(​​​​"Fire1"​​​​))​​


​​CancelInvoke();​​

 

​​}​​


​​void​​​ ​​LaunchProjectile() {​​


​​instance = Instantiate(projectile);​​


​​instance.velocity = Random.insideUnitSphere * ​​​​5​​​​;​​


​​}​​


​​public​​​ ​​void​​​ ​​Awake() {​​


​​InvokeRepeating(​​​​"LaunchProjectile"​​​​, ​​​​2​​​​, ​​​​0​​​​.3F);​​


​​}​​

​​}​​
 
​​function LaunchProjectile () {​​

​​instance = Instantiate(projectile);​​


​​instance.velocity = Random.insideUnitSphere * ​​​​5​​​​;​​

​​}​​      

4.(bool) IsInvoking(string methodName)

​​using UnityEngine;​​
​​using System.Collections;​​
 

​​public​​​ ​​class​​​ ​​example : MonoBehaviour {​​


​​public​​​ ​​Rigidbody projectile;​​


​​void​​​ ​​Update() {​​


​​if​​​ ​​(Input.GetKeyDown(KeyCode.Space) && !IsInvoking(​​​​"LaunchProjectile"​​​​))  ​​​​//如果这个方法不在调用并且等待了2秒​​


​​Invoke(​​​​"LaunchProjectile"​​​​, ​​​​2​​​​);​​

 

​​}​​


​​void​​​ ​​LaunchProjectile() {​​


​​Rigidbody instance = Instantiate(projectile);​​


​​instance.velocity = Random.insideUnitSphere * ​​​​5​​​​;​​


​​}​​

​​}​​