public static void RegisterPrefab (GameObject prefab);
public static void RegisterPrefab (GameObject prefab, Networking.SpawnDelegate spawnHandler, Networking.UnSpawnDelegate unspawnHandler);
public static void RegisterPrefab (GameObject prefab, Networking.NetworkHash128 newAssetId);

参数

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.