Exemplo n.º 1
0
 private void _RecycleGameObject(GameObject pooledGameObject, bool setIsInit)
 {
     if (pooledGameObject != null)
     {
         CPooledGameObjectScript component = pooledGameObject.GetComponent <CPooledGameObjectScript>();
         if (component != null)
         {
             Queue <CPooledGameObjectScript> queue = null;
             if (this.m_pooledGameObjectMap.TryGetValue(component.m_prefabKey, out queue))
             {
                 queue.Enqueue(component);
                 component.OnRecycle();
                 component.gameObject.transform.SetParent(this.m_poolRoot.transform, true);
                 component.m_isInit = setIsInit;
                 return;
             }
         }
         UnityEngine.Object.Destroy(pooledGameObject);
     }
 }
Exemplo n.º 2
0
    private GameObject GetGameObject(string prefabFullPath, Vector3 pos, Quaternion rot, bool useRotation, enResourceType resourceType, out bool isInit)
    {
        string key = CFileManager.EraseExtension(prefabFullPath).ToLower();
        Queue <CPooledGameObjectScript> queue = null;

        if (!this.m_pooledGameObjectMap.TryGetValue(key, out queue))
        {
            queue = new Queue <CPooledGameObjectScript>();
            this.m_pooledGameObjectMap.Add(key, queue);
        }
        CPooledGameObjectScript script = null;

        while (queue.Count > 0)
        {
            script = queue.Dequeue();
            if ((script != null) && (script.gameObject != null))
            {
                script.gameObject.transform.SetParent(null, true);
                script.gameObject.transform.position   = pos;
                script.gameObject.transform.rotation   = rot;
                script.gameObject.transform.localScale = script.m_defaultScale;
                break;
            }
            script = null;
        }
        if (script == null)
        {
            script = this.CreateGameObject(prefabFullPath, pos, rot, useRotation, resourceType, key);
        }
        if (script == null)
        {
            isInit = false;
            return(null);
        }
        isInit = script.m_isInit;
        script.gameObject.SetActive(true);
        this.HandlePooledMonoBehaviour(script.m_pooledMonoBehaviours, enPooledMonoBehaviourAction.Get);
        return(script.gameObject);
    }
    private GameObject GetGameObject(string prefabFullPath, Vector3 pos, Quaternion rot, bool useRotation, enResourceType resourceType, out bool isInit)
    {
        string text = CFileManager.EraseExtension(prefabFullPath);
        Queue <CPooledGameObjectScript> queue = null;

        if (!this.m_pooledGameObjectMap.TryGetValue(text.JavaHashCodeIgnoreCase(), out queue))
        {
            queue = new Queue <CPooledGameObjectScript>();
            this.m_pooledGameObjectMap.Add(text.JavaHashCodeIgnoreCase(), queue);
        }
        CPooledGameObjectScript cPooledGameObjectScript = null;

        while (queue.get_Count() > 0)
        {
            cPooledGameObjectScript = queue.Dequeue();
            if (cPooledGameObjectScript != null && cPooledGameObjectScript.gameObject != null)
            {
                cPooledGameObjectScript.gameObject.transform.SetParent(null, true);
                cPooledGameObjectScript.gameObject.transform.position   = pos;
                cPooledGameObjectScript.gameObject.transform.rotation   = rot;
                cPooledGameObjectScript.gameObject.transform.localScale = cPooledGameObjectScript.m_defaultScale;
                break;
            }
            cPooledGameObjectScript = null;
        }
        if (cPooledGameObjectScript == null)
        {
            cPooledGameObjectScript = this.CreateGameObject(prefabFullPath, pos, rot, useRotation, resourceType, text);
        }
        if (cPooledGameObjectScript == null)
        {
            isInit = false;
            return(null);
        }
        isInit = cPooledGameObjectScript.m_isInit;
        cPooledGameObjectScript.OnGet();
        return(cPooledGameObjectScript.gameObject);
    }