RPC 関数をすべてのピアに呼び出します。
呼び出された関数は @RPC タグの設定が必要です ([RPC] C# コード)。 RPC 関数が呼び出されるときに NetworkView は GameObject にアタッチされている必要がありますます。 NetworkView が何か他のためにか RPC 関数のためだけに使用されている場合、問題はありません。 RPC 関数だけの場合、状態の同期をオフにする必要があり、観測されたプロパティーは none に設定することができます。 異なるスクリプトでふたつの RPC 関数が同じ名前を持っていて、 RPC が呼び出されたときにそれらのひとつが呼び出される場合、 RPC 関数名はシーン全体でユニークである必要があります。 送信される場合、RPC 呼び出しは常に同じ順序で実行されることが保証されます。 NetworkView.group でネットワークビューの通信グループ設定を RPC 呼び出しのために使用します。 RPC 自身の情報を取得するには自動的に情報が格納される関数の宣言に NetworkMessageInfo パラメーターを追加できます。 これを行うと RPC 関数を呼び出す方法を変更する必要がありません。 詳細は manual の RPC の章を参照してください。 有効な RPC パラメーターは int、 float 、 string 、 NetworkPlayer 、 NetworkViewID 、 Vector3 と Quaternion です。
var cubePrefab : Transform;
var nView: NetworkView;
function Start() { nView = GetComponent.<NetworkView>(); }
function OnGUI () { if (GUILayout.Button("SpawnBox")) { var viewID : NetworkViewID= Network.AllocateViewID(); nView.RPC("SpawnBox", RPCMode.AllBuffered, viewID, transform.position); } }
@RPC function SpawnBox (viewID : NetworkViewID, location : Vector3) { // Instantate the prefab locally var clone : Transform; clone = Instantiate(cubePrefab, location, Quaternion.identity) as Transform; var nView : NetworkView; nView = clone.GetComponent.<NetworkView>(); nView.viewID = viewID; }
using UnityEngine; using System.Collections;
public class ExampleClass : MonoBehaviour { public Transform cubePrefab; public NetworkView nView; void Start() { nView = GetComponent<NetworkView>(); } void OnGUI() { if (GUILayout.Button("SpawnBox")) { NetworkViewID viewID = Network.AllocateViewID(); nView.RPC("SpawnBox", RPCMode.AllBuffered, viewID, transform.position); } } [RPC] void SpawnBox(NetworkViewID viewID, Vector3 location) { Transform clone; clone = Instantiate(cubePrefab, location, Quaternion.identity) as Transform as Transform; NetworkView nView; nView = clone.GetComponent<NetworkView>(); nView.viewID = viewID; } }
特定のプレイヤーに RPC 関数を呼び出します。