Ejemplo n.º 1
0
    // ========================== [ Division ] ========================== //

    protected override void OnAwake()
    {
        base.OnAwake();

        if (_bAutoPoolingOnAwake == false)
        {
            return;
        }

        List <int> listResourceNameInt             = _mapResourceOrigin.Keys.ToList();
        List <ENUM_RESOURCE_NAME> listResourceName = listResourceNameInt.ConvertEnumList <ENUM_RESOURCE_NAME>();

        for (int i = 0; i < _mapResourceOrigin.Count; i++)
        {
            List <SPoolingObject> listPoolingInstance = new List <SPoolingObject>();
            ENUM_RESOURCE_NAME    eResourceName       = listResourceName[i];
            int iPoolingCount = OnGetPoolingCount(eResourceName);
            for (int j = 0; j < iPoolingCount; j++)
            {
                RESOURCE pResource = MakeResource(eResourceName);
                pResource.name += j;
                SPoolingObject pPoolingObj = new SPoolingObject(pResource);
                listPoolingInstance.Add(pPoolingObj);
                _listInstanceAll.Add(pPoolingObj);
            }
            _mapPoolingInstance.Add(eResourceName, listPoolingInstance);
        }

        OnInitManager();
    }
Ejemplo n.º 2
0
    private void ProcReturnResource(SPoolingObject sPoolingObj)
    {
        RESOURCE pResource = sPoolingObj.pResource;

        OnReturnResource(ref pResource);
        pResource.gameObject.SetActive(false);
        sPoolingObj.bEnable = false;

        if (pResource.transform.parent != transform)
        {
            pResource.transform.SetParent(transform);
        }
    }
Ejemplo n.º 3
0
    /// <summary>
    /// Enum형태의 리소스 이름의 List에 있는 오브젝트만 풀링을 위해 오브젝트를 새로 생성합니다.
    /// </summary>
    /// <param name="listRequestPooling">풀링할 Enum 형태의 리소스 리스트</param>
    public void DoStartPooling(List <ENUM_RESOURCE_NAME> listRequestPooling)
    {
        for (int i = 0; i < listRequestPooling.Count; i++)
        {
            List <SPoolingObject> listPoolingInstance = new List <SPoolingObject>();
            ENUM_RESOURCE_NAME    eResourceName       = listRequestPooling[i];
            int iPoolingCount = OnGetPoolingCount(eResourceName);
            for (int j = 0; j < iPoolingCount; j++)
            {
                RESOURCE pResource = MakeResource(eResourceName);
                pResource.name += j;
                SPoolingObject pPoolingObj = new SPoolingObject(pResource);
                listPoolingInstance.Add(pPoolingObj);
                _listInstanceAll.Add(pPoolingObj);
            }
            _mapPoolingInstance.Add(eResourceName, listPoolingInstance);
        }

        OnInitManager();
    }
Ejemplo n.º 4
0
    // ========================== [ Division ] ========================== //

    /// <summary>
    /// 현재 사용하지 않는 오브젝트를 얻습니다. 주의) 사용후 반드시 Return 바람
    /// </summary>
    /// <param name="eResourceName">Enum형태의 리소스 이름</param>
    /// <returns></returns>
    public RESOURCE DoGetResource_Disable(ENUM_RESOURCE_NAME eResourceName, bool bGameObjectActive = true)
    {
        RESOURCE pFindResource = null;

        if (_mapPoolingInstance.ContainsKey(eResourceName) == false)
        {
            _mapPoolingInstance.Add(eResourceName, new List <SPoolingObject>());
        }

        List <SPoolingObject> listPoolingObject = _mapPoolingInstance[eResourceName];

        for (int i = 0; i < listPoolingObject.Count; i++)
        {
            if (listPoolingObject[i].bEnable == false)
            {
                listPoolingObject[i].bEnable = true;
                pFindResource = listPoolingObject[i].pResource;
                break;
            }
        }

        if (pFindResource == null)
        {
            pFindResource       = MakeResource(eResourceName);
            pFindResource.name += listPoolingObject.Count;
            SPoolingObject pPoolingObj = new SPoolingObject(pFindResource);
            pPoolingObj.bEnable = true;
            listPoolingObject.Add(pPoolingObj);
            _listInstanceAll.Add(pPoolingObj);
        }

        OnGetResource_Disable(eResourceName, ref pFindResource);

        pFindResource.gameObject.SetActive(bGameObjectActive);

        return(pFindResource);
    }