Ejemplo n.º 1
0
    private GameObject SpawnObject(GameObject pObjectOriginal, Vector3 vecPosition, Quaternion rotRotation)
    {
        if (pObjectOriginal == null)
        {
            Debug.LogError(name + " SpawnObject Error - pObjectOriginal == null", this);
            return(null);
        }

        GameObject pObjectCopy = null;

#if UNITY_EDITOR
        if (Application.isPlaying == false)
        {
            pObjectCopy = PrefabUtility.InstantiatePrefab(pObjectOriginal) as GameObject;
            if (pObjectCopy == null)
            {
                pObjectCopy      = GameObject.Instantiate(pObjectOriginal);
                pObjectCopy.name = pObjectOriginal.name;
            }
        }
#endif

        if (pObjectCopy == null)
        {
            pObjectCopy = CManagerPooling_Component <Transform> .instance.DoPop(pObjectOriginal.transform).gameObject;

            CSpawnedObject pSpawnedObject = pObjectCopy.GetComponent <CSpawnedObject>();
            if (pSpawnedObject == null)
            {
                pSpawnedObject = pObjectCopy.AddComponent <CSpawnedObject>();
            }
            pSpawnedObject.DoInit(this);
        }

        if (pObjectCopy == null)
        {
            return(null);
        }

        if (gameObject.activeSelf)
        {
            pObjectCopy.transform.SetParent(transform);
            pObjectCopy.transform.position = vecPosition;
            pObjectCopy.transform.rotation = rotRotation;
            pObjectCopy.SetActive(true);
        }

        p_listSpawnedObject.Add(pObjectCopy);
        OnSpawnObject(pObjectCopy);

        return(pObjectCopy);
    }
Ejemplo n.º 2
0
 public void Event_OnReturnSpawnObject(CSpawnedObject pSpawnedObject)
 {
     p_listSpawnedObject.Remove(pSpawnedObject.gameObject);
 }