스크립트 유형 및 위치

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

많은 개발자에게 Roblox 스크립팅에 적응하는 근본적인 도전은 파일 위치와 Script.RunContext 속성의 중요성입니다.스크립트 입력, 탐색기의 위치 및 런타임 컨텍스트에 따라 스크립트는 매우 다르게 동작할 수 있습니다.특정 메서드 호출이 실패할 수 있고, 경험의 개체에 액세스할 수 없거나 스크립트가 전체실행되지 않을 수 있습니다.

이 복잡성의 이유는 Roblox 경험이 기본적으로 멀티플레이어이기 때문입니다.스크립트는 서버에서만 실행하거나, 클라이언트에서만 실행하거나, 둘 모두에서 공유할 수 있는 기능이 필요합니다.Roblox 플랫폼의 시간에 따른 진화는 상황을 더욱 복잡하게 만들었습니다.

스크립트 유형

Roblox에는 3가지 종류의 스크립트가 있습니다.

  • Script - 위치와 Script.RunContext 속성에 따라 서버나 클라이언트에서 실행되는 코드.
  • LocalScript - 클라이언트에서만 실행되는 코드. 실행 컨텍스트가 없음
  • ModuleScript - 다른 스크립트에서 재사용할 수 있는 코드. 실행 컨텍스트가 없습니다.

를 생성할 때, 기본 실행 컨텍스트는 입니다, 즉 그것이 a) 서버 사이드 스크립트이고 b) 서버 컨테이너에만 실행되는 경우, 예를 들어 또는 입니다.

  • 스크립트의 실행 컨텍스트를 Server로 변경하면 이제 ReplicatedStorage에서도 실행할 수 있지만 권장되지 않습니다.해당 위치의 콘텐츠가 클라이언트에 복제되므로 서버 사이드 스크립트에 좋지 않은 위치입니다.
  • 스크립트의 실행 컨텍스트를 Client로 변경하면 ReplicatedStorage에서 실행할 수 있습니다.또한 StarterCharacterScriptsStarterPlayerScripts에서 실행할 수 있습니다.그러나 스타터 컨테이너는 클라이언트에 복사되므로 원래 스크립트 가 실행되어 원하지 않습니다.

스크립트 실행 컨텍스트를 변경하려면 탐색기에서 선택하고 속성 창의 값을 변경하십시오.

RunContext property indicated for a Script.

추천

  • 및 값을 사용하여 스크립트 실행 방식의 모호성을 제거하고 프로젝트를 구성하는 데 도움이 될 수 있습니다.기본값이 아닌 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 포함할 수 있음

이 이미지는 클라이언트 스크립트를 포함할 수 있는 탐색기 창 위치를 보여줍니다.기억하십시오, 및 는 와 함께 을 포함할 수 있지만, 컨테이너는 을 사용해야 합니다.

Diagram showing which script locations run on clients.

예제 프로젝트 구조

식물 참조 프로젝트는 대규모이고 복잡한 경험에서 코드를 구성하는 방법을 보여줍니다.

특히 주목할 점은 코드의 대부분을 재사용 가능한 ModuleScriptsReplicatedStorageServerStorage에 저장하는 방법입니다.