Version: 2017.3

ClientScene.RegisterPrefab

切换到手册
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.