[Unity] GPGS(Google Play Games Services) 2. 로그인
간단하게 예제화면을 만들어서 로그인 / 로그아웃 / 프로필 사진 / 유저 네임을 가져와보자.
필요한 것
1. 사진을 띄울 창
2. 이름을 띄울 text
3. 현재 상태 log를 띄울 text
4. 로그인을 구현할 script와 오브젝트
캡쳐 화면으로 순서대로 정리해 보았다.
필요한 것
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로 저장
생성한 스크립트를 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 로그아웃
자동로그인 / 로그인버튼 / 로그아웃 버튼 모두 잘 동작한다.
댓글
댓글 쓰기