ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 유니티 인보크 Invoke 사용법의 모든 것
    유니티(Unity)/유니티 코딩 2019. 2. 8. 23:29

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

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

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

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

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



    썸네일 이미지입니다.유니티 인보크 사용법


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


    오늘은 시간 지연 기능 중 하나인 인보크(Invoke)에 대해서 알아보려고 합니다.


    시간 지연 기능 중 다른 하나인 코루틴(Coroutine)에 대해서 궁금하신 분들은 여기를 눌러주세요 !


    바로 시작해봅시다.



    Unity 이미지 입니다.Unity 로고



    우선, 먼저 유니티에서 인보크(Invoke)란 자신이 설정한 시간만큼


    함수 시작 시간을 지연시키는 기능을 말합니다.


    CPU를 최적화시키기에도 유용하고, 함수 실행 순서를 조절하기에도 유용하게 사용됩니다.


    인보크(Invoke)와 코루틴(Coroutine)은 둘 다 시간을 지연시키는 기능임은 동일합니다.


    하지만, 단순히 함수의 시간 지연을 위해서라면,


    인보크가 훨씬 편리하게 사용됩니다.


    코드가 간단하기 때문이죠.


    코드를 볼까요?



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




    여기 Wait3Sec라는 이름을 가진 함수를 하나 만들었습니다.


    Wait3Sec() 함수는 "3초가 지났습니다"라는 디버그.로그를 가지고 있는 함수입니다.


    그리고 Start문에 Invoke로 3초의 시간 지연을 주고 Wait3Sec 함수를  실행시키도록 하였습니다.


    저장을 하고 유니티로 돌아와서 ▶을 눌러보겠습니다.





    실행시켜보니, 정확히 3초 후에 로그가 떴습니다.


    Invoke는 이렇게 함수 실행 지연을 시킬 수 있습니다.


    Invoke("매서드 명", 지연 시키고 싶은 시간 + f)


    만 넣는다면 원하는 시간만큼 함수 실행을 지연 시킬 수 있죠.


    그렇다면, Invoke의 두번째 기능 지연 반복을 알아봅시다.



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




    다음은 InvokeRepeating입니다.


    InvokeRepeating은 처음 함수를 실행할 때, 일정 시간 지연 후, 일정 시간 마다 반복하게 해주는 기능입니다.


    사용 방법으로는,


    InvokeRepeating("지연, 반복시킬 함수 명", 처음 지연할 시간+f, 지연 후 반복할 시간+f);


    로 사용하면 됩니다 !


    그럼 위의 코드는 어떻게 나오는 지, 유니티로 돌아와서 ▶을 눌러봅시다.





    처음 3초동안에는 반복이 안되다가,


    3초를 기다린 후부턴 1초마다 한 번씩 로그가 찍히고 있네요 !


    근데 요놈을 언젠가는 멈추고 싶을 때가 있을겁니다.


    그래서 Invoke의 마지막 기능인 반복 멈추기가 있습니다.


    아래 코드를 보시죠.



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




    바로 CancelInvoke 기능을 통해 반복하고 있는 Invoke를 취소시킬 수 있습니다.


    사용 방법으로는


    CancleInvoke("반복되고 있는 인보크 함수 명")


    을 써주시면 됩니다.


    아까 전에 3초 후 1초마다 로그가 찍히는 함수를 10초 후에 꺼보도록 하겠습니다.


    그렇다면, 로고가 3+1+1+1+1+1+1 으로 7번 찍힐 것입니다.


    9초까지 찍히고 10초부턴 취소되기 때문이죠.


    유니티로 돌아와서 ▶을 눌러보겠습니다.





    네, 정확히 7번. 즉, 10초 후에 정확히 Invoke의 반복이 실행 취소되었습니다.


    이렇게 해서 인보크(Invoke)의 모든 것을 알아보았습니다.


    인보크(Invoke)는 함수명만 입력해서 시간 지연, 반복, 취소까지 편리하게 사용할 수 있었습니다.


    여러분들도 다양하게 응용해서 사용해보세요 ㅎㅎ


    이번 포스팅에서 궁금한 사항은 댓글에 달아주세요.


    또, 카멜레온이 다뤘으면 좋겠다하는 포스팅 내용을 달아주시면, 해당 내용에 관한 포스팅도 해보도록 하겠습니다.


    감사합니다 !


    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.