RunService

사용되지 않는 항목 표시

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

만들 수 없음
서비스
복제되지 않음

RunService 은 경험이나 스크립트가 실행되는 컨텍스트를 관리하기 위한 시간 관리 방법과 이벤트를 포함합니다.IsClient(), IsServer(), IsStudio()와 같은 메서드는 어떤 컨텍스트 코드가 실행되고 있는지 결정하는 데 도움이 될 수 있습니다.이 메서드는 클라이언트와 서버 스크립트 모두에서 요구할 수 있는 ModuleScripts 유용합니다.또한, IsStudio() 는 Studio 내 테스트에 대한 특별한 동작을 추가하는 데 사용할 수 있습니다.

RunService 또한 코드가 Roblox의 프레임 바이 프레임 루프에 준수할 수 있도록 하는 이벤트, PreRender , PreAnimation , PreSimulation , PostSimulation , 및 Heartbeat 을 수용합니다.모든 경우에 사용할 적절한 이벤트를 선택하는 것이 중요하므로 작업 일정자를 읽어 정보에 입각한 결정을 내려야 합니다.

컨텍스트 테스트 결과

<th><code>클래스.RunService:IsStudio()|IsStudio</code></th>
<th><code>클래스.런서비스:IsClient()|IsClient</code></th>
<th><code>Class.RunService:IsServer()|IsServer 클래스</code></th>
<th><code>Class.RunService:IsEdit()|IsEdit</code></th>
<th><code>Class.RunService: 실행 중()|IsRunning</code></th>
<th><code>Class.RunService:IsRunMode()|IsRunMode</code></th>
</tr>
</thead>
<tbody>
<tr>
<td>라이브 플레이어</td><td><code>false</code> ></td><td><code>true</code> ></td><td><code>false</code> ></td>
<td />
<td />
<td />
</tr>
<tr>
<td>라이브 서버</td><td><code>false</code> ></td><td><code>false</code> ></td><td><code>true</code> ></td>
<td />
<td />
<td />
</tr>
<tr>
<td>편집 모드</td>
<td><code>참</code></td>
<td><code>참</code></td>
<td><code>참</code></td>
<td><code>참</code></td>
<td><code>거짓</code></td>
<td><code>거짓</code></td>
</tr>
<tr>
<td>공동 편집</td>
<td><code>참</code></td>
<td><code>참</code></td>
<td><code>거짓</code></td>
<td><code>참</code></td>
<td><code>거짓</code></td>
<td><code>거짓</code></td>
</tr>
<tr>
<td>실행 모드</td>
<td><code>참</code></td>
<td><code>참</code></td>
<td><code>참</code></td>
<td><code>거짓</code></td>
<td><code>참</code></td>
<td><code>참</code></td>
</tr>
<tr>
<td>플레이 모드(클라이언트)</td>
<td><code>참</code></td>
<td><code>참</code></td>
<td><code>거짓</code></td>
<td><code>거짓</code></td>
<td><code>참</code></td>
<td><code>거짓</code></td>
</tr>
<tr>
<td>플레이 모드(서버)</td>
<td><code>참</code></td>
<td><code>거짓</code></td>
<td><code>참</code></td>
<td><code>거짓</code></td>
<td><code>참</code></td>
<td><code>참</code></td>
</tr>
<tr>
<td>팀 테스트(플레이어)</td>
<td><code>참</code></td>
<td><code>참</code></td>
<td><code>거짓</code></td>
<td><code>거짓</code></td>
<td><code>참</code></td>
<td><code>거짓</code></td>
</tr>
<tr>
<td>팀 테스트(서버)</td>
<td><code>거짓</code></td>
<td><code>거짓</code></td>
<td><code>참</code></td>
<td><code>거짓</code></td>
<td><code>참</code></td>
<td><code>거짓</code></td>
</tr>
</tbody>
환경

요약

속성

