协程编写特定时间生成物体并执行动画

来源:互联网 发布:学位论文数据库 编辑:程序博客网 时间:2024/06/09 16:45
using UnityEngine;using System.Collections.Generic;using System.Collections;using UnityEngine.UI;public class Testdemo : MonoBehaviour {    public bool booldemo;    public Transform[] transformarr;    private List<Transform> _list = new List<Transform>();    public Transform obj;    public Transform obj1;    public Transform obj2;    public int movedemo=1;    public int number;    // Use this for initialization    void Start () {        for (int i = 0; i < transformarr.Length; i++)        {            transformarr[i].gameObject.SetActive(false);            _list.Add(transformarr[i]);        }        StartCoroutine(Test1());    }    // Update is called once per frame    void Update () {        switch (number)        {            case 1:                Move(obj);                break;                   case 2:                Move(obj1);                break;            case 3:                Move(obj2);                break;            case 4:                              break;                 }        //Move(Transform obj);        //Move(Transform obj);    }    void OnDrawGizmos()    {    }    IEnumerator Test1()    {        yield return new WaitForSeconds(5);        SetActivetrue(_list[0]);        StartCoroutine(Test2());    }    IEnumerator Test2()    {        number = 1;        yield return new WaitForSeconds(5);        SetActivefalse(_list[0]);        SetActivetrue(_list[1]);        StartCoroutine(Test3());    }    IEnumerator Test3()    {        number = 2;        yield return new WaitForSeconds(5);        SetActivefalse(_list[1]);        SetActivetrue(_list[2]);        StartCoroutine(Test4());    }    IEnumerator Test4()    {        number = 3;        yield return new WaitForSeconds(5);        SetActivefalse(_list[2]);        number = 4;    }    public void SetActivetrue(Transform obj)    {        obj.gameObject.SetActive(true);    }    public void SetActivefalse(Transform obj)    {        obj.gameObject.SetActive(false);    }    public void Move(Transform obj)    {        if (obj.position.y>2)        {            movedemo = -1;        }        if(obj.position.y < 1)        {            movedemo = 1;        }        obj.Translate(Vector3.up * Time.deltaTime *movedemo*1, Space.Self);    }}
阅读全文
0 0
原创粉丝点击