プレハブをインスタンス化します
特定のプレハブが、ゲームのすべてのクライアント上でインスタンス化されます。同期は自動で設定されているので余計な作業は必要ありません。
位置、角度、ネットワークグループ番号がパラメーターとして渡されます。
下記の例で、エディターの playerPrefab に何かしら設定されている必要があることに注意してください。インスタンス化に関してより詳しく知りたい場合は、オブジェクトのリファレンス Object.Instantiate. をご参照ください。
内部的にはこれは、バッファリングされた RPC の呼び出しです。
Network.RemoveRPCs とグループ番号を使用して、バッファから呼び出しを削除することができます。あるいは、インスタンス化されたプレハブ内の最初の NetworkViewID に Network.RemoveRPCs を呼び出すことも可能です。
これが可能になるのは、内部でインスタンス化が行われると、バッファリングされた RPC メッセージが
プレハブ内の最初の NetworkView に紐付けされるためです。
// Immediately instantiate new connected player's character // when successfully connected to the server.
var playerPrefab : Transform; function OnConnectedToServer () { Network.Instantiate(playerPrefab, transform.position, transform.rotation, 0); }
using UnityEngine; using System.Collections;
public class ExampleClass : MonoBehaviour { public Transform playerPrefab; void OnConnectedToServer() { Network.Instantiate(playerPrefab, transform.position, transform.rotation, 0); } }
以下の例では RPC バッファからインスタンス化を削除しています。
var nView: NetworkView;
function Start() { nView = GetComponent.<NetworkView>(); }
// Immediately destroy and remove RPC for network instantiated object // (script attached to prefab) function OnNetworkInstantiate(info: NetworkMessageInfo) { Debug.Log(nView.viewID + " spawned"); if (Network.isServer) { Network.RemoveRPCs(nView.viewID); Network.Destroy(gameObject); } }
using UnityEngine; using System.Collections;
public class ExampleClass : MonoBehaviour { public NetworkView nView; void Start() { nView = GetComponent<NetworkView>(); } void OnNetworkInstantiate(NetworkMessageInfo info) { Debug.Log(nView.viewID + " spawned"); if (Network.isServer) { Network.RemoveRPCs(nView.viewID); Network.Destroy(gameObject); } } }