Notice
Recent Posts
Recent Comments
Link
12-26 11:26
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

킹머핀의 제작 일지

시스템 Wait 액션 사용 시 주의해야 할 점들 본문

Construct 3

시스템 Wait 액션 사용 시 주의해야 할 점들

KingMUffin 2020. 12. 27. 18:57
 

How to use the System 'Wait' action ★★★★★

The Wait action in the System object waits a number of seconds before running the next action. The Wait for signal action works very similarly, but instead of a...

www.construct.net

 

반복문에서

GMS2에서 알람을 번번히 초기화 초기화 하고 있을 때, Construct 3는 'Wait 액션'을 사용합니다. 마치 IEnumerator yield return new WaitforSeconds() 함수와 같이 말이죠.

하지만 조금은 다릅니다. 저 튜토리얼에 따르면, 반복문 안에서 Wait을 사용할 때 의도와 다르게 작동할 수 있다는 점을 주의하라고 합니다. 왜냐하면 반복문 안의 코드가 끝나면 다음 반복을 실행하는 방식이 아니라, Wait이 실행되면 바로 다음 반복문을 미리 실행하기 때문입니다.

그래서 만일 10번 반복하는 조건에서 1초 기다렸다가 소리를 재생한다면, 1초마다 소리가 한 번씩 나지 않습니다. 1초 뒤 10번의 소리가 동시에 재생합니다. 고막이 터지겠죠?

그래서 매 초마다 실행되도록 하려면, 루프 인덱스를 이용하라고 합니다. 반복이 거의 동시에 이루지는 셈이므로, 원하는 시간에 반복한 횟수를 곱하면 같은 간격으로 순서대로 실행할 수 있습니다.

 

Using Wait in loops ★★★★★

Although this can be found in the fabulous manual, there are topics about it popping out in the forums from time to time. This tutorial will show how to use the...

www.construct.net

위 두 출처는 Construct 2 튜토리얼이지만 Construct 3에도 해당됩니다. (직접 해봤어요)

횟수가 정해지지 않은 반복 수행이라면(예를 들면, 총알 발사) 'Every seconds' 이벤트가 있습니다!

 

함수에서

Wait 액션은 이것을 실행한 이벤트의 기능을 종료한다. 정확히 말하자면, 컴퓨터가 이벤트를 빠르게 처리하기 때문에 Wait 액션이 완수되기 전에 이벤트가 먼저 종료된다. 그래서 반복문도 바로 끝난다. 그리고 함수에서는 인수를 사용할 수 없게 된다고 맨 위의 출처에서 설명했는데..

역시 직접 확인해보는게 좋을 것 같아서 시도해보았더니 Construct 3에서는 Wait을 사용해도 인수를 사용할 수 있다. 수와 문자열 파라미터를 추가해 테스트해보았고, bool 형식은 안 봐도 비디오라서(귀찮아서) 안 해봤다. (20.4.12 추가: 이런 글이 있었다)

추가로, 함수를 추가할 때 비동기식 여부를 선택할 수 있는데, 'Wait for previous actions to complete 액션'(이전에 실행한 액션이 끝날 때까지 기다림)과 함께 사용할 수 있다. 함수 내에서가 아니라, 함수를 호출한 다음에 말이다.

출처 : blog.metafor.kr/164

 

0초 기다리기

Wait 액션을 0초로 설정하면 해당 틱(프레임)에서 이벤트 시트가 모든 명령을 수행한 이후에 다음 액션을 실행합니다. 이는 반복문 안에서도 동일하게 작동합니다. 만일 10번 반복하는 조건에서 0초 기다렸다가 소리를 재생한다면, 이벤트 시트의 마지막 명령 이후에 고막이 터지겠죠?

엇, 그러면 0초 Wait 액션을 중첩해서 사용하면 더 세밀하게 액션 실행 순서를 조절할 수 있는 걸까요?! 직접 해보니 맞습니다. 하지만 다음 프레임으로 넘어가는 것으로 보입니다. 아쉽네요. &