ニフクラmBaaSお役立ちブログ

スマホアプリ開発にニフクラmBaaS。アプリ開発に役立つ情報をおとどけ!

Unity WebGL対応版非公式NCMBライブラリが作られています

UnityではiOS/Androidなどの他にも多数の環境に対してゲームが開発できます。その一つとしてWebGLがあるのですが、現在のところNCMBのUnity SDKはWebGL出力に対応していません。

そんな中、一部の機能に限定されますがWebGL版を開発してくださっている方がいます。

[Unity]NCMB REST APIを叩くぞ!(WebGL向け)|杏z 学習帳

さらにプレファブまで用意されています。

[Unity]Yoshinaniを使ってランキング表示!|杏z 学習帳

ランキングに特化した機能

実装されている機能の一つがスコア保存とランキング表示です。Unityといえばゲーム、ゲームと言えばランキングですよね!

  • スコアユーザのニックネーム変更
  • スコア送信
  • トップランカー取得
  • ユーザ自身の順位取得

ヨシナニ、という名前の通りメソッドさえ呼び出せば必要な処理を行ってくれます。例えばスコアの保存は次のようになります。

var scoreData = new Yoshinani.RequestData();
scoreData.AddParam("nickname", nickname);
scoreData.AddParam("score", newScore);

if (this.highScoreData == null) {
    // 新規
    Yoshinani.Instance.Call(
      Yoshinani.RequestType.POST,
      ApiPath.Scores.Val(),
      scoreData,
      (isError, json) => {
        var result = MiniJSON.Json.Deserialize(json) as Dictionary<string, object>;
        if (!isError && result.ContainsKey("objectId")) {
            this.highScoreData = new Score();
            this.highScoreData.objectId = result["objectId"].ToString();
            fin(newScore, nickname);
        } else {
            isError = true;
        }
        callback(isError);
    });
} else {
    // 更新
    Yoshinani.Instance.Call(
      Yoshinani.RequestType.PUT,
      string.Format("{0}/{1}",
      ApiPath.Scores.Val(),
      this.highScoreData.objectId),
      scoreData,
      (isError, json) => {
        if (!isError) {
            fin(newScore, nickname);
        }
        callback(isError);
    });
}

スクリーンショット保存

もう一つが画面のスクリーンショットを取得してファイルストアに保存してくれる機能です。また、新しいウィンドウで画像を開いてくれるくれる機能もあります。


コードはオープンソースとして公開されています(ライセンスはMIT License)。anzfactory/Yoshinani: NCMB REST API Helper for Unityにありますのでぜひ使ってみてください。