본문 바로가기
게임 프로그래밍/구글 플레이 게임 서비스 연동

로그인 UI 생성 및 코드 작성

by 레오란다 2022. 11. 13.
반응형

목차

 

1. 배포용 키 생성과 SHA1 인증서 지문 얻기 [바로가기]

 

2. 구글 플레이 게임즈 서비스 설정 (Google Cloud Platform 에서 사용자 인증 정보 만들기) [바로가기]

 

3. Google Play Games Plugin for Unity 설치 및 설정 [바로가기]

 

4. 로그인 UI 생성 및 코드 작성

 

5. 내부 테스트 출시 및 안드로이드 폰에 게임 설치하는 법 [바로가기]

 


 

Google 플레이 게임 서비스에 로그인을 위한 테스트 코드를 작성해 보도록 하겠습니다.

 

1. 로그인 UI 생성

 

로그인 테스트를 위해 버튼과 결과를 출력할 Text UI 를 만들어 보도록 하겠습니다.

다음과 같이 버튼 UI 를 추가합니다.

 

Button 추가

 

Hierarchy 창에 Canvas 가 생기고 그 아래에 Button 이 있습니다. 버튼의 Rect Transform 을 아래와 같이 설정해 줍니다.

유니티에서 모든 UI 오브젝트는 Canvas 컴포넌트를 갖는 오브젝트의 자식 오브젝트여야 합니다.

* 유니티에서 3D 월드 좌표계를 사용하는 오브젝트는 Transform 속성을 사용하고 UI는 기본적으로 스크린 좌표계를 사용하며 Rect Transform 속성을 사용합니다.

 

 

아래의 그림과 같이 Button UI 밑에 있는 Text(TMP) 오브젝트를 클릭하고 Inspector 창에서 붉은 테두리와 같이 Text와 Font Size를 변경해 줍니다.

 

 

 

다음은 로그인 결과를 출력할 Text - TextMeshPro UI 를 추가해 주세요. 이 UI 는 게임화면의 원하는 위치에 글자를 출력할 수 있게 해줍니다. 위의 버튼을 만들 때 사용했던 Text(TMP) 와 같은 것입니다.

 

TextMeshPro 추가

 

추가한 Text UI 의 Rect Transform을 아래와 같이 설정해 줍니다. 또, Text 의 Font Size 와 Alignment 를 붉은 테두리와 같이 변경해 줍니다.

 

 

 

위의 내용대로 설정하면 화면이 아래와 같이 됩니다.

 

 

2. 로그인 스크립트 작성 및 UI 연결

 

이제 로그인을 위한 새로운 스크립트를 만들도록 하겠습니다. 새 스크립트를 만드는 방법은 이전 글에서 진행했으니 여기서는 단계별 서술만 하도록 하겠습니다.

1. 빈 오브젝트를 만들고 이름을 GPGSHelper 로 변경합니다.
2. 생성한 오브젝트를 선택하고 Inspector 창에서 [Add Component] 를 클릭합니다.
3. New Script 를 클릭하고 이름을 GPGSHelper 로 설정한후 [Create and Add] 를 클릭합니다.

 

스크립트 코드를 다음과 같이 작성해 줍니다.

 

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

public class GPGSHelper : MonoBehaviour
{
   public TextMeshProUGUI txtLoginResult;

   // Start is called before the first frame update
   void Start()
   {
      var config = new PlayGamesClientConfiguration.Builder().EnableSavedGames().Build();
      PlayGamesPlatform.InitializeInstance(config);
      PlayGamesPlatform.DebugLogEnabled = true;
      PlayGamesPlatform.Activate();
   }

   public void Login()
   {
      PlayGamesPlatform.Instance.Authenticate(SignInInteractivity.CanPromptAlways, (success) =>
      {         
         if (success == SignInStatus.Success)
            txtLoginResult.text = "Success";
         else
            txtLoginResult.text = "Failed";
      });
   }
}

 

using GooglePlayeGames 와 using GooglePlayGames.BasicApi 는 Google Play Game Service와 관련된 API를 사용하기 위해 추가해 주어야 합니다. using TMPro 는 UI 컴포넌트인 TextMeshProUGUI 를 사용하기 위해 추가된 것입니다.

 

위의 코드에서 실제 로그인을 요청하는 코드는 

PlayGamesPlatform.Instance.Authenticate(SignInInteractivity.CanPromptAlways, (success) =>
{         
    if (success == SignInStatus.Success)
    	txtLoginResult.text = "Success";
    else
    	txtLoginResult.text = "Failed";
});

 

이 코드입니다.

 

결과는 비동기 방식으로 전달됩니다. 성공할 경우 success 에 SiginInStatus.Sucess 가 넘어옵니다. 그렇지 않으면 로그인에 실패한 것입니다. 

 

이제 버튼을 클릭했을 때 실행할 Login() 함수를 버튼의 클릭 이벤트에 연결하는 작업과 결과를 출력할 Text UI 를 txtLoginResult에 연결하는 작업을 진행하도록 하겠습니다.

 

먼저 버튼 이벤트와 Login() 함수를 다음과 같이 연결합니다.

 

버튼 이벤트에 Login() 함수 연결

 

다음은 txtLoginResult 에 Text UI 를 다음과 같이 연결합니다.

 

 

이제 Play 버튼을 누르고 실행한 다음 Login 버튼을 클릭해 봅니다. 안타깝지만 Failed 가 출력될 것입니다. 구글 플레이 게임 서비스 로그인은 유니티 에디터에서는 사용할 수 없습니다. 실제 안드로이드 폰에 설치해야 로그인 할 수 있습니다.

 

구글 플레이 게임 서비스 로그인을 위한 긴 여정이 이제 마지막 관문만 남았습니다. 마지막은 다음 글에서 이어서 진행하도록 하겠습니다.

반응형

댓글