메서드

  • BindToRenderStep(name : string,priority : number,function : function):()

    함수의 문자열 이름과 우선 순위가 제공되면, 이 메서드는 함수를 RunService.PreRender에 바인딩합니다.

  • 병렬 쓰기

    현재 환경이 클라이언트에서 실행되는지 여부를 반환합니다.

  • 플러그인 보안
    병렬 쓰기

    현재 환경이 Edit 모드인지 여부를 반환합니다.

  • 병렬 쓰기

    실행 버튼이 Studio에서 시뮬레이션을 실행하도록 누르었는지 여부를 반환합니다.

  • 경험이 현재 실행 중인지 여부를 반환합니다.

  • 병렬 쓰기

    현재 환경이 서버에서 실행되는지 여부를 반환합니다.

  • 병렬 쓰기

    현재 환경이 Studio에서 실행되는지 여부를 반환합니다.

  • Pause():()
    플러그인 보안

    실행 중인 경우 경험의 시뮬레이션을 일시 중지하고 물리와 스크립트를 일시 중단합니다.

  • Run():()
    플러그인 보안

    게임의 시뮬레이션을 실행하여 물리와 스크립트를 실행합니다.

  • Stop():()
    플러그인 보안

    실행 중인 경우 경험 시뮬레이션을 중지합니다.

  • RunService:BindToRenderStep()를 사용하여 렌더링 루프에 바인딩된 함수를 해제합니다.

이벤트

속성

ClientGitHash

읽기 전용
복제되지 않음
Roblox 스크립트 보안
병렬 읽기
복제되지 않음
플러그인 보안
병렬 읽기

메서드

BindToRenderStep

()

BindToRenderStep() 함수는 렌더링 단계 중 특정 시간에 호출할 사용자 지정 함수를 바인딩합니다.세 가지 주요 인수가 있습니다: name, priority, 그리고 호출할 내용은 function입니다.

클라이언트의 렌더링 프로세스와 연결되어 있기 때문에 BindToRenderStep()는 클라이언트에서만 호출할 수 있습니다.

이름

name 매개 변수는 바인딩의 레이블이며 바인딩이 더 이상 필요하지 않은 경우 RunService:UnbindFromRenderStep()와 함께 사용할 수 있습니다.


local RunService = game:GetService("RunService")
local function functionToBind() end
-- 위의 함수를 "tempBinding"이라는 바인딩에 바인딩하십시오
RunService:BindToRenderStep("tempBinding", 1, functionToBind)
-- tempBinding에 바인딩된 함수 해제 Unbind the function bound to "tempBinding"
RunService:UnbindFromRenderStep("tempBinding")
우선순위

바인딩의 priority 는 정수이며, 렌더링 단계에서 사용자 지정 함수를 호출할 시기를 결정합니다.이 숫자가 낮을수록 사용자 지정 함수가 더 빨리 호출됩니다.두 바인딩이 동일한 우선 순위를 가지는 경우 Roblox 엔진은 무작위로 먼저 실행할 바인딩을 선택합니다.기본 Roblox 제어 스크립트는 다음 특정 우선순위로 실행됩니다:

  • 플레이어 입력: 100
  • 카메라 제어: 200 편의를 위해; Enum.RenderPriority 열거형을 사용하여 바인딩에 설정할 정수 값을 결정할 수 있습니다.예를 들어, 기본 카메라 업데이트 바로 전에 바인딩을 만들려면 카메라 우선 순위 레벨에서 1를 뺍니다.

Enum.RenderPriority 를 사용할 때 원하는 열거형의 끝에 .Value 를 사용하는 것을 잊지 마십시오. RunService:BindToRenderStep() 열거형만 사용하면 작동하지 않습니다.


local RunService = game:GetService("RunService")
local function beforeCamera(delta)
-- 여기에 코드가 기본 Roblox 카메라 스크립트 전에 실행됩니다
end
RunService:BindToRenderStep("Before camera", Enum.RenderPriority.Camera.Value - 1, beforeCamera)
사용자 지정 함수 및 델타 시간

마지막 인수( function )는 호출할 사용자 지정 함수입니다.이 함수는 이전 렌더링 단계의 시작과 현재 렌더링 단계의 시작 사이에 지나간 시간을 보여주는 deltaTime라는 매개 변수를 하나 전달합니다.

모든 렌더링 업데이트는 렌더 단계의 코드가 완료될 때까지 대기합니다.BindToRenderStep()에서 호출되는 모든 코드가 신속하고 효율적으로 실행되도록 하십시오; 코드가 너무 오래 걸리면 경험 시각이 불규칙해집니다.

매개 변수

name: string

바인딩이 더 이상 필요하지 않은 경우 Unbind에 사용할 수 있는 바인딩 레이블.

기본값: ""
priority: number

바인딩의 우선 순위는 정수로; 렌더링 단계에서 사용자 지정 함수를 호출할 시기를 결정합니다.이 숫자가 낮을수록 사용자 지정 함수가 더 빨리 호출됩니다.두 바인딩이 동일한 우선 순위를 갖는 경우 Roblox 엔진은 무작위로 먼저 실행할 바인딩을 선택합니다.

