다음을 통해 공유


CloudScript에서 읽기 전용 또는 내부 플레이어 데이터를 수정하는 방법

플레이어 데이터는 타이틀을 위해 필요한 경우 CloudScript에서 액세스할 수 있습니다.

CloudScript 사용에 대한 자세한 내용은 CloudScript 빠른 시작을 참조하세요.

이 항목의 C# 샘플은 Unity SDK에 대해 작성되었습니다. Unity SDK는 이벤트 기반 모델을 사용하여 비동기 작업을 처리합니다. 표준 C# 또는 Xamarin C# SDK를 사용하여 샘플 코드를 실행하려면 비동기 작업 모델을 사용하도록 코드를 수정해야 합니다. 수정해야 하는 메서드에는 서명의 메서드 이름에 Async가 추가됩니다. 예를 들어 Unity SDK의 SetObject는 표준 SDK C#의 SetObjectAsync가 됩니다. 자세한 내용은 async 및 await를 사용한 비동기 프로그래밍을 참조하세요.

CloudScript 코드 예제

CloudScript에서 서버 API 호출의 보안을 매우 주의하여 확인해야 합니다. 다음 코드에서는 CloudScript에서 읽기 전용 플레이어 데이터의 일부를 안전하게 수정하는 방법을 보여 줍니다.

function IncrementReadOnlyUserData(args) {
  var playerData = server.GetUserInternalData({
        PlayFabId: currentPlayerId,
        Keys: ["ReadOnlyTest"]
  });

  var prevCount = "0";
  var nextCount = "1";
  try {
    prevCount = playerData.Data["ReadOnlyTest"].Value;
    var prevInt = parseInt(prevCount, 10);
    if (prevInt != prevInt) {
      prevInt = 0;
      nextCount = (prevInt + 1).toString();
    }
  } catch (e) {
    prevCount = "0";
    nextCount = "0";
  }

  var updateUserDataResult = server.UpdateUserInternalData({
    PlayFabId: currentPlayerId,
    Data:
        {
          "ReadOnlyTest": nextCount
        }
  });
}

C# 코드 예제

CloudScript 빠른 시작에 설명된 대로 클라이언트에서 다음 논리를 호출할 수 있습니다.

public void CloudIncrement() {
    PlayFabClientAPI.ExecuteCloudScript( new ExecuteCloudScriptRequest {
        FunctionName = "IncrementReadOnlyUserData"
    },
    result => Debug.Log("CloudScript call successful"),
    error => {
        Debug.Log("CloudScript call failed");
        Debug.Log(error.GenerateErrorReport());
    });
}