private CManagerPooling_InResources <ETestPoolingObjectName, TestPoolingObject> InitGeneratePoolingTest()
        {
            TestPoolingObject.g_mapActiveCount = new Dictionary <ETestPoolingObjectName, int>()
            {
                { ETestPoolingObjectName.Test1, 0 }, { ETestPoolingObjectName.Test2, 0 }, { ETestPoolingObjectName.Test3, 0 }
            };

            List <GameObject> listObjectPooling = new List <GameObject>();

            for (int i = 0; i < 3; i++)
            {
                ETestPoolingObjectName eTest = (ETestPoolingObjectName)i;
                GameObject             pObjectOrigin_Test = new GameObject(eTest.ToString());
                pObjectOrigin_Test.gameObject.SetActive(false);
                pObjectOrigin_Test.AddComponent <TestPoolingObject>().eTestType = eTest;
                listObjectPooling.Add(pObjectOrigin_Test.gameObject);
            }

            CManagerPooling_InResources <ETestPoolingObjectName, TestPoolingObject> pPoolingManager = CManagerPooling_InResources <ETestPoolingObjectName, TestPoolingObject> .instance;

            pPoolingManager.DoInitPoolingObject(listObjectPooling);

            pPoolingManager.p_EVENT_OnMakeResource -= PPoolingManager_p_EVENT_OnMakeResource;
            pPoolingManager.p_EVENT_OnPopResource  -= PPoolingManager_p_EVENT_OnPopResource;
            pPoolingManager.p_EVENT_OnPushResource -= PPoolingManager_p_EVENT_OnPushResource;

            return(pPoolingManager);
        }
        public IEnumerator Working_Test()
        {
            // 풀링 매니져를 Init합니다.
            CManagerPooling_InResources <ETestPoolingObjectName, TestPoolingObject> pPoolingManager = InitGeneratePoolingTest();

            Assert.AreEqual(0, TestPoolingObject.g_mapActiveCount[ETestPoolingObjectName.Test1]);
            Assert.AreEqual(0, TestPoolingObject.g_mapActiveCount[ETestPoolingObjectName.Test2]);

            List <GameObject> listObjectPooling = new List <GameObject>();

            for (int i = 0; i < 10; i++)
            {
                listObjectPooling.Add(pPoolingManager.DoPop(ETestPoolingObjectName.Test1).gameObject);
            }
            Assert.AreEqual(10, TestPoolingObject.g_mapActiveCount[ETestPoolingObjectName.Test1]);

            for (int i = 0; i < 10; i++)
            {
                pPoolingManager.DoPush(listObjectPooling[i].GetComponent <TestPoolingObject>());
            }
            Assert.AreEqual(0, TestPoolingObject.g_mapActiveCount[ETestPoolingObjectName.Test1]);

            listObjectPooling.Clear();
            for (int i = 0; i < 5; i++)
            {
                listObjectPooling.Add(pPoolingManager.DoPop(ETestPoolingObjectName.Test2).gameObject);
            }
            Assert.AreEqual(5, TestPoolingObject.g_mapActiveCount[ETestPoolingObjectName.Test2]);

            pPoolingManager.DoPushAll();
            Assert.AreEqual(0, TestPoolingObject.g_mapActiveCount[ETestPoolingObjectName.Test2]);

            yield break;
        }
Пример #3
0
    /* public - [Event] Function
     * 프랜드 객체가 호출                       */

    // ========================================================================== //

    /* protected - [abstract & virtual]         */

    /* protected - [Event] Function
     * 자식 객체가 호출                         */

    /* protected - Override & Unity API         */

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

        _pManagerPooling = CManagerPooling_InResources <string, CEffect> .instance;
        _pManagerPooling.DoInitPoolingObject("Effect");
        _pManagerPooling.p_EVENT_OnPopResource += _pManagerPooling_p_EVENT_OnPopResource;
    }
        public IEnumerator Event_Test()
        {
            g_mapMakeCount = new Dictionary <ETestPoolingObjectName, int>()
            {
                { ETestPoolingObjectName.Test3, 0 }
            };
            g_mapPopCount = new Dictionary <ETestPoolingObjectName, int>()
            {
                { ETestPoolingObjectName.Test3, 0 }
            };
            g_mapPushCount = new Dictionary <ETestPoolingObjectName, int>()
            {
                { ETestPoolingObjectName.Test3, 0 }
            };
            CManagerPooling_InResources <ETestPoolingObjectName, TestPoolingObject> pPoolingManager = InitGeneratePoolingTest();

            pPoolingManager.p_EVENT_OnMakeResource += PPoolingManager_p_EVENT_OnMakeResource;
            pPoolingManager.p_EVENT_OnPopResource  += PPoolingManager_p_EVENT_OnPopResource;
            pPoolingManager.p_EVENT_OnPushResource += PPoolingManager_p_EVENT_OnPushResource;

            int iTotalMakeCount = Random.Range(15, 50);

            for (int i = 0; i < iTotalMakeCount; i++)
            {
                pPoolingManager.DoPop(ETestPoolingObjectName.Test3);
            }

            Assert.AreEqual(g_mapMakeCount[ETestPoolingObjectName.Test3], iTotalMakeCount);
            Assert.AreEqual(g_mapPopCount[ETestPoolingObjectName.Test3], iTotalMakeCount);
            Assert.AreEqual(g_mapPushCount[ETestPoolingObjectName.Test3], 0);

            pPoolingManager.DoPushAll();

            Assert.AreEqual(g_mapMakeCount[ETestPoolingObjectName.Test3], iTotalMakeCount);
            Assert.AreEqual(g_mapPopCount[ETestPoolingObjectName.Test3], iTotalMakeCount);
            Assert.AreEqual(g_mapPushCount[ETestPoolingObjectName.Test3], iTotalMakeCount);

            for (int i = 0; i < iTotalMakeCount; i++)
            {
                pPoolingManager.DoPop(ETestPoolingObjectName.Test3);
            }

            Assert.AreEqual(g_mapMakeCount[ETestPoolingObjectName.Test3], iTotalMakeCount);
            Assert.AreEqual(g_mapPopCount[ETestPoolingObjectName.Test3], iTotalMakeCount * 2);
            Assert.AreEqual(g_mapPushCount[ETestPoolingObjectName.Test3], iTotalMakeCount);

            pPoolingManager.DoPushAll();

            Assert.AreEqual(g_mapMakeCount[ETestPoolingObjectName.Test3], iTotalMakeCount);
            Assert.AreEqual(g_mapPopCount[ETestPoolingObjectName.Test3], iTotalMakeCount * 2);
            Assert.AreEqual(g_mapPushCount[ETestPoolingObjectName.Test3], iTotalMakeCount * 2);

            yield break;
        }
        void Start()
        {
            _pManagerPool_Bullet = CManagerPooling_InResources <Pooling_BulletTest.ProjectileModel, Pooling_BulletTest> .instance;
            _pManagerPool_Bullet.DoInitPoolingObject("PoolingTest_Bullet");

            _pManagerPool_Bullet.p_EVENT_OnMakeResource += _pManagerPool_Bullet_p_EVENT_OnMakeResource;
            _pManagerPool_Bullet.p_EVENT_OnPopResource  += _pManagerPool_Bullet_p_EVENT_OnPopResource;
            _pManagerPool_Bullet.DoStartPooling(new List <Pooling_BulletTest.ProjectileModel>()
            {
                Pooling_BulletTest.ProjectileModel.Blue, Pooling_BulletTest.ProjectileModel.Red
            }, 10);
        }