Unity3d延时执行程序的方法

原创 2016年08月31日 16:24:56

这里只给出了两种方法,以后继续补充。


【一】协程

例子:

void Start()
    {
        StartCoroutine(PlayerAttack());

    }


IEnumerator PlayerAttack()
    {
        yield return new WaitForSeconds(3.0f);
        Debug.Log("After 3s");
    }


3秒后显示“After 3s”信息。


注意:协程有些复杂,例如上面的程序修改成下面的样子后:

void Start()
    {
        StartCoroutine(PlayerAttack());
        Debug.Log("After PlayerAttack");
    }


IEnumerator PlayerAttack()
    {
        yield return new WaitForSeconds(3.0f);
        Debug.Log("After 3s");
    }


在显示“After 3s”信息前,会先显示“After PlayerAttack”信息。



【二】Invoke()方法

例子:

void Start()
    {
        Invoke("ShowWord", 3f);
    }


    public void ShowWord()
    {
        Debug.Log("I love the bird");
    }


3秒后调用ShowWord()方法显示“I love the bird”信息。


注意:

Invoke()是一种委托机制,网上说有如下3点需要注意的事项:

1.它应该在脚本的生命周期里的Start()、Update()、OnGUI()、FIxedUpdate()、LateUpdate()中被调用;

2.Invoke()方法里不能接受含有参数的方法;

3.在 Time.ScaleTime = 0; 时,Invoke() 方法无效,因为它不会被调用。


对于第一点不是很了解,因为如下程序是可以按照预料去执行的:

void Start()
    {
        CallYou();
    }

    public void CallYou()
    {
        Invoke("ShowWord", 3f);
    }


    public void ShowWord()
    {
        Debug.Log("I love the bird");
    }


上面程序中没有直接在 Start() 方法中调用 Invoke() 方法,不过还是正常执行,说明了这样使用 Invoke() 方法相当于直接在 Start() 方法中调用。

希望有谁能解释一下第一点是什么意思。


版权声明:本文为博主原创文章,未经博主允许不得转载。

Unity 延迟执行一段代码的实现比较好的方式

在Unity中,延时执行一段代码或者一个方法或者几个方法的情况非常普遍。 一般会用到Invoke和InvokeRepeating方法。顾名思义,第一个是执行一次,第二个是重复执行。 看下定...
  • rondong
  • rondong
  • 2015年01月26日 00:57
  • 5418

浅谈Unity3D中的Coroutine及其使用(延时、定时调用函数)

一、Coroutine(协程)的概念和本质 在网上的一些资料当中,一直将Coroutine当作一个线程来描述,这样是不准确的。因为Coroutine并不是一个新的线程,它仍旧是属于主线程的一部分。Co...
  • nizihabi
  • nizihabi
  • 2015年08月13日 11:58
  • 5851

Unity - 延时操作方案

背景:做游戏的很多时候我们需要延时操作:倒计时是一个最简单也是最基本的问题。 目标:用 Invoke  和 StartCoroutine 延时做倒计时。 因为此文是实现功能文,具体理论不在...
  • u013236878
  • u013236878
  • 2016年08月18日 17:53
  • 3422

Unity3D中的Coroutine使用(协同执行程序)

Unity3D中的Coroutine使用,附带一些实例代码
  • liulong1567
  • liulong1567
  • 2015年06月10日 23:59
  • 801

Unity3d之截图方法

  • 2015年03月18日 13:45
  • 698KB
  • 下载

扩展Unity3d 组件方法,简化API使用 - C#特性之 Extension Method

  • 2015年05月10日 21:19
  • 132KB
  • 下载

Unity3D优化方法

  • 2012年04月27日 17:14
  • 157KB
  • 下载

Unity3d运行时程序创建NGUI图集 - 转载

http://www.narkii.com/club/thread-336847-1.html
  • chenluwolf
  • chenluwolf
  • 2014年11月24日 09:57
  • 837

Unity3d运行时程序创建NGUI图集 - 转载

http://www.narkii.com/club/thread-336847-1.html 项目中UI经常要用到动态加载图片,比较简单的方法是使用UITexture控件,这样只用...
  • hany3000
  • hany3000
  • 2015年02月04日 03:31
  • 913

unity3d中post-processing时屏幕翻转的处理方法

参考:http://docs.unity3d.com/Manual/SL-PlatformDifferences.html Vertical texture coordinate conven...
  • wolf96
  • wolf96
  • 2016年03月13日 08:39
  • 2064
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Unity3d延时执行程序的方法
举报原因:
原因补充:

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