渋谷ほととぎす通信

「Unityをわかりやすく」初心者のためのゲーム作りブログ

UnityでOSCを使って通信する

UnityでOSCを使って通信する

こんにちは、Unityエンジニアのオオバです。

UnityでOSCやってみます。

ググればこういった先人たちのありがたい情報が出てきますが、本ブログは知らないこと・分からないことは自分で書いてやってみることを重視しているので、参考にさせて頂きつつ自分で動かしてみます。

今回はOSCを使ってiPhoneアプリからMacのUnityを動かすという事をやってみます。

成果物はコチラ

UnityでOSCを使って通信する_0

iPhone側をコントロールするとMacで立ち上がっているUnityエディタ上のイメージエフェクトのパラメータが変更されてノイズが走るというサンプルです。

先人たちが利用したUnityOSCを使わせてもらっています。

GitHub - jorgegarcia/UnityOSC: Open Sound Control (OSC) C# classes interface for the Unity3d game engine

若干使いづらかったので元コード変更は最小限のラッパークラスを今回作成しました。

👉DOTweenの教科書を読んでUnityアニメーションをプログラミングしてみよう!

使用方法

受信側

osc_receiver_part.cs · GitHub

受信側はサンプルコードの通り、OSCReceiverを生成・初期化してonListenToOSCMessageイベントに受信時の処理を登録します。

送信側

osc_sender_part.cs · GitHub

送信側はOSCSenderを生成・初期化して、Sendメソッドを実行します。

UnityOSCからの変更点とポイント

  • 送信側はOSCSenderクラス、受信側はOSCReceiverクラスを使用する構成
  • 受信側は受信したときだけ通知するイベント登録式
  • OSCPacketを引数として受信イベントを受け取る
  • 特に必要ないのでMonoBehaviourは継承しない

注意点

このサンプルは同じ無線LAN内の機器同士しかつながりません。
また原因不明なんですがiOSの場合、IL2CPPでビルドしないとSendができなくなります(Receiveは可能)。

補足

今回のサンプルはiPhone Macでしたが、iPhone同士ということも可能ですし、Mac同士も可能です。

ソースはこちら
GitHub - baobao/UnityOSCWrapper: UnityOSCWrapper is a wrapper for UnityOSC.

オススメ記事
検証環境
  • Unity2018.2.7f1