ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [3D] 코루틴 사용하기
    Unity(유니티) 2022. 4. 20. 13:14

    * Awake

    게임이 시작되기 전에, 모든 변수와 게임의 상태를 초기화하기 위해서 호출

    Awake함수는 오브젝트들 사이에서 임의의 순서로 호출되며, 스크리트 간의 참조를 설정하기 위해 Awake를 사용하고, 정보를 보내고 받는 경우에는 Start를 사용해야 함 ( Start보다 먼저 실행됨 )

     

    * StartCoroutine

    public Coroutine StartCoroutine(IEnumerator routine);

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class ExampleClass : MonoBehaviour
    {
        private void Start()
        {
            print("Starting" + Time.time);
            StartCoroutine(WaitAndPrint(2.0F));
            print("Before WaitAndPrint Finishes" + Time.time);
        }
        IEnumerator WaitAndPrint(float waitTime)
        {
            yield return new WaitForSeconds(waitTime);
            print("WaitAndPrint" + Time.time);
        }
    }
    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class ExampleClass : MonoBehaviour
    {
        IEnumerator Start()
        {
            print("Starting" + Time.time);
            yield return StartCoroutine(WaitAndPrint(2.0F));
            print("Before WaitAndPrint Finishes" + Time.time);
        }
        IEnumerator WaitAndPrint(float waitTime)
        {
            yield return new WaitForSeconds(waitTime);
            print("WaitAndPrint" + Time.time);
        }
    }

     

    public Coroutine StartCoroutine(string methodName, object value = null);

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class ExampleClass : MonoBehaviour
    {
        IEnumerator Start()
        {
            StartCoroutine("DoSomething", 2.0F);
            yield return new WaitForSeconds(1);
            StopCoroutine("DoSomething");
        }
        IEnumerator DoSomething(float someParameter)
        {
            while (true)
            {
                print("DoSomething Loop");
                yield return null;
            }
        }
    }

     

     

    [MainScript]

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class Test : MonoBehaviour
    {
        [SerializeField]
        private int a;
    
        private void Awake()
        {
            Debug.Log("Awake Start");
        }
    
        void Start()
        {
            Debug.Log("Hello World");
            a = 1;
            StartCoroutine(coru());
            //StartCoroutine("coru"); 문자열을 사용할 땐 매개변수 하나밖에 사용 못함
        }
    
        void Update()
        {
            
        }
        IEnumerator coru()
        {
            yield return new WaitForSeconds(3f);
            Debug.Log(a);
            a++;
            if (a == 11)
            {
                StopCoroutine(coru());
            }
            else StartCoroutine(coru()); //코루틴 반복 실행 메모리 부담을 적게(invoke는 되도록 쓰지 말 것)
            //StopCoroutine(coru());
        }
    }
Designed by Tistory.