その先にあるもの…

StartCoroutine 본문

프로그래밍/Unity

StartCoroutine

specialJ 2015. 3. 3. 17:33

일반 클래스에서 StartCoroutine을 호출하지 못하고 MonoBehaviour에서 StartCoroutine을 호출하기에


일반 클래스는 Coroutine 사용이 안되는 줄 알았다.


public class Cor : MonoBehaviour {


    List<Skill> m_Skill;


// Use this for initialization

void Start () {


        m_Skill = new List<Skill>();

        m_Skill.Add(new Skill1());

        m_Skill.Add(new Skill2());

        m_Skill.Add(new Skill3());


        StartCoroutine("CallCor");

}

// Update is called once per frame

void Update () {

}


    public IEnumerator CallCor()

    {

        for (int i = 0; i < m_Skill.Count; i++)

            yield return StartCoroutine(m_Skill[i].Process());

        Debug.Log("End Func");


    }

}


public class Skill

{

    public virtual IEnumerator Process()

    {

        Debug.Log("Process()");

        yield break;

    }

}


public class Skill1 : Skill

{

    bool flag = true;

    float time = 0;


    public override IEnumerator Process()

    {


        Debug.Log("Skill1 Process()");

        while (flag)

        {

            time += Time.deltaTime;

            if (time > 3)

                flag = false;

            Debug.Log(time);

            yield return null;

        }


        yield return new WaitForSeconds(1);

    }

}


public class Skill2 : Skill

{

    public override IEnumerator Process()

    {

        Debug.Log("Skill2 Process()");

        yield return new WaitForSeconds(2);

    }

}


public class Skill3 : Skill

{

    public override IEnumerator Process()

    {

        Debug.Log("Skill3 Process()");

        yield return new WaitForSeconds(3);

        

    }

}


Comments