유니티 플레이팹 닉네임 변경, 불러오기 Playfab NickName 간단 사용법

반응형

유니티 플레이팹 닉네임 변경, 불러오기 Playfab NickName 간단 사용법

플레이팹 로그인이 되었다는 가정하에 진행

 

유니티 플레이팹 게스트 로그인 Playfab Sign In with Guest Login 간단 사용법

코드 작성 using PlayFab; using PlayFab.ClientModels; using PlayFab.Json; using PlayFab.ProfilesModels; using System; using System.Collections; using System.Collections.Generic; using System.Linq; using UnityEngine; using EntityKey = PlayFab.ProfilesMod

parksh3641.tistory.com

 


코드 작성

using PlayFab;
using PlayFab.ClientModels;
using System;
using UnityEngine;

public class PlayfabManager : MonoBehaviour
{
    public string customId = "";
    public string nickName = "";
    
    // 닉네임 변경 완료 이벤트
    public event Action<string> OnDisplayNameUpdated;
    public event Action<string> OnDisplayNameLoaded;
    
    // 에러 핸들러
    private void DisplayPlayfabError(PlayFabError error) => Debug.LogError("에러 발생: " + error.GenerateErrorReport());
    
    // 표시 이름 가져오기
    public void GetDisplayName()
    {
        // customId가 비어있는지 확인
        if (string.IsNullOrEmpty(customId))
        {
            Debug.LogWarning("customId가 설정되어 있지 않습니다. 먼저 로그인이 필요합니다.");
            return;
        }
        
        Debug.Log("표시 이름 정보 요청 중...");
        
        PlayFabClientAPI.GetPlayerProfile(
            new GetPlayerProfileRequest()
            {
                PlayFabId = customId,
                ProfileConstraints = new PlayerProfileViewConstraints()
                {
                    ShowDisplayName = true
                }
            },
            result => {
                if (result.PlayerProfile != null && !string.IsNullOrEmpty(result.PlayerProfile.DisplayName))
                {
                    nickName = result.PlayerProfile.DisplayName;
                    Debug.Log("표시 이름 로드 완료: " + nickName);
                    
                    // 이벤트 호출
                    OnDisplayNameLoaded?.Invoke(nickName);
                }
                else
                {
                    Debug.LogWarning("표시 이름이 설정되어 있지 않습니다.");
                    nickName = "";
                    OnDisplayNameLoaded?.Invoke("");
                }
            },
            DisplayPlayfabError
        );
    }
    
    // 표시 이름 업데이트
    public void UpdateDisplayName(string nickname)
    {
        // 닉네임 유효성 검사
        if (string.IsNullOrEmpty(nickname))
        {
            Debug.LogError("닉네임은 비어있을 수 없습니다.");
            return;
        }
        
        Debug.Log("표시 이름 업데이트 요청 중: " + nickname);
        
        PlayFabClientAPI.UpdateUserTitleDisplayName(
            new UpdateUserTitleDisplayNameRequest
            {
                DisplayName = nickname
            },
            result => {
                nickName = result.DisplayName;
                Debug.Log("표시 이름 업데이트 완료: " + nickName);
                
                // 이벤트 호출
                OnDisplayNameUpdated?.Invoke(nickName);
            },
            error => {
                // 특별한 에러 처리
                if (error.Error == PlayFabErrorCode.NameNotAvailable)
                {
                    Debug.LogError("이미 사용 중인 닉네임입니다: " + nickname);
                }
                else if (error.Error == PlayFabErrorCode.InvalidParams)
                {
                    Debug.LogError("유효하지 않은 닉네임 형식입니다.");
                }
                else if (error.Error == PlayFabErrorCode.ProfileDoesNotExist)
                {
                    Debug.LogError("프로필이 존재하지 않습니다. 먼저 로그인이 필요합니다.");
                }
                else
                {
                    DisplayPlayfabError(error);
                }
            }
        );
    }
    
    // 현재 표시 이름 반환
    public string GetCurrentDisplayName()
    {
        return nickName;
    }
    
    // 현재 표시 이름이 설정되어 있는지 확인
    public bool HasDisplayName()
    {
        return !string.IsNullOrEmpty(nickName);
    }
}
반응형