많은 개발자에게 Roblox 스크립팅에 적응하는 근본적인 도전은 파일 위치와 Script.RunContext 속성의 중요성입니다.스크립트 입력, 탐색기의 위치 및 런타임 컨텍스트에 따라 스크립트는 매우 다르게 동작할 수 있습니다.특정 메서드 호출이 실패할 수 있고, 경험의 개체에 액세스할 수 없거나 스크립트가 전체실행되지 않을 수 있습니다.
이 복잡성의 이유는 Roblox 경험이 기본적으로 멀티플레이어이기 때문입니다.스크립트는 서버에서만 실행하거나, 클라이언트에서만 실행하거나, 둘 모두에서 공유할 수 있는 기능이 필요합니다.Roblox 플랫폼의 시간에 따른 진화는 상황을 더욱 복잡하게 만들었습니다.
스크립트 유형
Roblox에는 3가지 종류의 스크립트가 있습니다.
- Script - 위치와 Script.RunContext 속성에 따라 서버나 클라이언트에서 실행되는 코드.
- LocalScript - 클라이언트에서만 실행되는 코드. 실행 컨텍스트가 없음
- ModuleScript - 다른 스크립트에서 재사용할 수 있는 코드. 실행 컨텍스트가 없습니다.
를 생성할 때, 기본 실행 컨텍스트는 입니다, 즉 그것이 a) 서버 사이드 스크립트이고 b) 서버 컨테이너에만 실행되는 경우, 예를 들어 또는 입니다.
- 스크립트의 실행 컨텍스트를 Server로 변경하면 이제 ReplicatedStorage에서도 실행할 수 있지만 권장되지 않습니다.해당 위치의 콘텐츠가 클라이언트에 복제되므로 서버 사이드 스크립트에 좋지 않은 위치입니다.
- 스크립트의 실행 컨텍스트를 Client로 변경하면 ReplicatedStorage에서 실행할 수 있습니다.또한 StarterCharacterScripts 및 StarterPlayerScripts에서 실행할 수 있습니다.그러나 스타터 컨테이너는 클라이언트에 복사되므로 원래 스크립트 와 가 실행되어 원하지 않습니다.
스크립트 실행 컨텍스트를 변경하려면 탐색기에서 선택하고 속성 창의 값을 변경하십시오.

추천
및 값을 사용하여 스크립트 실행 방식의 모호성을 제거하고 프로젝트를 구성하는 데 도움이 될 수 있습니다.기본값이 아닌 RunContext 값에 대한 최고의 사용 사례는 다음과 같습니다.
- 클라이언트 스크립트를 실행하려는 ReplicatedStorage 또는 ReplicatedFirst 에서.
서버와 클라이언트 스크립트 간에 코드를 공유하려면 ModuleScripts 에서 ReplicatedStorage 를 사용하십시오.
사용 LocalScripts 에서 StarterCharacterScripts , StarterPlayerScripts , StarterGui , 그리고 StarterPack .
스크립트 위치
위치 | 설명 :--- | :--- 작업 공간 | 게임 세계를 나타냅니다.이 위치는 개체에 직접 연결하여 동작을 제어하는 서버 스크립트에 잘 작동합니다.ReplicatedFirst | 다른 것보다 먼저 클라이언트에 복제하는 개체를 포함합니다.이 위치는 로딩 화면을 표시하는 데 필요한 절대적인 최소 집합의 개체와 클라이언트 스크립트에 적합합니다.ReplicatedStorage | 클라이언트와 서버에 모두 복제되는 개체를 포함합니다.이 위치는 서버와 클라이언트 모두에서 사용하려는 Class.ModuleScript\|ModuleScripts에 이상적입니다.Class.LocalScript\|LocalScripts 이 위치에서 실행하지 않지만 Class.Script\|Scripts 실행 컨텍스트가 Client 인 경우 실행합니다.ServerScriptService | 서버 스크립트를 포함합니다.이 위치는 게임 논리 및 클라우드 저장소와 같은 서버 측 기능 또는 개체에 액세스해야 하는 스크립트에 적합합니다.ServerStorage | 서버 측 개체를 포함합니다.이 위치는 경험에 참여할 때 즉시 클라이언트에 복제할 필요가 없는 큰 개체에 적합합니다.스크립트는 이 위치에서 실행되지 않지만 서버 측에서 Class.ModuleScript\|ModuleScripts스타터플레이어.스타터캐릭터스크립트 | 캐릭터가 생성될 때 실행하는 Class.LocalScript\|LocalScripts를 포함합니다.StarterPlayer.StarterPlayerScripts | 플레이어가 경험에 참여할 때 실행되는 일반 목적의 Class.LocalScript\|LocalScripts 를 포함합니다.스타터GUI | 클라이언트가 게임을 로드할 때 표시하는 GUI 요소를 포함합니다.Class.LocalScript\|LocalScripts 이 위치에서 실행할 수 있습니다.이 위치는 버튼, 메뉴 및 팝업을 추가하는 등 게임의 사용자 인터페이스를 수정하는 스크립트에 적합합니다.스타터 팩 | 일반적으로 Class.Tool\|Tools 포함하지만, 플레이어 백팩 설정을 위해 Class.LocalScript\|LocalScripts 포함할 수 있음
이 이미지는 클라이언트 스크립트를 포함할 수 있는 탐색기 창 위치를 보여줍니다.기억하십시오, 및 는 와 함께 을 포함할 수 있지만, 컨테이너는 을 사용해야 합니다.

예제 프로젝트 구조
식물 참조 프로젝트는 대규모이고 복잡한 경험에서 코드를 구성하는 방법을 보여줍니다.
특히 주목할 점은 코드의 대부분을 재사용 가능한 ModuleScripts 및 ReplicatedStorage 및 ServerStorage에 저장하는 방법입니다.