先放二篇大神写的博客,很受用。谢谢https://blog.csdn.net/huang9012/article/details/38492937
http://www.unity.5helpyou.com/2658.html
今天在看Unity中协程的作用先放一个物体渐隐渐现的效果吧
public class Test : MonoBehaviour
{
void Start()
{
StartCoroutine(Test1());
}
IEnumerator Test1()
{
while (true)
{
//获得物体上的Alpha值
float a = gameObject.GetComponent<Renderer>().material.color.a;
//使用for循环让Appha值从1减到0 一开始我以为这里面的两个for循环会同时的执行但是我运行后发现是按顺序执行的执行完第一个才能执行下一个
想想也是每一次到Yield代码就会被暂停,执行LateUpdate后,再次重新回到Update中执行完后再次重执行协程,这是我这个小白的理解,希望大神可以给我指出不对的地方
for (float i = 1; i >= 0; i -= Time.deltaTime*0.3f)
{
//每变化一次就暂停一次,等下一次继续执行
gameObject.GetComponent<Renderer>().material.color = new Color(0, 0, 1, i);
Debug.Log("A********" + a);
yield return 0;
Debug.Log("I********"+i);
}
yield return new WaitForSeconds(1);//目的变到透明后暂停1秒在慢慢变回来
//再让Alpha的值从0慢