유니티

랭킹시스템 변경

tose33 2021. 7. 27. 19:30

원래 구현한 랭킹시스템은 PlayerPref를 이용해 구현되어서 서로 다른 컴퓨터에서 각각의 서로 다른 랭킹들이 있었다.

이번에 NCMB  Database를 이용해서 랭킹시스템을 바꿨고 방금 다 끝났다.

이제 데이터베이스를 이용하기 때문에 서로다른 컴퓨터에서도 동일한 랭킹이 출력된다.

 

잊지않기 위해 대략적인 work flow를 기록해둔다.

 

 

 

 

1. 메뉴씬에서 로그인
    2. 로그인 하지 않으면 게임버튼 누를수 없음
    3. 로그인후 게임버튼 누르면 SceneControl.cs의 ChangeScene() 함수에의해 singleton인 ManageApp.cs에 loginNickname 저장됨.
    4. 게임 종료후 Result.cs 에서 현재 로그인된 닉네임을 포함해서 NCMB Database에 정보 보냄.
       (여기서 정보는 UserManageMent와 상관없이 DataStore로 보내짐)
        즉 로그인 정보는 UserManageMent에 저장되지만 랭킹시스템에 출력되는 모든 정보들은 DataStore에 따로 관리.
    5. BestScore는 ManagerParent.cs에서 관리. 각 GameManager들은 ManagerParent를 상속받음 


    -------- NCMB Database 관련
    각각의 게임들에는 개별적으로 **_ManagerGame.cs, **_Result.cs 가 있음. (Angry_ManagerGame, Angry_Result 등...)
    이번에 실행된 게임의 점수는 ManagerGame.cs의 Score에 저장됨.
    게임이 종료되면 Result.cs가 Start되고 SendPlayerDataNCMB() 함수에 의해 NCBM 데이타베이스로 현재 종료된 게임의 이름과 점수가 보내짐.
    바로 직후 InitNCMBBoard() 함수에 의해 데이터베이스에 저장된 모든 데이터들을 "Score"로 정렬해 가져와서 보드에 출력함.