Version: 2017.2

Network.Instantiate

切换到手册
public static Object Instantiate (Object prefab, Vector3 position, Quaternion rotation, int group);

描述

网络实例化预制件。

给定的预制件将在游戏中的所有客户端上实例化。同步将自动设置,因此无需额外的工作。 位置、旋转及网络组编号将通过参数指定。注意,下面的示例中, 必须在 Editor 中设置有玩家预制件。您可以进一步了解对象引用 Object.Instantiate 中实例化。

这在内部是一个缓冲的 RPC 调用。您可以通过组编号使用 Network.RemoveRPCs 从缓冲区删除调用。或者,您可以对实例化预制件中的第一个 NetworkViewID 调用 Network.RemoveRPCs。这种方式可行的原因是,在内部进行实例化时, 缓冲的 RPC 消息将链接至预制件的第一个 NetworkView。

using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour { public Transform playerPrefab; void OnConnectedToServer() { Network.Instantiate(playerPrefab, transform.position, transform.rotation, 0); } }

从 RPC 缓冲区删除实例化的示例:

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); } } }