読者です 読者をやめる 読者になる 読者になる

196の日記

完全に開発メモと雑談、その他忘れそうな計算式などを書き溜める場所になっています!

NetworkViewを少しいじってみた話

Unity unity

やっとテストその他やらなければいけないことが、ひと段落ついた!!!三週間後はまた発表ですが。。そんなわけで研究室に顔を出してきました。

Unity による IOSMac 間の簡単な通信

先輩が通信について悩んでおり、いろいろと相談をいたしました。結果的には、Objective-C 言語と Unity 間での通信は難しそうだけれど、Unity 製のアプリケーションなら簡単に通信ができるのではないかという結論。まぁできなければおかしな話ですが。。というわけで、何を使うかを先輩と真剣に議論。僕は PHP 通信を使用したものを Unity で作るということが夏休み以来一つの目標みたいになっていたので、PHP を推したのですが、先輩は論文を書くのに時間がないということで、Unity に用意されたものを使用するということになりました。

参考にしたサイト

nn-hokuson.hatenablog.com

このサイトさんのものをほぼ引用したものをつかって実験をしたので、こちらを参考に実装してください。


これは、NetworkViewというコンポーネントをオブジェクトに持たせ、そのオブジェクト内のコンポーネントスクリプト、トランスフォームなどを指定してやると、その指定してあげたものが変更された際、クライアント側にマスター側から自動的に変更点が送信されるというものです。
簡単に言うと、マスター側と同期したいものを指定し、一度コネクションを作ってしまえば以降は勝手に同期を行ってくれる優れものです!Unity やばくない?ツールがいちいち強力すぎる。

この NetworkView は一つにつき、1個までしか同期する要素を指定できないのですが、1つのオブジェクトに複数張り付けることができるため、ごちゃごちゃはしますが、実質いくらでも動機が可能だと思います!まぁ、そういう情報は一つのスクリプトに保持させてそれを同期させれば済む話ですが。。。


問題点

・この手法は片方にしかデータを送らないため、お互いにデータを送り合いたいときはこの方式は向かない。
・先輩の研究ではIOS側をマスターとし、タッチをMac側に送りそれによりデバイスのタッチの処理をしようとしていたが、VRを動かしながら使用するため、実質のマスター的な存在は、VRを動かしているデスクトップPCとなる。よって、時間がもしあるのならPHPC#の何かなどを勉強してソケット通信をしっかりできたなら、さらによかったと思う。

このUnityでのソケット通信はのちのちぜひ自分の手でやってみたい。。。が、とりあえず久しぶりのフリーな時間なのでMayaとかそっちの方を終わらせてから、着手したい。(そもそもPHPの勉強が進んでいない(Mac届いたらやるよ!))


追記:
どうやらこの方法、クライアント側での変更もサーバー側に送信され同期しそうな感じがしてきました。
nn-hokuson.hatenablog.com
再びこちらのサイト様です。とても読みやすい!僕もこんな風に書けたらな、、とは思うのですがこんなの書こうとしたらここに時間がとられてしまうので、僕はこの雑なスタイルでいきます。ここのnetworkView.isMineの説明の部分で、クライアント側の変更もマスターに適用されるとの記述があります。