기본 콘텐츠로 건너뛰기

코루틴과 인보크함수 - Coroutine and Invoke Functions

코루틴과 인보크함수


코루틴과 인보크


    게임을 만들다 보면 혹은 다른 프로그램을 만들다 보면 일정 간격 혹은 지정된 시간마다
    반복해야 하는 함수들이 있다 코루틴과 인보크 함수는 이런 일들을 간편하게
 처리할수있게 해준다

1.인보크 함수


Test 라는 스크립트를 만들고 그 안에 InvokeTest 라는 함수를 만들었다.
InvokeTest가 하는 일은 콘솔 창에 InvokeTest : 시간 을 출력해준다.
그리고 Start 함수에서 Invoke("InvokeTest", 1); 을 입력했다.
이 문장의 뜻은 InvokeTest 라는 이름의 함수를 1초 후에 실행하라 이다.




실제로 코드를 넣고 실행하면 1초 후 위와 같은 문장이 콘솔창에 출력된다.



만약 인보크함수를 실행했는데 취소하고 싶다면 아래와 같은 함수를 사용하면
모든 인보크가 취소 된다


만약 모든 인보크가 아니라 특정한 함수만 취소하고 싶다면


이처럼 인보크함수를 호출할때 처럼 해당 함수의 이름을 넣어주면
해당 함수면 취소가 된다.



만약 해당 함수를 일정 시간마다 반복하고 싶다면
 InvokeRepeating 함수를 사용하면 된다.


이 함수의 인수는 InvokeRepeating("실행할 함수명", 몇초 후 부터, 몇초 마다); 이다
예를 들어 InvokeRepeating("InvokeTest", 3, 1); 이렇게 적었다면
InvokeTest 함수를 3초 후 부터 1초마다 반복하라 가 된다.

이 함수도 위에서 설명한 CancelInvoke함수로 취소가 가능하다.


2. 코루틴

코루틴은 처음보면 조금 난해할수 있다. 하지만
위에서 배운 인보크와 크게 다를것이 없다.


위 코드를 보면 IEnumerator CoroutineTest() 라는 함수가 있다.
이는 우리가 평소에 쓰는 함수와 완전히 같지만 반환형만 조금 다른것 뿐이다.

위 함수를 실행하면 콘솔창에 "CoroutineTest : 시간" 을 2번 출력하는데
중간에 yield return new WaitForSeconds(1); 이라는 문장이 있다.
이 문장의 뜻은 1초 동안 Update를 실행하다 돌아오라는 뜻이다.
따라서 실행하면 다음과 같은 결과가 나온다.


첫 문장이 나오고 1초 후 다음 문장이 나온다.

코루틴은 StartCoroutine(함수이름()); 으로 실행을 할수 있다.




코루틴으로도 반복하는 작업을 할 수 있다.


이런식으로 써 주면 yield return 으로 밖으로 나갔다 1초 후 다시 돌아오고
반복문 때문에 다시 반복하게 된다.


위처럼 1초마다 출력이 되는걸 볼 수 있다.




코루틴은 인보크와 다르게 반복할 시간을 중간에 바꿀 수 있다.


이처럼 중간에 기다리는 시간을 바꾸는게 가능하다.






댓글

댓글 쓰기

이 블로그의 인기 게시물

칼리리눅스 사용자권한 명령어 - Kali linux User Permission Commands

  사용자권한 (기본) 리눅스 사용자 계정 은 특정 개인이나 서비스에 자원을 제공한다. 사용자는 비밀번호로 로그인해서 리눅스 시스템의 특정 자원을 요청하는데 파일 쓰기 권한 이나 인 터넷 브라우징 같은 것이 그러하다. 사용자들은 다른 사용자에게 속한 파일을 볼 수 없도록 되어 있는데, 마찬가지의 논리로 다른 사용자들이 자기의 것을 볼 수없도록 보증 하는 셈이다. 사람이 비밀번호로 로그인하여 시스템에 접근하는 전통적인 사용자 계정 이외에, 리눅스 시스템은 소프트웨어에도 사용자 권한을 부여한다 . 해당 소프트웨어는 업무를 수행하기 위하여 시스템 자원을 쓸 수 있지만 다른 사용자의 개인 파일을 읽을 수는 없다. 리눅스 시스템에서 모든 것을 루트 사용자 권한으로 실행하면 의도치 않게 시스템에 피해를 주거나 지나치게 많은 권한을 주기도 하므로 일상적인 명령은 특별한 권한 없는 일반 사용자 계정 으로 처리하도록 추천한다. adduser 기본적으로 Kali 에서는 특별한 권한이 있는 루트 계정 만 제공한다. 많은 보안 툴이 루트 권한으로 실행되어야 하지만 일상적으로 변다른 권한이 없는 계정을 사용함으로써 잠재적으로 시스템에 문제를 일으키지 않도록 하는 것이 좋다. 루트 계정은 리눅스에 무슨 일이든, 심지어 모든 파일을 망가뜨릴 수도 있음을 기억하자 . Kali 시스템에 새로운 사용자 gonggoo를 추가하려면 adduser 명령을 사용하자 위 사진에서 볼 수 있듯이 시스템에 사용자를 추가할 때 gonggoo 그룹이 만들어지고 , 새로운 사용자가 이 그 룹에 추가 되며, 사용자를 위한 홈 디렉터리가 만들어지고, 시스템에 사용자 비밀번호 와 이름 을 입력 받는다. sudo sudo 는  ( Substitute User Do)  의 줄임말로 일반 사용자로서 시스템 보안 과 관련된 프로그램을 수행할 수 있도록 하는 명령어이다.  예 adduser 입력시, 이러한 문구가 뜬다 앞에 Sudo 를 붙여서 관리자 권한 으로 수행시키면 해결된다...

