게임은 종종 플레이어의 레벨, 경험 포인트, 인벤토리 항목, 금/코인과 같은 세션 간에 일부 영구 데이터 를 저장해야 합니다.
이 튜토리얼에서는 기본 데이터 저장소를 만드는 방법, 샘플 데이터를 저장하고 게임 세션으로 데이터를 다시 읽는 방법을 보여 줍니다.
Studio 액세스 활성화
Studio에서 테스트된 게임은 데이터 저장소에 액세스할 수 없으므로 먼저 활성화해야 합니다.
게임이 게시되었는지 확인하십시오(파일 > Roblox에 게시) Studio 액세스를 활성화하려면.
홈 탭에서 게임 설정 창을 엽니다.
In the 보안 세부 정보 section, turn on API 서비스에 대한 스튜디오 액세스 활성화 .
클릭하여 저장 을 등록하세요.
데이터 저장소 생성
데이터 스토어는 고유한 이름으로 식별됩니다. 이 예에서 플레이어 골드라는 이름의 데이터 스토어는 모든 플레이어의 골드를 지속 저장에 저장합니다.
GoldManager라는 이름의 새로운 ServerScriptService 를 생성하기 위해 Class.ServerScriptService 내에 새로운 1> Class.Script1> 를 생성하십시오.
데이터 저장소는 DataStoreService 에 의해 관리되므로 첫 번째 줄에서 서비스를 가져옵니다.
local DataStoreService = game:GetService("DataStoreService")Class.DataStoreService:GetDataStore() 를 호출하여 문자열 "PlayerGold" 로 액세스합니다. 이렇게 하면 이미 존재하는 PlayerGold 데이터 저장소에 액세스하거나 다른 이름으로 생성됩니다.
local DataStoreService = game:GetService("DataStoreService")local goldStore = DataStoreService:GetDataStore("PlayerGold")
데이터 저장
데이터 저장소는 기본적으로 사전과 같은 도큐멘트입니다. 데이터 저장소의 각 값은 고유한 키로 인덱싱됩니다. 예를 들어, 플레이어의 고유한 UserId 또는 게임 프로모션에 대한 명명된 문자열과 같은 이름이 있는 단순한 문자열입니다.
플레이어 데이터 예시
키 | 값 |
---|---|
31250608 | 50 |
351675979 | 20 |
505306092 | 78000 |
프로모 예시
키 | 값 |
---|---|
활성 특별 이벤트 | 여름 파티 2 |
활성 프로모션 코드 | 보너스123 |
파티 장소 액세스 가능 | 참 |
데이터 상점플레이어 데이터 저장하려면:
데이터 저장소 키에 대한 변수 playerUserID 를 생성한 다음 playerGold 를 사용하여 플레이어의 시작 금액을 저장합니다.
local DataStoreService = game:GetService("DataStoreService")local goldStore = DataStoreService:GetDataStore("PlayerGold")-- 데이터 저장소 키 및 값local playerUserID = 505306092local playerGold = 250데이터를 PlayerGold 데이터 상점저장하려면, 보호된 호출 내에서 Class.GlobalDataStore:SetAsync()|SetAsync 를 호출하여 이전에 생성된 키 및 값 변수를 전달합니다.
local DataStoreService = game:GetService("DataStoreService")local goldStore = DataStoreService:GetDataStore("PlayerGold")-- 데이터 저장소 키 및 값local playerUserID = 505306092local playerGold = 250-- 데이터 저장소 키 설정local setSuccess, errorMessage = pcall(function()goldStore:SetAsync(playerUserID, playerGold)end)if not setSuccess thenwarn(errorMessage)end
함수 like SetAsync() 은 네트워크 호출이 가끔 실패할 수 있는 네트워크 호출입니다. 위에 표시된 것처럼, pcall() 는 이러한 오류가 발생했을 때 감지하고 처리하는 데 사용됩니다.
가장 기본적인 형태의 pcall()은 함수를 수락하고 두 값을 반환합니다:
- 상태( boolean )이 실행된 경우 오류 없이 실행된 경우 또는 그렇지 않으면 거짓말이 됩니다.
- 함수의 반환 값 또는 오류 메시지.
위의 샘플에서 상태(setSuccess), 12번째 줄에서 테스트되며, SetAsync() 이 모든 이유로 실패하면 errorMessage 는 출력 창에 표시됩니다.
데이터 읽기
데이터 상점데이터를 읽으려면 GetAsync() 를 사용하여 원하는 키 이름으로 호출하십시오.
local setSuccess, errorMessage = pcall(function()goldStore:SetAsync(playerUserID, playerGold)end)if not setSuccess thenwarn(errorMessage)end-- 데이터 저장소 열 키local getSuccess, currentGold = pcall(function()return goldStore:GetAsync(playerUserID)end)if getSuccess thenprint(currentGold)end스크립트를 테스트하려면 실행을 클릭하고 currentGold 값이 출력 창에 인쇄되는 것을 확인하십시오. 함수가 데이터 저장소 서버에 연결해야 하기 때문에 몇 초 정도 걸릴 수 있습니다.
샘플 프로젝트
이제 기본 데이터 저장소 사용 방법을 이해한 다음 샘플 게임에서 테스트해 보세요.
황금 러시 개인 기록을 유지하기 위해 가능한 많은 황금 조각을 수집하세요.
Studio에서 게임을 편집하고 데이터 자동 저장 등을 포함한 향상된 GoldManager 스크립트를 탐색할 수도 있습니다.