Unity/기초 예제

유니티 Invoke InvokeRepeating CancelInvoke 함수반복호출 간단한 예제 유니티 기초

최애뎡 2021. 5. 25. 20:55
728x90
반응형

이번 예제는 간단하게 3D Object인 Plane과 Sphere를 사용하였으며
Sphere는 Rigidbody가 적용되어있고 Prefab화 되어있습니다.
Ex_10 스크립트를 Ex_10_Invoke 오브젝트에 적용하였습니다.

 Invoke, InvokeRepeating, CancelInvoke란?!
----------------------------------------------------------------------------------------
Invoke
Invoke 함수를 이용하면 일정한 시간 지연 후에 함수의 호출을 예약할 수 있습니다.
이를 통해 시간에 감응하는 유용한 함수 호출 시스템을 구축할 수 있습니다.
Invoke 함수는 두 개의 매개변수가 있습니다.
호출하고 싶은 메소드의 이름에 해당하는 문자열과 초 단위로 표시되는 지연 시간의 길이입니다.
Invoke 함수를 사용할 때에는 매개변수가 없는 void형 타입의 함수를 사용해야 합니다.
Invoke 함수는 함수를 1회 호출할 때 유용합니다
----------------------------------------------------------------------------------------
InvokeRepeating
InvokeRepeating 함수를 이용하면 메소드를 반복 호출할 수 있습니다.
InvokeRepeating 함수는 3개의 매개변수가 존재하는데
첫째 둘째는 Invoke 함수와 동일하고 마지막 3번째 매개변수의 경우는
함수를 첫 호출 후 다음 호출 사이의 대기 시간을 의미합니다.
----------------------------------------------------------------------------------------
CancelInvoke
CancelInvoke 함수는 함수 호출을 중지하기 위해 사용합니다.
모든 InvokeRepeating 함수를 중지시키려면 CancelInvoke()을
특정 함수를 중지시키려면 CancelInvoke()의 괄호 안에 특정 함수의 이름을 적으면 됩니다.
----------------------------------------------------------------------------------------
그렇다면 이 함수를 어떻게 사용하였을지 일단 실행 화면 먼저 보도록 하겠습니다.

좌: Invoke, 우: InvokeRepeating

Invoke 함수와 InvokeRepeating 함수를 동시에 보실 수가 있습니다.
Invoke 함수를 통해 Sphere을 한번 생성하고
InvokeRepeating 함수를 통해 Sphere을 지속적으로 생성하는 모습입니다.
이를 코드로 보면

코드를 보시면
makeSphere_Invoke() 함수의 경우 Z 값을 난수로 두어 Sphere을 생성하고
makeSphere_InvokeRepeating() 함수의 경우도 Z 값을 난수로 두어 Sphere을 생성합니다.
다만 X 값을 다르게 하여 게임 뷰 상에서 보기 좋게 하였습니다.
Start() 함수를 보시면 Invoke 함수와 InvokeRepeating 함수를 보실 수가 있습니다.
Invoke 함수의 경우 makeSphere_Invoke 함수를 2초 뒤에 실행
InvokeRepeating 함수의 경우 makeSphere_InvokeRepeating 함수를
2초 뒤에 실행하고 그 뒤로 1초에 한 번씩 함수를 호출 하라

정도로 보시면 되겠습니다.

그리고 여 기 서 ! Instantiate의 매개변수 중 회전 값 부분을 보시면
transform.rotation과 Quaternion.identity을 보셨을 텐데요!
여기서 Quaternion.identity은 생소하실 수도 있겠습니다.
-------------------------------------------------------------------------------------------
수학에서 X에 Y를 곱했을 때 결과가 X라면 Y를 identity라고 부릅니다.
일반적인 수학에서 identity는 1입니다. 
Quaternion은 물체의 회전을 표현하는데 사용되는데 
Quaternion X 와 Quaternion Y를 곱했을 때 나오는 값이 X라면 Y는 identity입니다. 
어쨌든 간에, 유니티에서 보통 사용하는 목적은 회전을 기초 값으로 초기화시키는 것입니다
ex)
transform.rotation = Quaternion.identity
라고 하면 모든 축의 회전 값이 0으로 설정됩니다. 
identity 가 의미하는 회전 값이 0이라서요. 
Quaternion의 곱은 두 회전을 의미하는데, 
X축으로 30도 와 Y 축으로 30도를 돌리면 결과는 그 두 회전을 합친 Quaternion 이 되지만, 
어느 회전이든 identify를 곱하면 곱하기 전의 값과 같으니까요. 
https://kin.naver.com/qna/detail.nhn?d1id=1&dirId=10403&docId=301537863&qb=UXVhdGVybmlvbi5pZGVudGl0eQ==&enc=utf8§ion=kin&rank=1&search_sort=0&spq=0&pid=Tzx1swpySEsssblc3I0ssssssWC-358601&sid=ug7IJPGEwglMjKhkY0%2BHSg%3D%3D
-> 네이버에 지식인에 멋진 설명이 있어서 가져왔습니댜!

-------------------------------------------------------------------------------------------
아주 기초적인 내용이지만 게임을 제작할 때 기본적으로 사용하게 되는
 좋은 함수들이니 잘 알아두면 좋을 것 같습니다!!

위 내용은

https://unity3d.com/kr/learn/tutorials/topics/scripting/invoke?playlist=17117

 

Invoke - Unity Learn

The Invoke functions allow you to schedule method calls to occur at a later time. In this video you will learn how to use the Invoke, InvokeRepeating, and CancelInvoke functions in your Unity scripts. This tutorial is included in the Beginner Scripting pro

learn.unity.com

을 참고하였습니다.

반응형