テラシュールブログ

旧テラシュールウェアブログUnity記事。主にUnityのTipsやAR・VR、ニコニコ動画についてのメモを残します。

NetworkViewを使って通信対戦 その6

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をそのまま使うと画面がガクガクするかもしれない。
その事については、こっちの記事を参照してもらいたい。
補足


調査ネタを募集中
フォローボタン