Unity/서버

0622_ 서버 (GPGS3)

minquu 2021. 6. 22. 11:44
반응형

저번에 이어서 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

 

Unity - Scripting API: IUserProfile

Success! Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable. Close

docs.unity3d.com

 

이것을 이용할 수 있다. 

 

우리에게 필요한건 

 

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

 

Unity - Scripting API: Sprite.Create

Sprite.Create creates a new Sprite which can be used in game applications. A texture needs to be loaded and assigned to Create in order to control how the new Sprite will look. In the script example below a new Sprite is displayed when the button is presse

docs.unity3d.com

 

 

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 에서 저장되는 게임으로 안되어 있다면,

 

저 코드 한 줄을 지워야한다.

 

 

-------

 

 

 

 

반응형