低音炮可怕男子

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

对网上资源整理一下延时调用功能和几种方法:

1.Invoke(string methodName,float time)

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.每隔一定时间调用一次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() {
        InvokeRepeating("LaunchProjectile", 2, 0.3F);  //2秒后,每0.3f调用一次
    }
}
3.用IEnumerator DoSomeThingInDelay()函数
//定义IEnumerator函数
IEnumerator Waitexample(float delayTime)
{
    yield return new WaitForSeconds(delayTime);
  //在后面加入你要运行的脚本
}

不过这个方法怎么用怎么不好。

4.这是网上一个自己写的代码,还不错

//延时函数
using UnityEngine;
using System.Collections;
using System;

public class DelayToInvoke : MonoBehaviour
{
    public static IEnumerator DelayToInvokeDo(Action action, float delaySeconds)
    {
        yield return new WaitForSeconds(delaySeconds);
        action();
    }
}

在别的脚本中调用时

//用StartCoroutine调用
StartCoroutine(DelayToInvoke.DelayToInvokeDo(() =>
        {
           //你要运行的函数
        },3f));
//3f是延时的时间

 

 

 
 
posted on 2015-11-23 09:25  低音炮可怕男子  阅读(205)  评论(0编辑  收藏  举报