칼리리눅스 기본 명령어 'cd' - Kali Linux command 'cd'

  cd (기본) 다른 디렉터리로 옮겨 가려면 cd 디렉터리 형식으로 입력하는데, 여기서 새로운 디렉터리는 절대적인 경로를 쓰거나 현재의 위치로부터 상대적인 경로로 나타낸다. 절대 경로 란 루트 디렉터리(/)로부터 해당 파일까지의 경로를 뜻한다. 예를 들어  Desktop 이란 디렉터리로 이동하려면 Desktop 으로 가는 절대 경로를 cd /root/desktop 과 같이 입력하여 어디에서든 루트 사용자의 Desktop 으로 갈 수 있다. 만일 지금 (root의 홈 디렉터리인)/ root 에 있다면 (현재 위치에서 상대적으로) Desktop 까지의 상대 경로를 따라 cd Desktop 과 같이 입력하여 이동할 수도 있다. cd 명령을 하면 파일 시스템에서 한 단계 아래로 내려간다. 예 먼저 바탕화면에서 (Desktop)   폴더  한 개를 생성하자 Create Folder 를 누르고 폴더 이름은 " Im here "로 정하자 이제 이 폴더의 위치는 /root/Desktop/ 안에 있다 이제 터미널을 통해 내가 방금 만든 파일에 접근할 예정이다 먼저 ls 를 입력해서 현재 root 디렉터리 에 있는 파일을 보자 여기서 ls 의 명령어를 모른다면 먼저 배우고 오자- ls명령어 배우기 cd Desktop 을 입력하면, 자신의 현재 위치가 root 디렉터리 에서 Desktop 으로 바뀐걸 볼 수 있다 이제 ls 를 입력하면 아까전 만든 Im here 폴더가 코앞에 있는것을 볼 수 있다 그렇다면 이 폴더 내부로 접근해보자 아까와 같이 cd 접근할 폴더명 형식으로 입력하는데, 폴더 이름 Im here 이 아닌 Im\ here 을 입력하였다 이에 대한 이유는 띄어 쓰기는 앞에 \ 을 붙여서 표현하기 때문이다 위의 과정을 모두 생략하고, cd Desktop/Im\ here 으로도  Im here 폴더에 접근이 가능하다 이제 Im here 폴더에 접근까지 했으니, cd 를 입력해서 파일시스템에서 한단계로 내려가보자 즉, ro...

칼리리눅스 기본 명령어 'man' - Kali Linux command 'man'

  man (기본) 명령어 자체는 물론 옵션과 매개변수에 대해 더 알고 싶을 때 man <명령어>를 입력하여(메뉴얼 페이지라고 불리는)문서를 참조할 수 있다. 예를 들어 ls 명령에 대해 자세히 알고 싶을 때 man ls라고 입력하면 된다. man ls 를 입력하자 리눅스 메뉴얼 페이지 를 볼 수 있다 이 메뉴얼 페이지는 (조금 익숙해 보이지 않을 수도 있지만) ls 명령의 쓰임새 , 설명 , 그리고 사용 가능한 옵션 을 포함하여 쓸만한 정보 를 전달한다. 이 설명 첫번째 섹션에서 보듯이 ls 명령은 기본적으로 현재의 작업 디렉터리에 있는 모든 파일을 망라하지만, ls 를 특정 파일 정보를 가져오도록 사용할 수도 있다. 예를 들어 메뉴얼에 따라 ls 명령에 -a 옵션 을 붙이면 아래의 사진과 같이 (기본 ls 명령으로는 보이지 않는) 숨겨진 디렉터리 를 포함한 모든 파일을 볼 수 있다. ls -a 를 입력한 모습 여기서 볼 수 있듯이 루트 디렉터리에는 몇 개의 감춰진 디렉터리 가 있고 이름에 모두 점(.) 문자가 달려있다. (앞으로의 모의해킹 실습때, 이처럼 숨겨진 디렉터리가 어떻게 시스템을 위험에 노출시키는지 확인해볼 예정이다.) 또한 .과 .. 항목도 볼 수 있는데 각각 현재의 디렉터리 와 그 상위 디렉터리 를 뜻 한다.