Unity & Node.js使いなら、最速5分でできるよ。
概要
Unity (client) 側はwebsocket-sharpを、Node.js (server) 側はwsを使う。
Unityアプリの画面click回数をserverへ送るテストコードを書くものとする。
手順
- websocket-sharpのダウンロードとビルド
- server側Node.js コードの準備
- client側Unityコードの準備
- 通信チェック
1. websocket-sharpのダウンロードとビルド
websocket-sharpをgit cloneして落としてくる。
不要なExamples (多分3つほどある) ディレクトリを削除する。
slnファイルを開き、ビルドする。
websocket-sharp/binの中にdllファイル(websocket-sharp.dll)があればOK!
この1ファイルがUnity側のすべてを担ってくれる。すごい。
2. server側Node.js コードの準備
適当なディレクトリでnpm initしておき、.jsファイルを作成する。
npm install wsでライブラリwsをインストールする。
あとはWebSocketサーバーのコードを書くだけ。最小なら5行ほどで終わる。
const WebSocketServer = require('ws').Server; const wss = new WebSocketServer({ port: 8080 }); wss.on('connection', (ws) => ws.on('message', (message) => console.log('received: %s', message)));
かけたらnode (filename).jsでとりあえずサーバー走らせとけば準備完了
3. client側Unityコードの準備
次はclient側のUnity. 先のwebsocket-sharp.dllをコピーし、Unity editor上からAssetsの好きなところへ入れる。
こうすることで、C# scriptのusingからアクセスが可能になる。
あとはC#コードを書き、適当なEmpty objectにアタッチするだけ。
コードはこんな感じ。
using UnityEngine; using WebSocketSharp; public class wsClient : MonoBehaviour { private int count = 0; // click counter private WebSocket ws; void Start () { var url = "ws://localhost:8080"; ws = new WebSocket(url); ws.Connect(); } void Update () { if (Input.GetMouseButtonDown(0)) { Debug.Log("clicked!"); count++; ws.Send("clicked No. " + count.ToString()); } } }
4. 通信チェック
Node.js サーバーappを動かした状態で、UnityをRun。画面をクリックするとメッセージが送られるはず。
Node.jsのコンソールでreceived: clicked No. Xと出てきたら大成功!
あとは好きにメッセージを送り、server側からの通信を自力で実装して好き放題だぞえ。
参考文献
github.com
このサイトで作ってあるデモ。wsさえnode.js側でinstallしとけばそのまま動く.