ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 유니티 코루틴 coroutine 활용하기
    유니티(Unity)/유니티 코딩 2019. 2. 6. 18:47

    해당 티스토리 페이지는 필자가 유니티 C# 개발을 하면서 학습한 내용들을 기록하고 공유하는 페이지입니다 !

    - 틀린 부분이 있거나, 수정된 부분이 있다면 댓글로 알려주세요 !

    - 해당 내용을 공유 or 퍼가도 좋으나, 출처를 꼭 명시해주세요 !

    - 해당 글의 모든 저작권은 Chameleon Studio에 있습니다.

    - 방문해주셔서 감사합니다 ^^



    썸네일 이미지입니다.유니티 코루틴 활용법


    안녕하세요 ㅎㅎ 카멜레온입니다!


    오늘은 코루틴에 대한 포스팅을 할 예정입니다.


    코루틴은 유니티 내에서 여러가지 용도로 사용됩니다.


    CPU의 과부하를 막기 위해서 천천히 매서드를 실행시켜도 될 때도 사용되고,


    보스의 공격 속도를 몇 초에 한 번씩 처리할 때도 사용할 수 있고..


    코루틴을 이해하고만 있다면 여러가지 방면으로 사용할 수 있습니다.


    코루틴을 설명하는 데에 가장 쉬운 말은


    '지연(delay)'시키는 것이라고 말 할 수 있겠습니다.


    그럼 오늘의 포스팅에서는 코루틴의 예로


    '점프 지연(delay)'을 해보면서 코루틴을 이해해보도록 합시다!


    일단 예제 파일을 올리겠습니다.


    Test1.zip


    해당 파일은 캐릭터 점프구현하기 포스팅 때 썼던 완성본 파일입니다.


    다운받으시고, 폴더에 들어가서 Assets > Scenes > Test를 열어주세요.



    프로젝트 열린 이미지프로젝트 실행



    프로젝트 파일이 열렸습니다.


    귀여운 젤랑이가 반겨주고 있네요.


    바로 스크립트를 수정해서 점프 지연 코루틴을 만들어봅시다.


    젤랑이가 가지고 있는 스크립트를 열어주세요.



    아래 코드를 캡처해놓은 사진입니다.이미지가 안보이시는 분들은 아래 코드 보기를 눌러서 코드를 확인해주세요.



    자 프로젝트가 열렸습니다.


    이전 포스팅에서 적었던 스크립트가 남아있군요.


    스크립트를 살짝 수정해봅시다.



    위의 코드를 넣어 주세요.


    코드 설명을 덧붙히자면,


    IEnumerator는 코루틴을 만드는 이벤트 함수입니다.


    IEnumerator를 선언해주시고 코루틴 함수명을 뒤에 써주면 됩니다.


    저는 코루틴 함수명을 JumpDelay()라고 했네요.


    그리고,


    yield return new WaitForSeconds(2f); => 2초 동안 딜레이를 준다.(2f에 딜레이 주고 싶은 시간 입력)


    를 넣어줍니다.


    코루틴 함수를 사용하기 위해선 항상 yield return new를 통해 딜레이를 주어야 한답니다.


    지금은 WaitForSeconds를 사용했지만 다른 코드도 알고싶다면 여기를 눌러주세요.


    StartCoroutine("JumpDelay");


    코루틴은 StartCoroutine("코루틴 함수 명") 으로 실행됩니다.


    자, 스크립트를 저장하고 유니티로 돌아와서 ▶을 눌러주세요.





    어떠신가요?


    한 번만 누르고 기다리면 시간이 지난 후에 점프를 하긴 합니다만,,


    계속 누르면 점프를 여러 번 하는 현상이 발생합니다.


    그 이유는,


    코루틴이 돌고 있는 동안 입력이 계속 있었기 때문입니다.


    bool 값을 줘서 입력을 한 번만 받도록 해봅시다.


    다시 스크립트로 가봅시다.



    아래 코드를 캡처해놓은 사진입니다.이미지가 안보이시는 분들은 아래 코드 보기를 눌러서 코드를 확인해주세요.



    bool 값 Jumping을 선언했습니다.


    bool 값의 초기 상태는 false 입니다.


    if(Jumping == false) => Jumping이 false면

    StartCoroutine("JumpDelay"); => JumpDelay 코루틴이 실행된다.


    라고 불 값을 주고, 코루틴 함수 내에서


    Jumping이 바로 true가 되게하여, 코루틴 동안에는 스페이스바 입력이 있어도 코루틴이 돌지 않게 하였습니다.


    이제 유니티로 돌아가서, 확인해봅시다.


    ▶를 눌러보세요.





    실행해보니 스페이스바를 아무리 눌러도 코루틴 시간 후에 딱 한 번만 점프하게 되었습니다.


    이토록 코루틴은 시간을 딜레이 시켜주는 능력을 가지고 있습니다.


    이번 포스팅에서는 코루틴을 스크립트로 어떻게 사용하는 지에 대해서 알아보았습니다.


    코루틴을 이해하는 데에 작은 도움이 되었으면 합니다.


    점프를 지연하는 것은 예제에 불과합니다.


    코루틴을 사용하는 법을 알았으니, 여러가지 코드에 응용해보세요.


    무궁무진하게 사용할 수 있을겁니다.


    궁금한 사항은 댓글을 남겨주세요 !


    감사합니다 !


    Chameleon Studio가 만든 게임하러가기


    <젤랑점핑>

    안드로이드- market://details?id=com.Cameleon.TangTangBall

    IOS- itms-apps://itunes.apple.com/app/id1429522379



    <크러쉬팡>

    안드로이드- market://details?id=com.Chameleon.CrushPang 

    IOS- itms-apps://itunes.apple.com/app/id1450109331

    댓글

Designed by Tistory.