작업 스케줄러

*이 콘텐츠는 AI(베타)를 사용해 번역되었으며, 오류가 있을 수 있습니다. 이 페이지를 영어로 보려면 여기를 클릭하세요.

작업 스케줄러는 게임이 실행되는 동안 매 프레임 수행되는 작업을 조정하며, 게임이 일시 정지되어 있더라도 마찬가지입니다. 이러한 작업에는 플레이어 입력 감지, 캐릭터 애니메이션, 물리 시뮬레이션 업데이트 및 task.wait() 상태에서 스크립트를 재개하는 것이 포함됩니다.

여러 작업이 실행될 수 있지만, 작업 스케줄러는 다음과 같은 상황에서 과부하가 걸릴 수 있습니다:

  • 사용자 정의 캐릭터 리그 또는 입력 체계 사용.
  • 직접 부품을 애니메이션하는 경우(Animator 사용하지 않음).
  • 정밀한 물리에 과도하게 의존하는 경우.
  • 정기적으로 객체를 복제하는 경우.

RunService

프레임별 작업을 추가하는 가장 직접적인 방법은 RunService의 다음 구성원을 통해서입니다:

스케줄러 우선 순위

작업 스케줄러는 작업을 다음과 같은 순서로 분류하고 완료합니다. 일부 작업은 프레임 내에서 작업을 수행하지 않거나 다른 작업은 여러 번 실행될 수 있습니다.

* RunService.Heartbeat 동안의 스크립트 실행은 게임의 Workspace.SignalBehavior 설정에 따라 다릅니다. 지연 이벤트를 참조하세요.

모범 사례

효율성을 염두에 두고 성능 높은 게임을 만들기 위해 다음 사항에 유의하세요:

  • 절대적으로 필요하지 않은 한 렌더 단계에 함수를 연결/바인드하지 마세요. 입력 이후 및 렌더링 이전에 수행해야 하는 작업만 이렇게 수행해야 하며, 예를 들어 카메라 이동이 있습니다. 순서에 대한 엄격한 제어가 필요하다면 BindToRenderStep()을 사용하고 PreRender는 사용하지 마세요.

  • 물리적 상태를 주의 깊게 관리하세요. PreSimulation은 물리학 이전에 발생하며, PostSimulation은 물리학 후에 발생합니다. 따라서 물리 상태에 영향을 미치는 게임 플레이 로직은 PreSimulation에서 수행해야 하며, 예를 들어 부품의 Velocity를 설정하는 경우가 이에 해당합니다. 반대로 물리 상태에 의존하거나 반응하는 게임 플레이 로직은 PostSimulation에서 처리해야 하며, 예를 들어 정의된 영역에 들어갈 때를 감지하기 위해 부품의 Position을 읽는 것이 이에 해당합니다.

  • Motor6D 변환 변경은 PreSimulation 이벤트에서 수행해야 합니다. 그렇지 않으면 Animators가 다음 프레임에서 변경 사항을 덮어쓰게 됩니다. Animator가 없더라도, PreSimulationMotor6D.Transform가 부품 위치에 적용되기 전에 마지막으로 호출되는 Luau 이벤트입니다.

©2026 Roblox Corporation. Roblox 및 Roblox 로고, 'Powering Imagination'은 미국 및 기타 국가 내 당사의 등록 및 미등록 상표입니다.