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方法。顾名思义,第一个是执行一次,第二个是重复执行。 看下定...

unity基础开发----延迟等待执行代码

在unity中很多时候需要用到延迟执行或者等待执行。 //碰撞之后执行等待 WaitAndPrint() Csharp代码   void OnCollisionE...

转:Unity延时功能的几种实现

转自《Unity3D项目实战笔记(5):延时功能的几种实现》 我所做过的系统,分单机版系统(2005年)、CS系统(2010年)、实时系统(2015年),各个系统均有“延时”功能:定时调度的; 本博...

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

在Unity中,延时执行一段代码或者一个方法或者几个方法的情况非常普遍。 一般会用到Invoke和InvokeRepeating方法。顾名思义,第一个是执行一次,第二个是重复执行。 看下定...

Unity3D等待函数介绍

Unity3D等待函数介绍。Coroutines & Yield是Unity3D编程中重要的概念,它可以实现将一段程序延迟执行或者将其各个部分分布在一个时间段内连续执行,但是在Javascript与C...

Unity - 延时操作方案

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

【小松教你手游开发】【unity实用技能】unity中的几个延时

虽然这几个可以用作简单的延时,但是有时用处可大了。比如一些动画需要在同一时间播放等等。。 yield return WaitForFixedUpdate();//等到固定的帧刷新(和帧率无关,固定时间...

多个XCode工程联编进行调试开发

今天在这里跟大家讲一下XCode工程联编调试的方法,这也是在日常开发中经常要用到的。举例来说,你要给其他项目提供个一个framework的库,首先你需要在自己这边将这个库的功能开发完毕,并且测试通过后...

【Unity3D自学记录】 Unity 延迟执行一段代码的较为优雅的方式

在unity中,延时执行一段代码或者一个方法或者几个方法的情况非常普遍。 一般会用到Invoke和InvokeRepeating方法。顾名思义,第一个是执行一次,第二个是重复执行。 看下定...

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

一、Coroutine(协程)的概念和本质 在网上的一些资料当中,一直将Coroutine当作一个线程来描述,这样是不准确的。因为Coroutine并不是一个新的线程,它仍旧是属于主线程的一部分。Co...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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