재사용 코드에서 에, 당신은 종종 game:GetService() 사용을 발견했을 수 있습니다.Roblox 서비스는 경험 내 아이템 판매, 채팅 활성화, 소리 재생, 개체 애니메이션, 인스턴스 관리와 같은 엔진의 기본 기능에 액세스할 수 있게 해줍니다.
사실, 서비스는 Roblox 개발의 가장 근본적이고 일반적인 패턴의 첫 걸음 입니다.
- 서비스 받기.
- 모듈 스크립트 요구.
- 로컬 함수 추가.
- 이러한 함수를 트리거하는 이벤트를 추가합니다.
예를 들어, 플레이어가 경험을 종료할 때 세계에서 플레이어의 위치를 저장하려는 경우:
local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local SaveManager = require(ReplicatedStorage:WaitForChild("SaveManager"))
-- 모듈 스크립트에서 재사용 가능한 함수를 호출하는 로컬 함수.
local function saveProgress(character)
-- 플레이어의 캐릭터 위치를 가져옵니다.
local position = character:FindFirstChild("HumanoidRootPart").Position
-- 모듈 스크립트에서 saveData 함수를 사용하여 쓸기
-- 데이터스토어 서비스.
SaveManager.saveData(character, position)
end
-- 문자가 제거될 때 saveProgress()를 호출하는 또 다른 로컬 함수
-- 경험(이 경우 플레이어가 떠날 때).
local function onPlayerAdded(player)
player.CharacterRemoving:Connect(saveProgress)
end
-- 플레이어가 경험에 처음 연결할 때 onPlayerAdded를 호출합니다.
Players.PlayerAdded:Connect(onPlayerAdded)
일부 주요 세부 사항은 다음과 같습니다:
- 스크립트당 서비스를 한 번만 검색해야 하기 때문에 변수에 서비스와 동일한 이름을 지정하는 것이 좋습니다.이 규약은 모듈 스크립트에도 적용됩니다.
- 전역 변수 game 를 사용하여 데이터 모델의 루트에 대한 참조로 서비스를 검색합니다.
- Roblox는 로딩 순서에 대한 보장을 제공하지 않으며(그리고 인스턴스 스트리밍은 특정 시점에 로드되지 않거나 로드되지 않는 것을 더욱 복잡하게 만듭니다), 따라서 Instance:WaitForChild()은 중요한 안전 조치입니다.
표준 라이브러리 , 전역 함수 및 변수, 또는 타사 라이브러리를 비교하는 대신, Roblox 개발의 큰 부분은 수많은 많은 서비스 중에서 원하는 기능을 경험에 추가할 수 있도록 도와줄 수 있는 서비스를 식별하는 것입니다.위의 예제에서는 디스크에 쓰기 위해 표준 I/O 라이브러리를 사용하는 대신 클라우드 서비스를 사용하여 데이터를 저장합니다.
컨테이너 서비스
컨테이너 서비스는 다른 개체를 포함하고 영향을 줄 수 있습니다.이러한 컨테이너 서비스는 데이터 모델의 루트에 있으며 Studio의 탐색기 창에 표시됩니다.함께 이러한 컨테이너 서비스는 데이터 모델에 대한 구조화된 계층을 형성하므로 Roblox 엔진이 플레이스올바르게 해석하고 렌더링할 수 있습니다.다음 표에는 일반적인 컨테이너 서비스가 포함되어 있습니다.
서비스 | 설명 :--- | :--- Workspace | 부품 및 지형과 같은 3D 세계에서 렌더링되는 모든 개체를 포함합니다.Lighting | 유니버셜 조명 효과를 설정하기 위한 개체를 포함합니다(예: Atmosphere 및 Sky).ReplicatedStorage 및 ReplicatedFirst | 서버와 클라이언트 간에 복제되는 콘텐츠와 논리를 포함합니다.
데이터 모델을 자세히 조사하려면 다음 방법을 사용할 수 있습니다:
- game:FindService() 지정된 서비스의 인스턴스를 검색합니다.
- game:GetChildren() 는 데이터 모델의 모든 루트 자식 배열을 반환하며, 이는 최상위 컨테이너 서비스입니다.
- game:GetDescendants()는 모든 컨테이너 서비스와 그 자식을 포함하여 데이터 모델의 모든 하위 항목 배열을 반환합니다.
컨테이너 서비스에 대한 자세한 정보는 데이터 모델 문서를 참조하십시오.
스크립팅 서비스
스크립팅 서비스는 스크립트 내에서 호출하는 Roblox 엔진의 표준 기능을 제공합니다.다음 표에는 일반적인 스크립트 서비스가 포함되어 있습니다.
서비스 | 설명 :--- | :--- TweenService | 다른 인스턴스의 숫자 속성을 시작부터 끝까지 값으로 간격을 두고 스타일을 완화하고 반복하고 지연하기 위해 사용됩니다.MarketplaceService | 플레이어에게 개발자 제품, 구독 또는 게임 패스 구매를 요청하는 경험 내 거래를 담당하는 서비스가 Roblox 프리미엄으로 업그레이드됩니다.ContextActionService | 키 누르다, 화면 누르다또는 컨트롤러 버튼 누르기와 같은 사용자 입력을 컨텍스트 작업, 예를 들어 사용자가 자동차에 들어가고 나가면 컨트롤을 수정하는 것과 바인딩할 수 있습니다.RunService | 프레임별 시간 관리를 위한 메서드와 이벤트, 경험이 실행되는 컨텍스트(서버, 클라이언트, Studio 모드)를 확인하기 위한 메서드를 포함합니다.모든 런타임 프레임에서 프로세스 또는 업데이트를 실행하는 데 유용합니다. | 경험에서 오디오가 재생되는 방법의 다양한 글로벌 측면, 예를 들어 도플러 규모 및 음향 볼륨을 제어합니다.또한 사운드 그룹을 포함하여 여러 오디오 신호의 볼륨 및 동적 효과 속성을 한 번에 제어할 수 있습니다.CollectionService | 서버에서 클라이언트로 복제되는 태그를 가진 인스턴스 그룹(컬렉션)을 관리하여 관련 인스턴스 그룹에 쉽게 할당하고 작업할 수 있습니다.
클라우드 서비스
Roblox에는 Roblox 클라우드에서 발생하는 작업과 프로세스를 처리하는 특별한 클라우드 서비스도 있습니다.다음 표에는 일반적인 클라우드 서비스가 포함되어 있습니다.
서비스 | 설명 :--- | :--- DataStoreService | 세션 간에 영구 데이터를 저장하기 위해.MemoryStoreService | 빠르게 변경되는 자주 사용되고 임시 데이터를 저장하기 위한MessagingService | 라이브 세션 중에 여러 서버 간 통신을 위해.
클라우드 서비스에도 해당 웹 API가 있으며, 외부 스크립트나 도구에서 액세스할 수 있습니다. 자세한 내용은 클라우드 열기를 참조하십시오.