はなちるのマイノートスマートフォン用の表示で見るはなちるのマイノートUnityをメインとした技術ブログ。【Unity】websocket-sharpを用いてリアルタイムな通信をしてみる2019-09-29【Unity】websocket-sharpを用いてリアルタイムな通信をしてみるUnityTweetはじめに今回はwebsocket-sharpを用いてリアルタイムな通信をしてみる記事になります!このwebsocket-sharpというライブラリを使うことで、手軽にオンラインゲームといったリアルタイムに通信が必要なものを実装できます。サーバーとクライアントの両方をこのライブラリで対応しているので、Unityとこのライブラリだけでどちらも実装できるのも魅力の一つですね。websocketとは?このライブラリの名前にもあるwebsocketですが、以下のような意味があるようです。Webにおいて双方向通信を低コストで行うための仕組み。Qiitaオンラインゲームのような複数によるリアルタイムなやり取りに向いているというわけですね。下準備websocket-sharpは残念ながらAssetStoreにはないみたいなので、GitHubからダウンロードして自分でビルドする必要があります。Zipの方に今回はします。すると.zipのファイルがダウンロードできるので、解凍しましょう。Studioで開きます。ここでビルドしようとしたところエラーが出てしまったので、少しだけコードを追加します。ISerializable修正ができたらビルドし、出力のところに.dllのパスが表示されているので確認してみましょう。websocket-sharp.dllをUnityのPluginsフォルダに入れれば下準備は終了です。}}これがサーバー側のスクリプトになります。WebSocketServerのコンストラクタによりポート番号を設定できます。WebSocketBehaviorを継承したクラスには、メッセージをサーバーが受信したときの処理をOnMessageに書きました。今回はこれだけですが、コネクションを確立したときのOnOpen,エラーが発生したときのOnError,接続を切断したときのOnCloseは必要に応じて書き加えても良いでしょう。WebSocketBehavior.Sessions.Broadcastメソッドによってクライアントから受け取ったメッセージをそのまますべてのクライアントに送信しています。試してみるサーバー側のスクリプトがちゃんと動くのか見てみます。動作を確認するためにwscatを用いることで簡単にできます。tricknotesのぼうけんのしょただこれはNode.jsが必要なので、まだインストールしていない方は以下の記事を参考に設定してみてください。Qiitaインストールができら以下のコマンドをコマンドプロンプト等で打ち込みます。wscat準備が整ったら、以下のコマンドにてサーバー繋ぐことができます。ws://localhost:3000実際にUnityで上のサーバー側のコードを書いたものをゲームオブジェクトにアタッチした後再生ボタンを押し、wscatでサーバーにつないでみてください。}}WebSocketのコンストラクタでWebSocketのURLを設定します。メッセージを受け取ったときのOnMessage,通信を終了したときのOnCloseのイベントを。さきほどと同様にOnOpen,OnErrorもつけても良いと思います。WebSocket.Open・Send・CloseはともにOpenAsyncのように書くことで非同期にできるようです。さいごにこのサーバーのスクリプトを含むシーンをLinux向け等にビルドして、自前のサーバーやレンタルサーバー(VPSとかEC2とか?)で動作させるとまさにオンラインゲームの完成です。今回はリストや配列に格納された文字列を一気につなげ...突然ですがUnityオススメ記事20選!というサイトを作ったのでプチ宣伝。はてなブログProUnityをメインとした技術ブログ。(9)スターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。