Unity3d 为什么我的ClientScene.RegisterSpawnHandler不';不行?

Unity3d 为什么我的ClientScene.RegisterSpawnHandler不';不行?,unity3d,networking,spawn,unity-networking,Unity3d,Networking,Spawn,Unity Networking,我正在尝试生成父对象(没有网络标识)的子对象(具有网络标识)。所以我通过了预制房的孩子,它成功了。产卵工作得很好,但它不会经过我的产卵处理程序,无论是在服务器上还是在客户机上(“自定义产卵器”从来没有打印过)。因此,生成的对象只是子对象,因此父对象不与子对象在一起。在handler中,我试图为生成的对象创建父对象。以下是相关代码: public class CustomNetworkManager : NetworkManager{ public GameObject prefab; p

我正在尝试生成父对象(没有网络标识)的子对象(具有网络标识)。所以我通过了预制房的孩子,它成功了。产卵工作得很好,但它不会经过我的产卵处理程序,无论是在服务器上还是在客户机上(“自定义产卵器”从来没有打印过)。因此,生成的对象只是子对象,因此父对象不与子对象在一起。在handler中,我试图为生成的对象创建父对象。以下是相关代码:

 public class CustomNetworkManager : NetworkManager{

 public GameObject prefab;
 private void Awake()
 {
     ....
     ClientScene.RegisterPrefab(prefab.transform.GetChild(0).gameObject);
     var prefabAssetId = prefab.transform.GetChild(0).gameObject.GetComponent<NetworkIdentity().assetId;
     ClientScene.RegisterSpawnHandler(prefabAssetId , SpawnWithParent, UnSpawnWithParent);
 }

 public static void Spawn(GameObject prefab)
 {
     NetworkServer.Spawn(prefab);
 }

 public GameObject SpawnWithParent(Vector3 position, NetworkHash128 assetId)
 {
     print("custom spawner");
     var parent = Instantiate(new GameObject("parent"), position, Quaternion.identity);
     var chlid= Instantiate(prefab.transform.GetChild(0).gameObject);
     chlid.transform.position = parent.transform.position;
     chlid.transform.parent = parent.transform;

     return prefab.gameObject;
 }

 public void UnSpawnWithParent(GameObject spawned)
 {
     print("custom unspawner");
     spawned.SetActive(false);
 }
公共类CustomNetworkManager:NetworkManager{ 公共游戏对象预制; 私人空间 { .... RegisterPrefab(prefab.transform.GetChild(0.gameObject));
var prefactAssetId=prefact.transform.GetChild(0).gameObject.GetComponent所以我告诉自己,让我们先删除关于注册预置的行,然后再进行尝试,它实际上解决了这个问题!因此,如果您要使用spawnhandler系统,您似乎根本不应该注册特定的预置!因为某种原因,它会使系统混乱

所以我删除了这一行,它解决了这个问题:

**//ClientScene.RegisterPrefab(prefab.transform.GetChild(0).gameObject);**
请查看链接。如其所示:

当生成的对象不存在预设时(例如,当它们在运行时根据配置数据动态构造时),应该使用此选项

也许最好检查一下您是否需要此功能,或者RegisterRefab是否足够。 希望这有助于解决问题。 是RegisterRefab的链接