[Unity] GPGS(Google Play Games Services) 2. 로그인

간단하게 예제화면을 만들어서 로그인 / 로그아웃 / 프로필 사진 / 유저 네임을 가져와보자.

필요한 것

1. 사진을 띄울 창
2. 이름을 띄울 text
3. 현재 상태 log를 띄울 text
4. 로그인을 구현할 script와 오브젝트

캡쳐 화면으로 순서대로 정리해 보았다.

이미지 1 UI Setting 1

// Hierarchy 창에서 오른쪽 마우스 클릭 -> UI -> Canvas
// Canvas 오른쪽 마우스 클릭 -> UI -> Image
// Canvas 오른쪽 마우스 클릭 -> UI -> RawImage
// Canvas 오른쪽 마우스 클릭 -> UI -> Text 
// Canvas 오른쪽 마우스 클릭 -> UI -> Text 
생성

이미지2 UI Setting 2

// image -> background
// raw image -> user_image
// text -> user_name, user_log

test용도이니 각각의 배치는 자유롭게

이미지3 UI Setting 3

// Canvas 오른쪽 마우스 클릭 -> UI -> Button -> Login 오브젝트 명 변경 -> text 변경
// Canvas 오른쪽 마우스 클릭 -> UI -> Button -> Logout 오브젝트 명 변경 -> text 변경

이미지4 UI Setting 4

Hierarchy 창에서 오른쪽 마우스 클릭 -> Create Empty -> GooglePlayManager 오브젝트 명 변경

이미지5 c# script 생성

빨간색 체크 포인트 오른쪽 마우스 클릭 -> Create -> C# Script
스크립트 명 GooglePlayManager로 저장

이미지 6 script 추가

생성한 스크립트를 Hierarchy의 GooglePlayManager로 드래그하여 추가 -> 스크립트 열기


GooglePlayManager.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using GooglePlayGames;
using GooglePlayGames.BasicApi;

public class GooglePlayTest : MonoBehaviour
{
    public Text scoreText;
    public Text myLog;
    public RawImage myImage;

    private bool bWaitingForAuth = false;

    private void Awake()
    {
        myLog.text = "Ready...";

        // 구글 게임서비스 활성화 (초기화)
        PlayGamesPlatform.InitializeInstance(new           PlayGamesClientConfiguration.Builder().Build());
        PlayGamesPlatform.DebugLogEnabled = true;
        PlayGamesPlatform.Activate();
    }

    private void Start()
    {
        //게임시작시 자동로그인
        doAutoLogin();
    }

    // 자동로그인
    public void doAutoLogin()
    {
        myLog.text = "...";
        if (bWaitingForAuth)
            return;

        //구글 로그인이 되어있지 않다면 
        if (!Social.localUser.authenticated)
        {
            myLog.text = "Authenticating...";
            bWaitingForAuth = true;
            //로그인 인증 처리과정 (콜백함수)
            Social.localUser.Authenticate(AuthenticateCallback);
        }
        else
        {
            myLog.text = "Login Fail\n";
        }
    }

    // 수동로그인 
    public void OnBtnLoginClicked()
    {
        //이미 인증된 사용자는 바로 로그인 성공된다. 
        if (Social.localUser.authenticated)
        {
            Debug.Log(Social.localUser.userName);
            myLog.text = "name : " + Social.localUser.userName + "\n";
        }
        else
            Social.localUser.Authenticate((bool success) =>
            {
                if (success)
                {
                    Debug.Log(Social.localUser.userName);
                    myLog.text = "name : " + Social.localUser.userName + "\n";
                }
                else
                {
                    Debug.Log("Login Fail");
                    myLog.text = "Login Fail\n";
                }
            });
    }

    // 수동 로그아웃 
    public void OnBtnLogoutClicked()
    {
        ((PlayGamesPlatform)Social.Active).SignOut();
        myLog.text = "LogOut...";
    }

    // 인증 callback
    void AuthenticateCallback(bool success)
    {
        myLog.text = "Loading";
        if (success)
        {
            // 사용자 이름을 띄어줌 
            myLog.text = "Welcome" + Social.localUser.userName + "\n";

            StartCoroutine(UserPictureLoad());
        }
        else
        {
            myLog.text = "Login Fail\n";
        }
    }

    // 유저 이미지 받아오기 
    IEnumerator UserPictureLoad()
    {
        myLog.text = "image Loading ...";
        // 최초 유저 이미지 가져오기
        Texture2D pic = Social.localUser.image;

        // 구글 아바타 이미지 여부를 확인 후 이미지 생성 
        while (pic == null)
        {
            pic = Social.localUser.image;
            yield return null;
        }
        myImage.texture = pic;
        myLog.text = "image Create";
    }
}


이미지7 script setting

이미지7과 같이 각각의 위치에 맞게 드래그해서 추가


이미지 8 login button

1번 클릭 -> 2번 플러스 클릭 -> 3번 GooglePlayManager 드래그해서 넣기 -> 4번 OnClickLogin() 메소드 셋팅


이미지 9 logout button

로그인과 동일한 방법으로 진행 -> OnClickLogout() 메소드 셋팅


이미지10 android build -> apk파일 생성

유니티 에디터 -> File -> Build Settings -> Build
이전에 저장했던 이름 그대로 저장


스마트폰에 받아 설치하고 실행

 이미지 11 로그인

이미지 12 로그아웃


자동로그인 / 로그인버튼 / 로그아웃 버튼 모두 잘 동작한다.

댓글

이 블로그의 인기 게시물

[Unity] GPGS(Google Play Games Services) 1.연동

[JAVA] Array DataStructure & ArrayList와 LinkedList의 차이점