【Unity】NCMBを使ってサーバにデータを保存、取得する方法

2018.06.18 自習室 0

Unity1Weekというゲームジャムで、以下の動画のような「敵に見つからないように壁に文章を書き残す」「書き残した文章は他のプレイヤーの画面に表示される」というシステムのゲームを作成しました。

その際「書き残された文章をサーバに保存して」「サーバに保存された文章を取得して表示する」という処理をするのに、NCMB(ニフティ クラウド モバイル バックエンド)というサービスを利用したので、使い方をまとめておきます。

なお、作ったゲームは以下のリンクからプレイできますので、実際の見え方を知りたい場合は試してみてください。

ゲームはこちらからプレイできます

環境

  • Unity 2018.1.2f1

このページの構成

ポイント
事前準備
サーバにテキストを保存する
サーバに保存された文章を取得する

ポイント

NCMBはゲームアプリなどのサーバ側の処理(データの保存・取得やプッシュ通知など)を簡単に行うことができるようになるサービス(いわゆるmBaaS)
自分でサーバを用意しなくてもよく、ある程度のアクセスまでは無料で利用できる
「データの保存」では「サーバからデータ登録件数を取得」「登録件数に+1したIDを作成」「IDとテキストをセットでサーバに保存」という処理を説明
「データの取得」では「サーバからデータ登録件数を取得」「ランダムなIDを複数生成」「該当するIDのテキストを取得」という処理を説明

事前準備

NCMBの準備

まずはNCMBを利用できるようにしないといけないので、アカウントの登録やらアプリの登録やらをしておきます。
以下の公式リファレンスで丁寧に手順が説明されてますので、こちらを参考に「APIキーの設定とSDKの初期化」まで進めてください。

イントロダクション(Unity)

ちなみに料金等については以下のリンクをご覧ください。APIリクエスト200万回/月まで無料で使えるなど、個人で使う分にはほぼ問題ないんじゃないかなと思います。

料金

サーバにテキストを保存する

処理の流れ

はじめに、ここで説明している処理の流れを簡単に説明しておきます。

① プレイヤーがInput Fieldにテキストを入力して送信ボタンを押す
② サーバからデータの登録件数を取得する
③ 登録件数に+1して連番のIDを作成する
④ IDと入力されたテキストをセットにしてサーバに保存する

Unityの準備

プレイヤーがテキストを入力する欄とボタンを用意します。
「create」-「UI」から「Input Field」と「Button」を作成してください。

適当でいいのですが、ここでは上記の画像のような感じで「Input Field」と「Button」を作成しました。それぞれ名前を”RakugakiField”と”RakugakiButton”という名前にしています。
ボタンとフィールドを「UI_Input」というオブジェクトの子要素にしてまとめていますが、特に必要ではないので、まとめなくても大丈夫です。

それでは次のセクションで「サーバに保存する文章を書く」のところに書かれたテキストを、「サーバに保存する」ボタンを押した時に保存する処理を作っていきます。

サーバーにテキストを保存する

サーバにデータを保存する処理を追加していきます。

以下のスクリプトを作成したInput Fieldにアタッチしてください。ここでは”InputController”という名前でスクリプトを作成しています。最初の”using〜”のところに色々追加しているので忘れないように注意してください。

ボタンのオンクリックイベントにこのスクリプトの”SaveRakugaki”を指定すれば準備は完了です。
ゲームを再生し、何か入力してボタンをクリックしてみてください。

上の動画のように、ログに”データの保存に成功しました”というメッセージが表示されていればOKです。
NCMBのダッシュボードを開き、「データストア」から先ほどのスクリプトで指定したクラス名のデータを開いてください。入力したテキストが表示されていると思います。

参考リンク

データストアにアクセスしてデータを処理する方法については、下記のリンクに色々と事例がまとまってますので参考にしてください。

データストア(Unity) 

サーバに保存された文章を取得する

Unityの準備

次に、サーバから保存したテキストを取得して表示する処理を追加していきます。

サーバから取得したデータを表示するUIを追加します。「create」-「UI」から「Text」を作成してください

こちらも適当でいいのですが、ここでは上記の画像のような感じで「UI_Output」というパネルの子要素としてTextを作成しました。
こちらも見やすいように、という以外の意味はないので、Panelはなくても大丈夫です。

サーバーからテキストを取得する

サーバからデータを取得する処理を追加していきます。

以下のスクリプトを先ほど作成したTextにアタッチしてください。ここでは”OutputController”という名前でスクリプトを作成しています。

ここまで完了したらゲームを再生してみてください。
サーバに保存されたテキストが追加して表示されていると思います。


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です