개발/앱

유니티로 5분만에 리더보드 점수 랭킹 시스템 적용방법 (안드로이드)

해피류 2017. 7. 22. 09:30

유니티로 리더보드에 점수랭킹 시스템을 적용하는 방법입니다.


오늘 해 봤는데 정말 간단하더라구요.

클릭 몇번하고 코드 Ctrl + C , Ctrl + V 이렇게 해 주니까 랭킹 시스템 적용 완료. 


어려울것 같아서 겁먹고 시도 못하신분들도 5분이면 가능하니까 이번기회에 적용해 보시는건 어떨까요?


첫째, 유니티 플러그인을 다운 받아서 패키지를 Import 한다.


패키지 다운 받는 경로



패키지는 저기 current-build 폴더 아래에 있는거 더블클릭해서 Import 해주면 끝나요.





두번째, Developer Console 에 접속(https://play.google.com/apps/publish) 하셔서 #게임서비스 메뉴를 선택해 줍니다.



세번째, 새 게임 추가를 선택하면 아래 창이 뜨는데 여기에 내용을 채워줍니다. 게임 이름, 카테고리 선택하는건 어렵지 않겠지요.


네번째, 게임 서비스가 만들어지고 나면 만들어진 서비스를 눌러서 화면 좌측에 있는 연결된 앱을 선택합니다. 그리고 '다른앱연결' 메뉴를 선택해서 연결할 앱을 선택해 줍니다. 연결할 앱은 미리 등록해둬야합니다.



다섯번째, 사용할 리더보드를 추가해 줍니다. (리더보드란, 랭킹 시스템에서 점수를 표시해주는것을 말해요)


아래 캡쳐한 화면에서 빨갛게 표시한 부분이 리더보드 ID 입니다. 요 ID를 가지고 나중에 코드에서 사용할 꺼에요.



여섯번째, 업적을 대충 5개 만들어줍니다. 최소 5개 이상되어야지만 게임을 출시할 수가 있더라구요. 전 일단 이 업적을 게임상에서 사용하지 않을꺼라서 대충만들어줬어요.


자 여기까지 왔다면 80%는 끝났어요. 남은건 코드상에서 사용할 수 있게 연결해주는것 만 남았네요. 먼저 리소스 ID를 간편하게 받는 방법은 아래 화면에 붉은색으로 마킹된 '리소스 받기' 버튼을 클릭해 줍니다. 그러면 창이 하나 뜨는데, 그 내용을 복사해 줍니다. 아시죠 ? 전체 선택해서 Ctrl + C ㅋㅋㅋ





일곱번째, 복사한 리소스를 유니티에서 사용할 수 있도록 넣어줍니다. 넣어주는 위치는 아래처럼 짠~


유니티에서 메뉴 > Window > Google Play Games > Setup > Android setup 요 경로로 찾아들어가서 클릭하면 Android Configuration 창이 뜨는데 여기서 아까 리소스 받기에서 복사한 내용을 그대로 Ctrl + V 해 줍니다. 끝!




오오 간단하죠? ㅜㅜ

생각보다는 글이 길어졌네요. 전 추가된 게임이 있어서 그대로 사용해서 5분만에 끝난것 같아요. 


이제 마지막, 랭킹에 사용될 점수를 리더보드에 넣어주는 코드구현해 주면 끝납니다.


저는 아래처럼 사용했어요, 구현하는 방식은 다 다를 수 있으니까, 개인에게 필요한 방법을 구현하면 될 것 같아요.  저의 경우를 잠시 설명드리자면 메뉴에서 '랭킹' 버튼을 누르면 그때 구글 플레이에 로그인하고, 점수를 리더보드로 업데이트 해 주는 방식입니다. 괜히 귀찮게 로그인이 필요하지도 않는데 앱 시작하자 마자 바로 로그인하라고 할 필요는 없잖아요?


leaderBoardId : 아까 위에서 만드신 리더보드 ID 값을 넣어주시면 되어요


example) string leaderBoardId = "Ccxkeslk123123" 


    public void RankButtonClick()

    {

        PlayGamesPlatform.Activate();

        Social.localUser.Authenticate(AuthenticateHandler);

    }



    void AuthenticateHandler(bool isSuccess)

    {

        if (isSuccess)

        {

            float highScore = PlayerPrefs.GetFloat("HighScore", 0);

            Social.ReportScore((long)highScore, leaderBoardId, (bool success) =>

            {

                if (success)

                {

                    PlayGamesPlatform.Instance.ShowLeaderboardUI(leaderBoardId);

                }

                else

                {

                    // upload highscore failed

                }

            });

        }

        else

        {

            // login failed

        }

    }






이렇게 5분완성이라고 처음에 시작했지만 글을 적고나서보니까 한 10분은 걸릴것 같네요. 그래도 이정도면 리더보드를 활용한 랭킹 시스템 적용할만 하지 않을까요?