unity中的简单延时方法
来源:互联网 发布:手机网络的图标怎么换 编辑:程序博客网 时间:2024/05/27 14:12
unity中的简单延时方法
在unity中我们经常会需要考虑一件事,如何让一个物体或者功能在特定的条件下出现,这时我们就可以考虑应用延时的方式来解决,我们可以通过设定不同的时间点,让物体干不同的事情,从而达到想要的效果。下面需要讲的的是两种比较常见的延时方法,一个是unity自带的Invoke和InvokeRepeating,还有一个是协程。
一、场景的搭建
首先我们先搭建一个简单的场景,为了达到直观的效果,我们先创建两个Cube,一个Cube用来验证Invoke和InvokeRepeating的方法,另一个用来验证协程。我们可以通过不同时间段改变Cube的材质来体现延时的效果。比如让Cube从初始的白色通过不同时间段,由白变红,再由红变黄,最后再变绿,通过改变颜色变换时需要的时间来达到延时效果。
二、功能实现
我们在其中一个Cube中添加一个自定义脚本delayedOne。
using System.Collections;using System.Collections.Generic;using UnityEngine;public class delayedOne : MonoBehaviour{ public MeshRenderer skin; //定义一个网格渲染器void Start () { skin = this.transform.GetComponent<MeshRenderer>(); //获取网格渲染器 skin.material.color = Color.red; //让物体材质变为红色 Invoke("changeOne", 2f); //延时方法 // "changeOne", 2f, 1f); } private void changeOne() { skin.material.color = Color.yellow; //材质变为黄色 Invoke("changeTwo", 3f); } private void changeTwo() { skin.material.color = Color.green; //材质变为绿色 }}
在脚本中,主要用到Invoke这个延时方法。在使用Invoke这个方法之前,我们要先写一个延时的时候需要执行的方法,提供Invoke这个方法去调用别的方法来达到延时目的。Invoke的书写格式是在括号里添加需要调用的方法的方法名,后边跟着延时的时间。在脚本中我添加了2秒的时间,系统就会在过完2秒后执行changeOne方法,让物体材质变黄。别的方法里也可以添加Invoke方法,能达到嵌套的效果。而InvokeRepeating方法里多加了一个时间,那个时间指定的是重复执行方法的时间间隔。
在另一个Cube中添加自定义脚本delayedTwo。
using System.Collections;using System.Collections.Generic;using UnityEngine;public class delayedTwo : MonoBehaviour{ public MeshRenderer skin;void Start () { skin = this.transform.GetComponent<MeshRenderer>(); skin.material.color = Color.red; StartCoroutine("changeSkin"); //开始协程} IEnumerator changeSkin() //协程方法 { yield return new WaitForSeconds(2f); //暂停协程,2秒后执行之后的操作 skin.material.color = Color.yellow; yield return new WaitForSeconds(3f); //3秒后执行之后的操作 skin.material.color = Color.green; }}在脚本中主要运用协程来控制延时方法,要想使用协程先写方法,以IEnumerator开头,自定义名字,在方法中用yield return new WaitForSeconds()来暂停协程,括号里填时间,设定多少秒后执行之后的操作。脚本中先暂停协程,2秒后开始执行材质变黄操作,之后暂停3秒后执行材质变绿操作。协程方法写完后就是启动协程,用StartCoroutine加方法名来启动协程。
三、验证结果
运行程序,通过观察我们可以看出虽然使用的方法不同,但两个Cube所体现的效果是相同的。
两个Cube同时从红变为黄再变为绿,两种不同的方法由于设定的延时相同,就能达到同样的效果。
四、总结
总之,unity中常用的延时方法就这两种,在Invoke方法中确定了调用方法,在确定延时时间就能实现延时功能,而协程也是通过调用方法,确定暂停协程的时间来达到延时效果,只要确定了延时的时间,我们便能通过调用方法来实现延时。
阅读全文
0 0
- unity中的简单延时方法
- unity 延时调用方法
- Unity延时方法Invoke和InvoleRepeating
- unity自带延时执行方法
- 【C#】中的延时的方法。
- unity延时方法Invoke和InvokeRepeating(方法技术记载)
- IOS中的几种延时方法介绍
- Unity - 延时操作方案
- Unity 延时调用(Invoke)
- Unity延时操作
- 【小松教你手游开发】【unity实用技能】unity中的几个延时
- unity简单调用Android方法
- unity瞬移最简单的方法
- [Unity优化]unity中的优化方法
- Android 延时执行任务的三种简单方法
- Unity中的资源加载方法
- Unity中的抗锯齿方法
- Unity中的资源加载方法
- nexus-3.5.1-02 windows 安装
- HTML & CSSJava & Javascript——扶朕起来,朕还能接着编!
- 九月总结:结束两年左右的工作有感
- 新路程------shell之hi3516 rtc同步
- linux下直接修改压缩包中的内容
- unity中的简单延时方法
- Nodejs 读取中文时乱码问题
- 闭包 arguments 属性的使用(闭包)
- 那些年使用Android Studio碰上的那些事儿
- java单元测试工具 junit
- UVA 10161
- Kotlin笔记一
- android增量更新
- java poi Excel文件导入