Choose your operating system:
Windows
macOS
Linux
サーバー と クライアント の両側から見るために、 [Play] ダウンリストで、 [Number of Clients (クライアント数)] フィールドを 2 に設定します。
レプリケートされた Multicast 関数は 実行時の木箱のステートの保存処理をしなかったので、サンプル 2.2 は失敗しました。そのような場合は、レプリケートされた変数を使ってみるのが自然な解決方法かもしれません。
このサンプルでは、 RepNotify boolean を使って木箱が開いているかどうかを保存してみます。もう一度、クライアントを青いリングの外に置き、サーバーに木箱を起動させます。クライアントが右へ歩いた後、どうなりますか?クライアントには、木箱が開くのが見えますが、サーバー上で過去に実行されたゴールドエフェクトの再生も見えます。
木箱がクライアントとの関連を再び持つようになると、クライアントは変更をレプリケートされた変数へ渡し、対応する RepNotify 関数が呼び出されます。残念ながら、クライアントが認識するの変数が変更されたことのみであり、変数が既に正しく変更されていることをを知る方法がないため、このような特別なケースに対応するには不十分です。
ブループリントの詳細
BP_Relevancy_Replication_RepNotify ブループリントのイベント グラフで、OnChestTouch はオーバーライドされて RepNotify 変数が設定され、それは下の方にあるコメント欄に表示されます。
以下は、変数 bChestOpened が更新されると呼び出される OnRep 関数です。
クリックしてフルサイズで表示
木箱が関連するようになると、クライアントは更新値を取得できるようになりますが、同時にクライアントは、かなり前にサーバー上で完了しているはずのゴールド パーティクル エフェクトを再生してしまうことになります。これは望ましくありません。