09:05更新フォローするこの記事は2014年11月時点のものです。現在とは異なる場合があるのでご了承ください。Photon運営事務局です。ここでは前回の記事の引き続きの内容になりますので、あらかじめ読み進めておいてください。Viewとはクライアント間で通信を行いたい際にオブジェクトにPhotonViewコンポーネントを追加し、Obaserved(監視対象)を指定してやると、そのオブジェクトがネットワーク上で同期されるようになります。Viewコンポーネントを追加すると同期されます。実際にスクリプトを同期するそれでは前回のプロジェクトのCubeを利用し、様々な変数を同期してみましょう。ViewでTransformの値を同期しました。変数の同期を行っていこうと思います。ここではPhotonでCubeに色を同期させます。前回作成したGameController.csのスクリプトのUpdateメソッドへの追加と、ChangeColorメソッドを追加してください。Color.clear;}これにより、スペースキーを押下すると、ランダムでColorが変化(6色)するようになります。21行目のif(Input.GetKeyDown(KeyCode.Space))によってスペースキーが押された際、ランダムで取得した数値によって、オブジェクトに対して色を指定しています。詳細についてはUnityのスクリプトリファレンスをご覧下さい。次に、下記のようなスクリプトを作成します。ここではCubeSerializerクラスとします。簡単に内容を説明すると、Transformのpositionとrotationの値、そしてCubeのColorをRBGAの変数に分けて同期を行っています。詳細については後述します。}}スクリプトの解説をします。4行目はPhoton.MonoBehaviourを継承しています。PhotonのMonoBehaviourを継承することによって、オーバーライドされたメソッドを呼び出すことが可能となります。今回はOnPhotonSerializeViewメソッドを利用するので必ず継承しておく必要があります。6行目のOnPhotonSerializeViewメソッドで実際に他のキャラクターとの同期を行っています。PhotonView.sendRateOnSerializeを変更することで、1秒間に何回呼ばれるか調節可能です。PhotonではUpdateメソッドとは非同期処理を行っています。8行目でPhotonStreamが書き込まれているか判断しています。tream.isWritingの時、自分自身が送信したいデータを書き込み、それ以外の場合は受信を行っています。ここで送信している内容は前述の通り、オブジェクトのPosition、Rotation、そしてMaterialのColorをRGBAに分けて送信しています。同様に変数として設定すれば、同期させることも可能です。PhotonのPhotonStreamを使って送信する際はデータがシリアライズ(直列化)されます。SendNextした順にデータが送信されるので、受信時も同様の順番で取得する必要があります。19行目以降、データの受信後それぞれにセットしています。ここで作ったスクリプトをPhotonViewの同期対象とします。そのためにはまずCubeSerializerのスクリプトをCubeプレハブに追加します。Serializerと表示されていることを確認してください。ViewのObserveにドラッグ&ドロップします。Observerの対象が、画像のようにCubeになったことを確認してください。これによって、位置と傾き、そしてオブジェクトの色を、スクリプトによって同期ができます。photonView.isMineとはphotonView.isMineでは、実行しているPhotonViewが自分かどうかを判断しています。これを用いてやらないと、ネットワーク上のすべてのキャラクターを操作してしまいます。プレイヤーを操作するゲームではご注意ください。ここまでの作ったサンプルプロジェクトは下記にあります。StoreからPUNをインポートし、AppIdの設定後、当サンプルプロジェクトをインポートしてください。Japan/ScenesのフォルダのMainシーンが今回の記事と同等の内容になっていますので、是非一度ご覧になってお試しください。NetworkingでWebRPCを使うコメント0件のコメントログインしてコメントを残してください。