서버에 저장&로드할 수 있는 유저 데이터의 타입은 number, string, bool, vector, color, table 이에요.
🚫 단, 한번 정해진 타입은 바꿀 수 없어요.
🚫 vector, color, dataTime, object 타입이 포함된 table 은 저장할 수 없어요.
사용 예제
유저 데이터 불러오기
저장한 플레이어의 데이터를 서버에서 불러와요.
GetSavedUserGameData(플레이어 ID, "Key 값")
💡 클라의 OnEnterPlayer 나 OnSpawnCharacter 이벤트에서
서버의 LoadData 함수를 호출하는 구조로 작성하는 것을 권장해요.
--ClientScript에서localfunctionEnterPlayer(player) ifnot player:IsMyPlayer() thenreturnend--서버의 LoadData 함수를 호출해줘요. Game:SendEventToServer("LoadData")endGame.OnEnterPlayer:Connect(EnterPlayer)
-- Start Land에서 -- "PlayerGold" 라는 Key 값에 데이터를 저장해요.Game:SaveUserGameData(playerID, "PlayerGold", player.Gold)
-- Connect Land에서 -- Start Land에서 저장했던 데이터를 Connect Land에서도 로드할 수 있어요.local gold = Game:GetSavedUserGameData(playerID, "PlayerGold")player.Gold = gold
다른 랜드로 텔레포트할 때 휘발성 데이터를 저장하고 싶다면, 아래 내용을 참고해주세요.
AddLandTransferData로 저장한 데이터는 월드를 떠나면 사라져요.
AddLandTransferData(”Key 값”, 저장할 value 값)
-- 텔레포트로 이동을 시작하는 랜드에서 작성해요.local LandOrder =1localfunctionTeleportStart(player)--해당 랜드에 이동해서 사용할 데이터를 저장해요. player:AddLandTransferData("PlayerGold", 1300) player:AddLandTransferData("PlayerNickName", "Dito1234")print("Teleport Start!")end--플레이어가 특정 랜드로 텔레포트 이동을 시작할때 호출되는 함수를 연결해요. Game:AddTeleportStartEvent(LandOrder, TeleportStart)
-- 텔레포트해서 도착하는 랜드에서 작성해요.localfunctionTeleportFinish(player,TransferData)-- AddLandTransferData 로 설정한 데이터의 개수를 가져오는 방법이에요. print("Teleport Data Count : ", TransferData:DataCount())for i, key, value inpairs(TransferData:DataArray()) do-- AddLandTransferData 로 설정한 데이터의 Key 값과 Value 값을 가져오는 방법이에요. if key =="PlayerGold" then player.Gold = value endif key =="PlayerNickName" then player.NickName = value endendend--텔레포트가 끝났을 때 이전 랜드에서 설정한 데이터를 받을 함수를 연결해요.Game.OnTeleportFinishEvent:Connect(TeleportFinish)
유의 사항
테이블의 경우
table 타입은 BroadcastEvent / SendEventToServer / SendEventToClient 같은 SendEvent에서 전달 인자로 table을 바로 사용할 수 없어요. 따라서 table의 요소를 하나씩 전달해줘야 해요.
예시
local SomeTable = { 10, 52, 31 }localfunctionTest()for i =1, #SomeTable do Game:SendEventToClient(playerID, "SendSomeTableValue", SomeTable[i])endend
local SomeTable_Client = {}localfunctionSendSomeTableValue(tableValue)table.insert(SomeTable_Client, tableValue)endGame:ConnectEventFunction("SendSomeTableValue", SendSomeTableValue)