prefab | 将会生成的预制件。 |
spawnHandler | 在客户端用作自定义生成处理程序的方法。 |
unspawnHandler | 在客户端用作自定义取消生成处理程序的方法。 |
newAssetId | 分配给此预制件的 assetId。这允许为已知的资源 ID 注册一个动态创建的游戏对象。 |
通过 UNET 生成系统注册一个预制件。
当在服务器上使用 NetworkServer.SpawnObject() 生成 NetworkIdentity 对象,和使用 RegisterPrefab() 注册创建对象的预制件时,客户端将会使用该预制件实例化具有相同 netId 的相应客户端对象。
NetworkManager 拥有一系列可生成的预制件,它使用此函数来注册这些带有 ClientScene 的预制件。
当前可生成对象集合在 ClientScene 静态成员变量 ClientScene.prefabs 中可用,该变量是 NetworkAssetIds 和预制件引用的字典。
using UnityEngine; using UnityEngine.Networking;
public class PlantSpawner : NetworkBehaviour { public GameObject plantPrefab;
public override void OnStartClient() { ClientScene.RegisterPrefab(plantPrefab); }
[Server] public void ServerSpawnPlant(Vector3 pos, Quaternion rot) { var plant = (GameObject)Instantiate(plantPrefab, pos, rot); NetworkServer.Spawn(plant); } }
The optional custom spawn and un-spawn handler functions can be used to implement more advanced spawning strategies such as pbject pools.