最適化のヒント

インスタンス化のプールオブジェクト

PUNには、読み込まれたリソースからではなく、プールからオブジェクトをインスタンス化するオプションが備え付けられています。(稼働速度を上げるため、メモリ上に保管されています。)インスタンス化に関するドキュメントページのプレハブプールの使用を参照してください。

RPCターゲットをキャッシュ

ゲーム内で大量のRPCを使用するケースもあるでしょう。 ターゲットGameObjectのあらゆるコンポーネントはRPCを実装することができるので、PUNはリフレクションを使用して適切なメソッドを見つけます。 もちろん、コンポーネントが変更されない場合は、これにはコストも手間もかかり無駄になります。

デフォルトで、PUNはスクリプトのタイプごとにMethodInfoリストをキャッシュします。 GameObject上で潜在的なターゲットであるMonoBehavioursはキャッシュしません。

PhotonNetwork.UseRpcMonoBehaviourCache = trueを設定して、RPCのPhotonView毎のMonoBehavioursをキャッシュできます。 これにより呼び出すコンポーネントを検出する速度が上がります。 GameObject上のスクリプトが変更されたら、必要に応じてphotonView.RefreshRpcMonoBehaviourCache()を呼び出しアップデートしてください。

RaiseEventのローカルラグを回避

RaiseEventを呼び出す場合、データは即座にシリアル化されますが、すぐにはソケットに送信されません。その代わりに、SendOutgoingCommands()が呼び出されるまでデータは待ち行列に入れられます。 これにより、Photonはメッセージを少量のデータグラムに集約し、トラフィックを最適化します。

必要に応じてローカルラグを回避するには、LateUpdate()内でロジックにSendOutgoingCommands()を呼び出すトリガーを搭載します。 これは必要に応じて実行すれば十分です。

ドキュメントのトップへ戻る