えむにわリソース

ITのスキマ的なあれこれを書きます。

Milkcocoa for Unity の使い方

MilkcocoaをUnityで使うライブラリ「Milkcocoa for Unity」を公開しています。
現在最新バージョンは0.0.3です。

ダウンロード
GitHub or unitypackage

主な用途

  • リアルタイム通信を手軽に実施したい
  • 手軽にアプリケーション外の何かと連携したい

Milkcocoaとは

BaaS(Backend as a Service)といわれるサービスの一つで、リアルタイム通信と小さなデータベースが自分でサーバを管理することなく実現できるものです。
同時接続数10クライアントまで無料。
⇒Milkcocoa

前準備(Milkcocoaの登録)

Milkcocoaのサービスに登録し、アプリケーションIDを取得します。
以降、アプリケーションIDは APP_ID と呼称します。
具体的な方法は公式ページ参照

インストール

  • アセットをダウンロードする⇒Download
  • Unityのプロジェクトウィンドウにドロップする

UnityEditorでの設定

  1. Milkcocoaのプレハブを、hierarchyにドロップする(任意)
  2. APP_IDとdatapathを変更する

f:id:m2wasabi:20160325065152j:plain

コードの書き方

サンプルプロジェクト

以下のシーンにサンプルプロジェクトが入っています。参考にしてください。
/Milkcocoa/Demo/MilkcocoaTest
APP_IDを設定すれば使えます。

また、以下に実際のコード例を記します。

例1. メッセージを受ける側

using UnityEngine;
using System;
using Milkcocoa;
public class example1 : MonoBehaviour {
    MilkcocoaClient milkcocoa;

    void Start () {
        milkcocoa = FindObjectOfType<MilkcocoaClient>();
        milkcocoa.OnSend(milkcocoaEventHandler);
    }

    public void milkcocoaEventHandler(MilkcocoaEvent e)
    {
        // example print
        Debug.Log(e.GetValues());

        // example search
        if (e.data.GetField("params").HasField("chat"))
        {
            string id = e.data.GetField("params").GetField("chat").GetField("id").str;
            string message = e.data.GetField("params").GetField("chat").GetField("message").str;
            string username = e.data.GetField("params").GetField("chat").GetField("name").str;
            if(id != milkcocoa.clientId)
            {
                // 自分以外のメッセージ
            }
        }
    }
}

例2. メッセージを送る側

using UnityEngine;
using System;
using Milkcocoa;
public class example2 : MonoBehaviour {
    MilkcocoaClient milkcocoa;

    void Start () {
        milkcocoa = FindObjectOfType<MilkcocoaClient>();
    }

    private void sendMessage(string str)
    {
        JSONObject jsonobj = new JSONObject(delegate(JSONObject values)
        {
            values.AddField("chat", delegate(JSONObject chat)
            {
                chat.AddField("id", milkcocoa.clientId);
                chat.AddField("name", Uri.EscapeDataString("大鳥こはく"));
                chat.AddField("message", Uri.EscapeDataString(str));
            });
        });
        milkcocoa.Send(jsonobj);
    }
}