UnityUnity、少し前からPCでのマルチディスプレイに対応している。https://docs.unity3d.com/ja/540/Manual/MultiDisplay.html対応しているのだが、macではマルチディスプレイ時に主ディスプレイ以外のマウスイベントを拾ってくれなくなる問題(少なくとも5.6.1f1では)があった。これのソリューションをまとめておく。簡単に箇条書きすると以下のようになる。EventSystemを利用するのはUnityのGUIパーツに反応させるため。client.send(m);});すんなり書けて楽だった。Unity側OSC自体の扱いは省略。標準のStandAloneInputModuleを継承したクラス、今回はマルチディスプレイのタッチパネルだったのでTouchPanelInputModuleという名前のクラスを作り、BaseInputを入れ替えられるようにする。BaseInputはPCにおいては各フレームごとのマウス入力の状態が入ってるクラスだ。input;}}次に、そのBaseInputを継承したToucPanelInputを作る。OSCで送られてくるマウスイベントを元にこのTouchPanelInputにSetMouseEventしてやることでマウス入力が行われるようになる。false;}}OSCで送られてくるマウスイベントからいい感じにBaseInputみたいにするのに下記クラスを作成したが、名前OSCMouseInputManagerとかAdapterくらいのほうが良かった気がする。あとこいつの機能、上記のTouchPanelInputに持たせたほうがいいと思う。false;}}}注意点としてはEventSystemは同時にひとつのInputModuleしか持てないみたいなので、うまいことModuleのenabledを切り替えてくれ!って感じ。凹みTipsおわりにhttps://bitbucket.org/Unity-Technologies/ui標準のInputModuleたちはコードが公開されているので大変参考になった。最初は自分自身でEventSystemの真似事を実装してて、RaycastAllしてヒットしたらInvokeでonClickを呼び出しみたいなことやったのだけど、動くっちゃ動くけど、なぜか最初のクリックには反応せず、2回目以降は反応するなどの中途半端な機能性だったので、がんばってInputModuleとBaseInputをゴリゴリと変えてみたらちゃんと動くようになった。こんな面倒くさいことせずとも動くようになって頂きたい......。»プロフィールid:miso_engine川鍋徹が書いてます。詳しいプロフィールはこちらの記事参照です。ツイートはてなブログをはじめよう!miso_engineさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。