読者です 読者をやめる 読者になる 読者になる

(:3[kanのメモ帳]

個人ゲーム開発者kan.kikuchiのメモ的技術ブログ。月木更新でUnity関連がメイン。

プラグインを書かずにランキングとアチーブメントを実装【Unity】【iOS】【Android】

Unity iOS Android

このエントリーをはてなブックマークに追加

この記事でのバージョン
Unity 5.2.2f1 Personal


はじめに

前回iOS、前々回Androidでランキングとアチーブメントを実装しました。

なお、Androidの方は有料のアセットを使用しているので、ご注意ください。




ただ、ランキング関連の処理をする度にiOSとAndroidで処理を分けるのは非常に面倒なので、

上記のiOSRankingUtilityAndroidRankingUtility

使い分けて処理を行うRankingManagerを作りました!今回はそんな記事。


まぁ、全部一緒に作ったんですけどね(:3っ)∋〜


RankingManagerとConfig

ではさっそく、プログラムです!

当たり前ですが、iOSRankingUtilityとAndroidRankingUtilityが無ければ機能しません。



この、RankingManagerはSingletonMonoBehaviourというクラスを継承しているので、

そんなの知らない!って方はこちらもご確認ください。


使い方

まずConfigのRankingTypeにランキングの種類

AchievementTypeにアチーブメントの種類を、

各々のDictionaryにランキングorアチーブメントのIDを設定します。


そして、RankingManagerを以下のように適当なオブジェクトにアタッチするだけで準備OK。


f:id:kan_kikuchi:20160411224929p:plain


これだけで起動時に認証をしてくれます。


機能の実行方法は以下のとおりです。

//スコア送信
RankingManager.Instance.ReportScore(Config.RankingType.HighScore, score);

//アチーブメント送信
RankingManager.Instance.ReportProgress(Config.AchievementType.Achievement1, progress);

//ランキング一覧(リーダボード)表示
RankingManager.Instance.ShowLeaderboardUI();

//アチーブメント一覧表示
RankingManager.Instance.ShowAchievementsUI();


なお、以下のようにスコアやアチーブメントを送信した後のコールバックを登録する事も出来ます。

//スコアを送信した後に実行するメソッドを登録
RankingManager.Instance.ReportScoreCallBack += SendScoreCallBack;

//アチーブメントを送信した後に実行するメソッドを登録
RankingManager.Instance.ReportProgressCallBack += SendToAchievementCallBack;



シンプル!!


処理内容

処理内容はiOSRankingUtilityとAndroidRankingUtilityを使い分けているだけなので割愛。

各OSの詳しい処理内容は以下を参照のこと。






おわりに

これで、ランキングやアチーブメント周りのiOS、Android両対応、

さらには送信時にOSを気にしなくて良くなりましたね!


やってみると意外と簡単、最初からこれで良かったんや(:3っ)∋〜