상세 컨텐츠

본문 제목

유니티 코루틴시작, 코루틴 종료 StartCoroutine(), StopCoroutine()

프로그래밍/유니티

by 개발자입니다 2020. 6. 8. 18:57

본문

728x90
반응형

오늘은 코루틴을 사용하고, 게임 시작 직전 딜레이 시간을 주는 방법에 대해 알아 보았다.


먼저 시간을 보여줄 UI Text를 캔버스 안에 생성 후 캔버스에 DelayTimeMain이라는 이름을 가진 스크립트를 컴포넌트 해준다.


코루틴을 사용하는 방법은 아래와 같다.


StartCoroutine("TimeDelay");    //호출 함수 이름과 아래 IEnumerator 이름이 같아야 함.


 IEnumerator TimeDelay(){


yield return new WaitForSeconds(1.0f);    //1초 딜레이 함.


}







public class DelayTimeMain : MonoBehaviour

{

    [SerializeField] private Text TextTime;              //선언된  UI Text

    private bool Timebool = true;    //코루틴 호출을 위한 논리형 변수

    public int DelayCount = 3;        //화면에 띄어 줄 정수형 변수


    // Update is called once per frame

    void Update()

    {

//만약 정수형 변수가 0 이라면

        if (DelayCount == 0)

        {

//코루틴 정지

            StopCoroutine("TimeDelay");

        }

//만약 논리형 변수가 참 이라면

        if (Timebool)

        {

//코루틴 호출

            StartCoroutine("TimeDelay");

        }

        

    }


//코루틴 호출

    IEnumerator TimeDelay()

    {

        Timebool = false;

//UI Text에 정수형 변수 정의

        TextTime.text = DelayCount.ToString();


//1초 후

        yield return new WaitForSeconds(1.0f);

        Debug.Log(DelayCount);

//정수형 변수 1빼기

        DelayCount--;

//만약 정수형 변수가 0이면

        if (DelayCount == 0)

        {

//텍스트 판넬을 사라지게 함

            GameObject.Find("TimePanel").SetActive(false);

        }

//다시 논리형 변수 참으로 코루틴 호출

        Timebool = true;

    }


}




다음과 같이 스크립트를 작성 후 캔버스 안의 스크립트에 생성된 TextTime에 생성한 Text를 참초, 이후 실행하면 아래와 같이 3초의 딜레이 값을 가질 수 있다.





또, 딜레이 값을 달리 하고 싶다면 위의 정수형 변수를 조절 하여 사용한다면 편리하다.





728x90
반응형

관련글 더보기

댓글 영역