기본값: ""
function: function

바인딩 중인 사용자 지정 함수.

기본값: ""

반환

()

코드 샘플

This code sample moves a GuiObject in a circle within its parent object using RunService's BindToRenderStep. It defines a parametric equation in a function to help with positioning the GuiObject.

To try this code out, put a ScreenGui in the StarterGui. Inside the ScreenGui, insert a Frame with a LocalScript. Paste this code into the LocalScript, then play the game. Watch the Frame travel counterclockwise within.

Frame Moving in Circle

local RunService = game:GetService("RunService")
-- How fast the frame ought to move
local SPEED = 2
local frame = script.Parent
frame.AnchorPoint = Vector2.new(0.5, 0.5)
-- A simple parametric equation of a circle
-- centered at (0.5, 0.5) with radius (0.5)
local function circle(t)
return 0.5 + math.cos(t) * 0.5, 0.5 + math.sin(t) * 0.5
end
-- Keep track of the current time
local currentTime = 0
local function onRenderStep(deltaTime)
-- Update the current time
currentTime = currentTime + deltaTime * SPEED
-- ...and the frame's position
local x, y = circle(currentTime)
frame.Position = UDim2.new(x, 0, y, 0)
end
-- This is just a visual effect, so use the "Last" priority
RunService:BindToRenderStep("FrameCircle", Enum.RenderPriority.Last.Value, onRenderStep)
--RunService.RenderStepped:Connect(onRenderStep) -- Also works, but not recommended

This example shows how to bind a simple function to the render step. All this function does is print how much time passed between the last render step and the current one. Note that this code will need to be in a LocalScript to run.

RunService Custom Function

local RunService = game:GetService("RunService")
local function checkDelta(deltaTime)
print("Time since last render step:", deltaTime)
end
RunService:BindToRenderStep("Check delta", Enum.RenderPriority.First.Value, checkDelta)

This example uses the RunService to bind and unbind a function named printHello. First, we bind the function to the RenderStep so that fires every step. Then, after we wait 5 seconds (wait(5)), we unbind the function.

Bind and Unbind a Function

local RunService = game:GetService("RunService")
-- Step 1: Declare the function and a name
local NAME = "Print Hello"
local function printHello()
print("Hello")
end
-- Step 2: Bind the function
RunService:BindToRenderStep(NAME, Enum.RenderPriority.First.Value, printHello)
-- Step 3: Unbind the function
RunService:UnbindFromRenderStep(NAME)

IsClient

병렬 쓰기

이 메서드를 호출한 코드가 클라이언트 컨텍스트에서 실행되는 경우(에서, 필요한 경우 클라이언트에서 >, 또는 에서 설정된 클라이언트와 함께 에서 실행됨) 이 메서드는 반환됩니다 .다른 모든 경우에서 이 메서드는 false 을 반환합니다.

이 메서드가 true를 반환하면 현재 환경이 RunService.PreRender 또는 Players.LocalPlayer와 같은 클라이언트 전용 기능에 액세스할 수 있습니다.


반환

현재 환경이 클라이언트를 실행하는지 여부.

IsEdit

플러그인 보안
병렬 쓰기

이 메서드는 현재 환경이 "편집" 모드인지 여부를 반환합니다(예: 경험이 실행되지 않을 때 Studio에서).

IsEdit() 는 시뮬레이션이 일시 중지된 경우를 제외하고 IsRunning() 의 반대를 반환하며, 이 경우 두 메서드 모두 false 을 반환합니다.


반환

현재 환경이 "편집" 모드인지 여부.

IsRunMode

병렬 쓰기

이 메서드는 실행 버튼이 Studio에서 시뮬레이션을 실행하도록 누르었는지 여부를 반환합니다.시뮬레이션이 true 버튼을 사용하여 일시 중지되면 계속해서 중지 버튼을 사용하여 중지되고, 중지 버튼을 사용하여 중지된 후에는 다시 false로 돌아갑니다.

Studio는 실행 버튼을 누를 때만 "실행" 모드로 들어가며, 플레이 버튼은 아닙니다.또한 시뮬레이션이 실행 버튼 대신 Run 버튼을 사용하여 시작되었는지 여부에 관계없이 이 메서드는 반환합니다.


반환

