Unity+PlayFab에서 async/await를 사용하는 방법

6757 단어 PlayFabUnityC#

2019/09/16 추기


이 보도는 다음과 같은 환경에서 동작 확인을 진행한다.
- Unity 2019.1.13+IL2CPP+iOS 실제
- Unity 2019.1.13+IL2 CPP+Android 실제 시스템

정면


Unity에서 PlayFab를 사용할 때 리셋된 플러그인은 깊어지기 쉬우므로 결과적으로 코드의 가독성이 떨어지는 것은 매우 번거롭다.
다음 코드는 PlayFab 로그인의 예시 코드입니다. Unity에서 PlayFab를 사용할 때 무엇을 하든지 이 코드처럼 리셋을 통해 계속 처리하는 것이 기본입니다.
using PlayFab;
using PlayFab.ClientModels;
using UnityEngine;

public class PlayFabLogin : MonoBehaviour
{
    public void Start()
    {
        PlayFabSettings.staticSettings.TitleId = "xxx";

        var request = new LoginWithCustomIDRequest { CustomId = "GettingStartedGuide", CreateAccount = true};
        PlayFabClientAPI.LoginWithCustomID(request, OnLoginSuccess, OnLoginFailure);
    }

    private void OnLoginSuccess(LoginResult result)
    {
        Debug.Log("Congratulations, you made your first successful API call!");
    }

    private void OnLoginFailure(PlayFabError error)
    {
        Debug.LogWarning("Something went wrong with your first API call.");
    }
}
나는 async/await로 더욱 유창하게 쓰고 싶다. 물론 같은 일을 고려하는 사람도 있다. 포럼에 이런 대화. 있다.
PlayFab에는 UnitySDK와 CSharpSDK가 있으니 CSharpSDK를 시도해 보세요.
CSharpSDK는 원래 서버에서 사용하려고 했지만 Unity도 최신 C#를 사용할 수 있기 때문에 Unity도 움직이겠지.
바로 해보고 싶어요.

단계


  • 이 페이지에서 CSharpSDK
  • 다운로드
  • CSharpSDK-versioned\PlayFabSDK\source 다음 파일을 Unity 프로젝트로 복사
  • async/await를 사용하는 코드로 바꾸어 보기
  • using PlayFab;
    using PlayFab.ClientModels;
    using System.Threading.Tasks;
    using UnityEngine;
    
    public class PlayFabLogin : MonoBehaviour
    {
        async Task Start()
        {
            PlayFabSettings.staticSettings.TitleId = "xxx";
    
            var request = new LoginWithCustomIDRequest { CustomId = "GettingStartedGuide", CreateAccount = true };
            var result = await PlayFabClientAPI.LoginWithCustomIDAsync(request);
    
            var message = result.Error is null
                ? $"Login success! My PlayFabID is {result.Result.PlayFabId}"
                : $"Login failed... {result.Error.ErrorMessage}";
    
            Debug.Log(message);
        }
    }
    

    결과


    아무 문제 없는 것 같습니다.

    제 서버 경력이 Unity보다 길어서 async/await를 사용하는 데 익숙해졌기 때문에 UnitySDK에서 CSharpSDK로 전환하고 싶습니다.

    좋은 웹페이지 즐겨찾기