Leaderboard Season

1. Điều kiện tiên quyết

  • Trong game cần phải tích hợp GSM SDK: xem hướng dẫn

  • Game đã được nhập dữ liệu Leaderboard Season ở GSM CMS. Phần này nếu chưa biết, thì liên hệ tuyennv (skype: nguyenvantuyen_12a9) để được hướng dẫn

  • Game đã có FancyScrollView. Nếu chưa có thì tải và import: Download tại đây

2. Download

  • Tìm plugin có tên: LeaderboardSeason_v0.0.0.2.unitypackage

  • Khi import có thể xem sample trong plugin

  • Cần sửa lại appId trong GSMObject của LoadingScene, lấy giá trị appId tương ứng với dự án

3. Sử dụng

3.1 Add Script LeaderboardSeasonManager

  • Cần add Script này vào game, nơi sử dụng Leaderboard

3.2 Tạo Script LeaderboardSeasonSampleController

  • Mục đích để quản lý show leaderboard

  • Sử dụng 2 Prefab: LeaderboardSeasonPanel LeaderboardSeasonFinishPanel + LeaderboardSeasonPanel : Là prefab hiển thị leaderboard + LeaderboardSeasonFinishPanel: Là prefab hiển thị khi kết thúc 1 event leaderboard

Code mẫu:

using GSM.Events;
using GSM.LeaderboardSeason;
using UnityEngine;

public class LeaderBoardSeasonSampleController : MonoBehaviour
{
    [SerializeField] private LeaderboardSeasonPanelController leaderboardPrefab;
    [SerializeField] private LeaderboardSeasonFinishPanel leaderboardResultPrefab;
    [SerializeField] private int score = 3370;
    [SerializeField] private string scoreType = "star";
    private void Awake()
    {
        LeaderboardSeasonManager.SetFuncGetPlayerName(() =>
        {
            //Trả về tên của người chơi hiện tại
            //Phía game sẽ thay đổi giá trị này tương ứng với logic của game.
            return "playerName";
        });
        //Nhận sự kiện khi có event được finish
        LeaderboardSeasonManager.OnLoadEventFinishCompleted += OnLoadEventFinishCompleted;
    }
    private void OnLoadEventFinishCompleted(GSMLeaderboadSeason.EventFinishedData[] eventFinishes)
    {
        if (LeaderboardSeasonManager.Instance.HasFinishedEventLeaderBoard)
        {
            var resultPanel = Instantiate(leaderboardResultPrefab);
            resultPanel.SetOnClaimReward((reward) =>
            {
                Debug.Log(reward);
            });
            var eventFinished = eventFinishes[0];
            resultPanel.Show(eventFinished);
        }
    }
    //Hiển thị leaderboard
    public void ShowLeaderboard()
    {
        if (!LeaderboardSeasonManager.Instance.HasEventLeaderBoard) return;
        Instantiate(leaderboardPrefab).GetComponent<LeaderboardSeasonPanelController>().Init(scoreType);
    }
    public void UpdateScore()
    {
        //Gửi điểm
        LeaderboardSeasonManager.Instance.SendScore(score, scoreType);
    }
}
  • Mỗi leaderboard được phân loại theo scoreType

Ảnh demo:

Last updated