스크립트 유형 및 위치

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


많은 개발자에게 Roblox 스크립팅에 적응하는 기본적인 도전은 파일 위치와 Script.RunContext 속성의 중요성입니다. 스크립트 유형, Explorer 내 위치 및 실행 맥락에 따라 스크립트의 동작이 매우 다를 수 있습니다. 특정 메서드 호출이 실패할 수 있고, 게임의 객체에 접근할 수 없거나, 스크립트가 아예 실행되지 않을 수 있습니다.

이러한 복잡성의 이유는 Roblox 게임이 기본적으로 멀티플레이어이기 때문입니다. 스크립트는 서버에서만 실행되거나 클라이언트에서만 실행되거나 둘 다 공유될 수 있는 능력이 필요합니다. 시간이 지나면서 Roblox 플랫폼의 발전은 상황을 더욱 복잡하게 만들었습니다.

스크립트 유형

Roblox에는 세 가지 유형의 스크립트가 있습니다:

  • Script - 위치 및 Script.RunContext 속성에 따라 서버 또는 클라이언트에서 실행되는 코드입니다.
  • LocalScript - 클라이언트에서만 실행되는 코드입니다. 실행 맥락이 없습니다.
  • ModuleScript - 다른 스크립트에서 재사용할 수 있는 코드입니다. 실행 맥락이 없습니다.

Script를 생성하면 기본 실행 맥락이 Legacy로 설정되며, 이는 a) 서버 측 스크립트이며 b) Workspace 또는 ServerScriptService와 같은 서버 컨테이너에 있을 경우에만 실행된다는 것을 의미합니다.

  • 스크립트의 실행 맥락을 Server로 변경하면 이제 ReplicatedStorage에서도 실행할 수 있지만, 이는 권장되지 않습니다. 해당 위치의 내용은 클라이언트에 복제되므로 서버 측 스크립트에는 부적절한 위치입니다.
  • 스크립트의 실행 맥락을 Client로 변경하면 ReplicatedStorage에서 실행할 수 있습니다. 또한 StarterCharacterScriptsStarterPlayerScripts에서도 실행할 수 있습니다. 그러나 스타터 컨테이너는 클라이언트로 복사되므로 원본 스크립트 복사본이 모두 실행되어 원치 않는 상황이 발생합니다.

스크립트의 실행 맥락을 변경하려면 Explorer에서 스크립트를 선택하고 Properties 창에서 값을 변경하세요.

Script에 대한 RunContext 속성 표시.

권장 사항

  • 클라이언트 스크립트를 ReplicatedStorageRunContextClient인 상태로, 클라이언트 전용 ModuleScripts와 함께 넣으세요.

    Studio에서 디버깅할 때 Output 창에서 줄을 클릭하고 런타임에 스크립트가 복사된 임시 위치인 Players.YourName.PlayerScripts.YourScript 대신 스크립트의 안정적인 위치인 ReplicatedStorage.YourScript로 이동할 수 있습니다.

  • 서버 스크립트를 ServerScriptServiceRunContextServer인 상태로, 서버 전용 ModuleScripts와 함께 넣으세요.

  • 서버와 클라이언트 스크립트 간에 코드를 공유하려면 ReplicatedStorageModuleScripts를 사용하세요.

  • 모델패키지 내에 스크립트를 배치할 경우, 각 스크립트에 대한 RunContext를 지정하여 실행 방식을 명확히 하세요. 이 속성을 명시적으로 설정하면 다양한 위치에서 모델과 패키지가 제대로 작동할 가능성이 높아집니다.

  • ReplicatedFirst에 클라이언트 스크립트(로딩 스크립트와 같은)를 최소한으로 배치하고 RunContextClient로 설정하세요. 더 자세한 내용은 복제 순서를 참조하세요.

  • StarterCharacterScripts, StarterPlayerScripts, StarterGui, StarterPack에서 LocalScripts를 사용하세요.

스크립트 위치

LocationDescription
Workspace게임의 3D 세계를 나타냅니다. 이 위치는 객체에 직접 연결되어 그 동작을 제어하는 서버 스크립트에 적합합니다.
ReplicatedFirst클라이언트에 가장 먼저 복제되는 객체를 포함합니다. 이 위치는 로딩 화면을 표시하는 데 필요한 최소한의 객체와 클라이언트 스크립트에 이상적입니다.
ReplicatedStorage클라이언트와 서버 모두에 복제되는 객체를 포함합니다. 이 위치는 서버와 클라이언트 모두에서 사용하고자 하는 ModuleScripts에 적합합니다. LocalScripts는 이 위치에서 실행되지 않지만, RunContextClientScripts는 실행됩니다.
ServerScriptService서버 스크립트를 포함합니다. 이 위치는 게임 로직 및 클라우드 스토리지와 같은 서버 측 기능이나 객체에 접근해야 하는 스크립트에 적합합니다.
ServerStorage서버 측 객체를 포함합니다. 이 위치는 게임에 참여할 때 클라이언트에 즉시 복제될 필요가 없는 큰 객체에 적합합니다. 이 위치에서 스크립트는 실행되지 않지만, 서버 측 ModuleScripts를 여기에 저장할 수 있습니다.
StarterPlayerStarterCharacterScripts캐릭터가 생성될 때 실행되는 LocalScripts를 포함합니다.
StarterPlayerStarterPlayerScripts플레이어가 게임에 참여할 때 실행되는 일반적인 LocalScripts를 포함합니다.
StarterGui클라이언트가 게임을 로드할 때 표시하는 GUI 요소를 포함합니다. LocalScripts는 이 위치에서 실행될 수 있습니다. 이 위치는 버튼, 메뉴 및 팝업을 추가하는 등 게임의 사용자 인터페이스를 수정하는 스크립트에 적합합니다.
StarterPack일반적으로 Tools만 포함되지만, 플레이어 배낭을 설정하기 위한 LocalScripts도 포함할 수 있습니다.

이 이미지는 Explorer 창 위치에서 클라이언트 스크립트를 포함할 수 있는 locations를 보여줍니다. 기억하세요, ReplicatedFirstReplicatedStorageScriptsRunContextClient인 상태로 포함될 수 있지만, Starter[] 컨테이너는 LocalScripts를 사용해야 합니다.

클라이언트에서 실행되는 스크립트 위치를 보여주는 다이어그램.

예제 프로젝트 구조

Plant 참조 프로젝트는 대규모 복잡한 게임에서 코드를 어떻게 구성할 수 있는지를 보여줍니다.

특히 눈에 띄는 점은 재사용 가능한 ModuleScripts로 대다수의 코드를 ReplicatedStorageServerStorage에 저장한다는 것입니다.

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