일정 시간 동안 코드 실행을 보장하거나 특정 작업 또는 사이클이 완료된 후 코드 실행을 지정하거나 코드를 지연하는 등의 경우 일정 코드 예약 코드가 유용합니다. task 라이브러리를 사용하여 Roblox의 작업
일반 메서드
다음은 코드 예약 메서드입니다. task . 메서드는 전역 스케쥴링 메서드, 예를 들어 wait() 를 사용하여 코드를 최적으로 실행하도록 해야 합니다.
다음 표에서는 유사한 전통 글로벌 메서드와 그들의 선호 적이고 더 최적화된 대안을 나열합니다.
| 전역 메서드 | 작업 메서드 | 추가 대체 메서드 | | :-------------------------------- | : | | wait(n)
작업.spawn
task.spawn()은 스레드 또는 함수를 사용하고 엔진의 스케줄러를 통해 즉시 재시작 합니다. 추가 인수는 스레드 또는 함수에 전달됩니다.
다음 코드 샘플은 반복 개체 집합을 처리하는 함수를 호출할 때 task.spawn()를 사용하는 방법을 보여줍니다.
local function playerAdded(player)
...
(yield)
end
for _, player in Players:GetPlayers() do
task.spawn(playerAdded, player)
end
작업 지연
task.defer()는 스레드 또는 함수를 가져와 엔진의 스케줄러와 함께 다음 중단 사이클에 대해 다시 시작할 때까지 지연시킵니다. 추가 인수는 스레드 또는 함수 지연에 전달됩니다.
이 메서드는 일반적으로 다음과 같은 동작을 원할 때 사용해야 합니다. task.spawn() 에 대해 즉시 실행되지 않는 스레드에 대해 스레드 실행을 위한 print() 문을 사용하는 것이 좋습니다. 다음 코드 샘플
task.defer(print, "A")print("B")--> B--> A
작업 지연
task.delay() 는 스레드 또는 함수를 사용하고 지정된 시간 내에 다시 시작하는 예정된 시간 단위의 다음 Heartbeat 단계에 대해 일정을 예약합니다. 스레드는 내장 오류 처리 및 다른 엔진 기능을 지원하는 구성 요
실제 지연 시간이 다를 수 있기 때문에 다음 코드 샘플에서는 현재 시간을 인수로 전달하여 계산할 수 있는 방법을 보여줍니다.
task.delay(2, function(scheduledTime)
print(os.clock() - scheduledTime) --> 2.038702
end, os.clock())
0의 지속 시간은 다음 단계에서 스레드나 함수를 재개하게 합니다.
작업 대기
task.wait() 는 지정된 기간(초)이 지나면 현재 스레드를 종료하고 다음 Heartbeat 단계에서 스레드를 재개합니다.
실제 생성 시간은 다를 수 있습니다. 다음 코드 샘플은 편의를 위해 이 메서드가 어떻게 반환되는지 보여줍니다.
실제 지연 시간이 다를 수 있기 때문에 다음 코드 샘플에서는 메서드 반환 값을 저장하여 실제 시간을 확인할 수 있습니다.
local elapsedTime = task.wait(2) -- 2초 동안 기다리십시오print(elapsedTime) --> 2.0792941
만료 시간이 지정되지 않으면 만료 시간은 기본적으로 0으로 지정되어 스레드가 다음 단계에서 자동으로 재개됩니다. 즉, task.wait()는 동작에서 RunService.Heartbeat와 동일합니다.