에디터 타이머 틱 등록 비동기 방식으로 루프 돌렸을때 꼬이는것 같습니다.
페이지 정보
본문
순서대로
1번 : AA1 엔터
2번 : BB2 엔터
3번 : CC3 엔터
로 적용하여 타이머 등록을 하고 메모장에 테스트를 해봤는데 사진과 같이 스크립트에 텍스트 입력이 완료되기전에 다음 타이머가 실행되는게 보입니다..
어떤식으로 만들어야 순차적으로 딱딱 맞게 할 수 있는건가요?
그리고 액션 이동 및 액션 되돌아가기를 사용 안하고, 타이머 틱 등록만 하면 스크립트 실행 버튼을 누를 시,
설정한 실행 간격마다 반복되서 실행되는게 아니라 최초 1번만 실행 후 스크립트가 완료되었다고 아웃풋에 나옵니다.
타이머를 반복으로 사용하려면 액션 이동이나 액션 되돌아가기를 사용하는 방법 밖엔 없는건가요?
액션이동이나 액션 되돌아가기를 사용해서 타이머틱을 루프로 돌리면 아웃풋에 스케쥴러에 이미 추가되어 있다고 출력되는게 정상 인가요??
답변 부탁드립니다.
- 이전글멀티 이미지 매치 문의 20.07.27
- 다음글다중처리 매치옵션문의 20.07.26
댓글목록
엔지엠소프트웨어님의 댓글
엔지엠소프트웨어 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 작성일 Date
음~~~ 설명이... 복잡하고 내용이 긴데요.
우선, 타이머는 틱에 설정한 시간마다 반복합니다. 그래서 꼬일리가 없는데요.
문제는 윈도우가 스레드로 처리하는데 한계가 있다는 것입니다. 그래서 일반적으로 하나의 타이머를 두고 사용하는게 안전합니다.
아무튼, 위의 문제는 타이머 틱이 등록된 상태에서 되돌아가기를 하면 이미 등록된 타이머가 무시되기에 문제가 되는 방법입니다.
모든 스레드는 매인에서 파생되기 때문에 매인이 멈추면 안됩니다. 따라서, 액션 이동을 빼고 지연을 999999999와 같이 최대로 설정하세요.
그러면 동기화되면서 매인 스크립트가 중지되지 않을겁니다.
엔지엠소프트웨어님의 댓글
엔지엠소프트웨어 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 작성일 Date
추가로 타이머의 스레드는 윈도우의 스레드풀에 할당됩니다. 이는 다른 프로세스의 우선순위에 영향을 받는다은 뜻입니다.
이런 우선순위는 윈도우가 자동으로 판단하여 항상 갱신됩니다. 그렇기 때문에 어느 순간 우선순위에 밀리면, 다른 작업이 먼저 수행될 수 있습니다.
완벽하게 해당 시점에 처리되길 원한다면 1프로세스에 1스레드로 처리하는게 좋습니다.
1프로세스에 1스레드란 플레이어 하나에 스크립트 하나만 실행시킨다는 뜻입니다.