저번에 이어서 GPGS를 한다.
스토어에서 다운 받는 것 까지 함
저번에
adb 와 녹스로 하였다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using GooglePlayGames;
using GooglePlayGames.BasicApi;
using UnityEngine.SocialPlatforms;
using Google.Play.AppUpdate;
using Google.Play.Common;
public class App : MonoBehaviour
{
public Text test;
// Start is called before the first frame update
void Start()
{
this.test.text = Application.version;
Debug.Log("-----------------> lnit GPGS");
PlayGamesClientConfiguration config = new PlayGamesClientConfiguration.Builder()
.EnableSavedGames()
.Build();
PlayGamesPlatform.InitializeInstance(config);
PlayGamesPlatform.DebugLogEnabled = true;
PlayGamesPlatform.Activate();
Debug.Log("----------------->Authenticate");
// authenticate user:
PlayGamesPlatform.Instance.Authenticate(SignInInteractivity.CanPromptAlways, (result) => {
// handle results
Debug.Log("----------------->" + result);
Debug.Log("----------------->" + Social.localUser);
Debug.Log("----------------->" + Social.localUser.authenticated);
});
}
// Update is called once per frame
void Update()
{
}
}
유니티 App 스크립터에서 result 로그를 찍어볼 것이다 .
result가 섹세스가 나와야한다.
정상적으로 로그인이 되면 섹세스가 찍힌다.
local ID 로
https://docs.unity3d.com/ScriptReference/SocialPlatforms.IUserProfile.html
이것을 이용할 수 있다.
우리에게 필요한건
id
images
username 정도이다
유니티에서 저 값을 노출 시켜 줄것이다. UI를 만들어준다.
이미지는 아바타 px에 맞춰저야한다. (GPGS avata img size임)
스크립터에서 뚫어준다.
private IEnumerator WaitForLoadThumb(System.Action callback) {
while (true) {
if (Social.localUser.image != null) {
break;
}
yield return null;
}
callback();
}
이미지가 바로 로드가 되지 않아서, 콜백으로 이미지 로드가 되면! 스프라이트로 만들어주는 코드
StartCoroutine(this.WaitForLoadThumb(() => {
Debug.Log(Social.localUser.image);
Debug.LogFormat("{0}, {1}", Social.localUser.image.width, Social.localUser.image.height);
this.thumb.sprite = Sprite.Create(Social.localUser.image,
new Rect(0, 0, Social.localUser.image.width, Social.localUser.image.height),
Vector2.zero);
}));
이미지가 들어오면 일반 2d 이미지를 스프라이트로 만들어 주는 작업을 해준다 !
https://docs.unity3d.com/ScriptReference/Sprite.Create.html
1. 소스이미지
2. 렉트
3. 피봇
이렇게 세 개가 들어간다.
그리고 필요한 txt에 넣어준다.
this.txtid.text = Social.localUser.id;
this.txtUserName.text = Social.localUser.userName;
this.txtState.text = Social.localUser.state.ToString();
local에서
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using GooglePlayGames;
using GooglePlayGames.BasicApi;
using UnityEngine.SocialPlatforms;
public class App : MonoBehaviour
{
public Text test;
public Text txtid;
public Text txtUserName;
public Text txtState;
public Image thumb;
// Start is called before the first frame update
void Start()
{
this.test.text = Application.version;
Debug.Log("-----------------> lnit GPGS");
PlayGamesClientConfiguration config = new PlayGamesClientConfiguration.Builder()
.EnableSavedGames()
.Build();
PlayGamesPlatform.InitializeInstance(config);
PlayGamesPlatform.DebugLogEnabled = true;
PlayGamesPlatform.Activate();
Debug.Log("----------------->Authenticate");
// authenticate user:
PlayGamesPlatform.Instance.Authenticate(SignInInteractivity.CanPromptAlways, (result) => {
// handle results
Debug.Log("----------------->" + result);
Debug.Log("----------------->" + Social.localUser);
Debug.Log("----------------->" + Social.localUser.authenticated);
this.txtid.text = Social.localUser.id;
this.txtUserName.text = Social.localUser.userName;
this.txtState.text = Social.localUser.state.ToString();
Debug.Log("----------------->" + Social.localUser.image);
StartCoroutine(this.WaitForLoadThumb(() => {
Debug.Log(Social.localUser.image);
Debug.LogFormat("{0}, {1}", Social.localUser.image.width, Social.localUser.image.height);
this.thumb.sprite = Sprite.Create(Social.localUser.image,
new Rect(0, 0, Social.localUser.image.width, Social.localUser.image.height),
Vector2.zero);
this.thumb.SetNativeSize();
}));
});
}
private IEnumerator WaitForLoadThumb(System.Action callback) {
while (true) {
if (Social.localUser.image != null) {
break;
}
yield return null;
}
callback();
}
}
유니티에서 플레이를 해준다.
유니티에서 에러가 안나게끔하는게 가장 중요한다.
유니티에서 오류가 안뜨면 빌드를 해준다.
로그도 잘 찍힌다.
빌드해서 녹스로 보면
ID
userName
state
아이콘이 뜬다.
지금 이미지 사이즈를 보면 96x96이다.
유니티에서 96으로 바꿔주고 다시 빌드 해준다.
정상으로 로드가 된다.
-----
디바이스 정보도 가져올 수있다.
만약에 여러 기기에서 하나의 아이디로 하면 오류가 생길 수있기 때문이다.
그래서 디바이스도 구별해서 사용해야한다.
우리가 가져와야하는건 사용자 ID 이다.
이 ID로 유저를 구별해야한다.
저장된 게임이면
코드를 넣어주면 되지만,
만약 google player console 에서 저장되는 게임으로 안되어 있다면,
저 코드 한 줄을 지워야한다.
-------
'Unity > 서버' 카테고리의 다른 글
0624_서버 (GPGS_리더보드 연결 / 네이버 로그인) (0) | 2021.06.24 |
---|---|
0623_ 서버 (GPGS4_업적) (0) | 2021.06.23 |
0618_서버 (GPGS 앱 올리기 2) (0) | 2021.06.18 |
0617_ 서버 (GPGS 구글플레이에 앱 올리기 ) (0) | 2021.06.17 |
0616 _ 서버 (DB_3) (0) | 2021.06.16 |