실행 버튼이 Studio에서 시뮬레이션을 실행하도록 누르었는지 여부

IsRunning

현재 경험이 실행되고 있는지 여부를 반환하여 시뮬레이션이 실행 또는 플레이 버튼을 사용하여 실행되었음을 의미합니다.

IsRunning() 는 시뮬레이션이 일시 중지된 경우를 제외하고 항상 IsEdit() 의 반대를 반환하며, 이 경우 두 메서드 모두 false 을 반환합니다.


반환

경험이 현재 실행 중인지 여부.

IsServer

병렬 쓰기

이 메서드는 현재 환경이 서버에서 실행되는지 여부를 반환합니다.이 메서드를 호출한 코드가 서버 컨텍스트에서 실행되고 있으면(예: 에서 로 설정되거나 또는 에서 필요한 경우), 이 메서드는 반환됩니다 .다른 모든 경우에서 이 메서드는 false 을 반환합니다.

이 함수가 true를 반환하면 현재 환경이 ServerStorage 또는 ServerScriptService와 같은 서버 전용 기능에 액세스할 수 있습니다.


반환

현재 환경이 서버에서 실행되는지 여부.

IsStudio

병렬 쓰기

이 메서드는 현재 환경이 Studio에서 실행되는지 여부를 반환합니다. Studio에서만 실행되어야 하는 코드를 래핑하는 데 사용할 수 있습니다.


반환

현재 환경이 Studio에서 실행되는지 여부.

Pause

()
플러그인 보안

이 메서드는 실행 중인 경우 경험의 시뮬레이션을 일시 중지하고 물리와 스크립트를 일시 중단합니다.시뮬레이션은 Run() 또는 Studio의 실행 버튼을 사용하여 시작할 수 있습니다; 시뮬레이션이 일시 중지되면 IsRunning()false 을 반환합니다.


반환

()

Run

()
플러그인 보안

이 메서드는 경험의 시뮬레이션(물리 및 스크립트)을 실행합니다.시뮬레이션이 실행되는 경우 IsRunning()true 를 반환합니다.그러나, 는 Studio의 실행 버튼을 사용하여 시뮬레이션을 시작했는지 여부에 따라 다음과 같이 반환합니다: 는 시뮬레이션이 Studio에서 실행 버튼을 사용하여 시작되었는지 여부에 따라 반환됩니다.


반환

()

Stop

()
플러그인 보안

이 메서드는 실행 중인 경우 경험의 시뮬레이션을 중지합니다.시뮬레이션이 중지되면 IsRunning()false 를 반환하고 IsEdit()true 을 반환합니다.

Studio의 정지 버튼과 달리, 이 메서드를 호출하면 시뮬레이션이 실행되기 전의 상태로 경험을 복원하지 않습니다.즉, 물리 시뮬레이션 및 스크립트에 의해 경험에 적용된 모든 변경 사항은 시뮬레이션이 종료된 후에도 유지됩니다.


반환

()

UnbindFromRenderStep

()

BindToRenderStep() 에 전송된 함수의 이름을 지정하면 이 메서드는 PreRender 동안 함수가 호출되지 않도록 해제합니다.더 이상 필요하지 않거나 더 이상 모든 단계를 실행할 필요가 없을 때 바인딩된 함수를 해제하는 데 사용됩니다.

지정된 이름에 바인딩된 함수가 없으면 이 메서드는 작업을 수행하지 않고 오류를 발생시키지 않고 계속됩니다.

매개 변수

name: string

함수 해제의 이름.

기본값: ""

반환

()

이벤트

Heartbeat

물리 시뮬레이션이 완료된 후 Heartbeat 이벤트가 모든 프레임에서 발생합니다.deltaTime 인수는 이전 프레임 이후 경과한 시간을 나타냅니다.

이 이벤트는 대부분의 스크립트가 실행될 때입니다.각 프레임의 끝에서 발생하며, 일정에 따라 실행되는 대기 스크립트(예: task 라이브러리와 일정이 예약된 스크립트)도 실행됩니다.Heartbeat는 건강 재생과 같은 핵심 게임 시스템을 업데이트하는 정기적인 작업에 일반적으로 사용됩니다.

이 단계를 따르면 엔진이 속성 업데이트 및 이벤트를 서버나 클라이언트에 보내 나중에 복제 수신 단계의 일부로 받습니다.

매개 변수

deltaTime: number

이전 프레임 이후 지난 시간(초).


PostSimulation

