2018年11月28日水曜日

unity-simple-rankingで複数のランキングを扱えるようにした話

unity-simple-rankingで複数のランキングを扱えるようにした話


naichiさんがGitHubで公開しているunity-simple-rankingを使用すると自作ゲームに簡単にランキング機能を付けることができます。

自分も試してあっさりできたので本当に素晴らしいライブラリですのでおすすめです。

で、自作したゲーム3Dアミダクジに組み込んでみたのですが、このゲームには複数のモード(NormalとEndless)がありまして、それぞれにランキング機能をつけたいなと思いました。ただ、unity-simple-rankingはそのままだと単一のランキングしか扱えないので、少し改造してこちらが指定したランキングにアクセスできるようにしました。

使い方
var loader = naichilab.RankingLoader.Instance;
loader.info.Set("使いたいNCMBクラスの名前", "画面に表示する名前");
loader.SendScoreAndShowRanking(1000); //ランキングを表示
naichilab.RankingLoader.Instance.infoが新しく追加したRankingInfoクラスのインスタンスになります。

[Serializable]
public class RankingInfo
{
    ///     /// サーバーとやり取りするときの名前
    ///     public string className = "";

    ///     /// 画面に表示する名前
    ///     public string displayName = "";

    public RankingInfo()
    { }

    public RankingInfo(string className, string displayName)
    {
        this.className = className;
        this.displayName = displayName;
    }

    public void Set(string className, string displayName)
    {
        this.className = className;
        this.displayName = displayName;
    }
}

クラス自体はとても単純なものになります。
あとはRankingSceneManagerクラスの中でNCMBクラスを指定している部分を上のクラスに設定されている値を使うように変更しました。

注意点としてはRankingInfoに何も設定しなかったとき(空文字列を指定したとき)は以前のNCMBクラスを使うようになっています。

既存のunity_simple_rankingを使っているコードは壊さないように(たぶん)作りましたので、一つのゲームに複数のランキングを欲しいなと考えている人はよかったら使ってください。
https://github.com/tositeru/unity-simple-ranking

0 件のコメント:

コメントを投稿