NetworkViewを使って通信対戦 その6でRPC(リモートプロシージャコール)について。
直訳すると「遠隔で処理を呼ぶ」。つまり遠隔で処理を呼ぶって事だよ!
(実はよく理解していない可能性)
モンハンで例えよう。
敵が眠ってチャンス到来!「自分が大タル爆弾を設置する」操作を行うとする。
すると自分の端末は「大タル爆弾を設置」する処理を実行する。
ローカルだけなら問題ない。
だがネットワーク上にある自分(のコピー)は、処理まで同期していない。
味方からすれば、アワレにも足元でゴソゴソしている変な奴に見えると思う。
ここでRPCが必要になる。
RPCはネットワーク上のユーザーに処理を実行させる仕組み。
ネットワーク上に見えている自分(のコピー)に対して、「大タル爆弾を設置」と通知、
結果ネットワーク上の自分(のコピー)は「大タル爆弾を設置」って処理を実行する。
すると自分(のコピー)の足元に大タル爆弾が設置される。
同様の仕組みでバカが散弾を大タル爆弾にぶち込み、自分が死ぬ。
ガッデム。
多分こんな概念。
で、使い方。
まず、これを使うためにはNetworkViewのコンポーネントを持ってる必要が有りそう。
なのでNetworkViewコンポーネントを追加。
ココらへんの操作は過去ログに書いたような気がするので、放置。
次にローカルで大タル爆弾を設置する仕組みを作成。
void Update()
{
if( Input.GetKeyDown(KeyCode.Mouse0 ))
{
SetBigBom();
}
}
void SetBigBom()
{
// .. 大タルを設置する
}こいつを、こう変える。
void Update()
{
if( Input.GetKeyDown(KeyCode.Mouse0 ))
{
networkView.RPC("SetBigBom", RPCMode.All);
}
}
[RPC]
void SetBigBom()
{
// .. 大タルを設置する
}
これだけ。超便利。
NetworkViewをそのまま使うと画面がガクガクするかもしれない。
その事については、こっちの記事を参照してもらいたい。
【補足】