물리 시뮬레이션이 완료된 후 PostSimulation 이벤트가 모든 프레임에서 발생합니다.deltaTimeSim 인수는 현재 프레임이 물리 시뮬레이션을 밟은 시간을 나타내며, 물리 제한을 고려하지 않습니다.

이 이벤트는 시뮬레이션의 결과에 최종 조정을 하는 데 유용합니다. 이 단계 이후에 엔진은 Heartbeat 이벤트를 트리거합니다.

매개 변수

deltaTimeSim: number

물리 제한 없이 현재 프레임이 물리 시뮬레이션을 밟은 시간(초)입니다(물리 제한 없음). The time (in seconds) that the current frame has stepped the physics simulation, not accounting for physics throttling.


PreAnimation

물리 시뮬레이션 전에 모든 프레임에서 PreAnimation 이벤트가 발생하지만 렌더링 후에는 발생하지 않습니다.deltaTimeSim 인수는 현재 프레임이 스텝 애니메이션을 사용한 시간을 나타냅니다.

이 이벤트는 속도나 우선 순위와 같은 애니메이션 개체를 수정하는 데 유용합니다.PreAnimation 이벤트가 완료되면 엔진은 이 애니메이션을 실행하여 나중에 물리 시뮬레이션 중에 개체를 업데이트하는 데 사용될 공동 변환을 업데이트합니다.

애니메이션이 단계별로 수행되면 엔진은 PreSimulation 이벤트를 트리거합니다.

매개 변수

deltaTimeSim: number

현재 프레임에 스텝 애니메이션이 있는 시간(초)입니다.


PreRender

PreRender 이벤트(RenderStepped 의 대체)는 프레임이 렌더링되기 전에 모든 프레임을 발사합니다.deltaTimeRender 인수는 이전 프레임 이후 경과한 시간을 나타냅니다.

이 이벤트를 통해 플레이어의 화면에 그려지기 전에 코드를 실행하고 세계를 업데이트할 수 있습니다.이는 개체 위치 변경, 애니메이션 업데이트 또는 시각 효과 준비와 같은 마지막 순간 조정에 유용하지만, 엔진이 이 이벤트에서 실행되는 코드가 완료될 때까지 렌더링을 시작할 수 없기 때문에 신중하게 사용해야 합니다.

As PreRender 는 클라이언트 측이므로, 클라이언트 측에서만 사용할 수 있으며, LocalScript , ModuleScript 에서 필요한 클라이언트 LocalScript 또는 Script 에서 RunContext 으로 설정된 Enum.RunContext.Client 에서만 사용할 수 있습니다.

다음 PreRender 단계에서 시뮬레이션 단계는 PreAnimation 이벤트로 시작됩니다.

매개 변수

deltaTimeRender: number

이전 프레임 이후 지난 시간(초).


PreSimulation

PreSimulation 이벤트(Stepped의 대체)는 물리 시뮬레이션 전에 모든 프레임을 발사합니다.deltaTimeSim 인수는 현재 프레임이 물리 시뮬레이션을 수행할 시간을 나타내며, 물리 제한을 고려하지 않습니다.

이 이벤트는 시뮬레이션의 일부로 적용되기 직전에 속도나 힘과 같은 속성을 조정하는 데 유용합니다.그런 다음 시뮬레이션이 실행되며, 물리 해결기가 다른 엔진 시스템보다 더 높은 주파수로 실행되기 때문에 여러 번 실행될 수 있습니다.이 작업이 완료되면 PostSimulation 이벤트가 발생합니다.

매개 변수

deltaTimeSim: number

물리 제한 없이 현재 프레임이 물리 시뮬레이션을 수행할 시간(초)입니다. (물리 제한 없음) The time (in seconds) that the current frame will step the physics simulation, not accounting for physics throttling.


RenderStepped

프레임이 렌더링되기 전에 모든 프레임을 발사합니다.

마이그레이션 노트

이 이벤트는 새로운 작업에 사용해야 하는 PreRender로 대체되었습니다.

매개 변수

deltaTime: number

이전 프레임 이후 지난 시간(초).


Stepped

물리 시뮬레이션 전에 모든 프레임을 발사합니다.

마이그레이션 노트

이 이벤트는 새로운 작업에 사용해야 하는 PreSimulation로 대체되었습니다.

매개 변수

time: number

RunService가 실행되었던 기간(초).

deltaTime: number

이전 프레임 이후 지난 시간(초).