Beispiel #1
0
        public IEnumerator CreateNGetNReturnAction()
        {
            InitailizeObjectPool();

            Action <GameObject> onCreate = (x) =>
            {
                x.AddComponent <TestRunnerGameObject>();
            };
            Action <GameObject> onGet = (x) =>
            {
                TestRunnerGameObject tro = x.GetComponent <TestRunnerGameObject>();
                tro.TestInt = 30;
            };
            Action <GameObject> onReturn = (x) =>
            {
                TestRunnerGameObject tro = x.GetComponent <TestRunnerGameObject>();
                tro.TestInt = -30;
            };

            objectPool.OnCreate = onCreate;
            objectPool.OnGet    = onGet;
            objectPool.OnReturn = onReturn;

            objectPool.Initialize(config.initialize_prefab, config.initialize_count);

            GameObject           poolObject       = objectPool.Get();
            TestRunnerGameObject testRunnerObject = poolObject.GetComponent <TestRunnerGameObject>();

            Assert.IsTrue(testRunnerObject != null);
            Assert.AreEqual(testRunnerObject.TestInt, 30);

            objectPool.Return(poolObject);
            Assert.AreEqual(testRunnerObject.TestInt, -30);

            for (int i = 0; i < config.initialize_count + 1; i++)
            {
                objectPool.Get();
            }
            Assert.AreEqual(config.initialize_count + 1, objectPool.Count);

            yield return(null);
        }
Beispiel #2
0
        public IEnumerator Each()
        {
            InitailizeObjectPool();

            Action <GameObject> onCreate = (x) =>
            {
                TestRunnerGameObject tro = x.AddComponent <TestRunnerGameObject>();
                tro.TestInt = 10;
            };

            objectPool.OnCreate = onCreate;
            objectPool.Initialize(config.initialize_prefab, config.initialize_count);

            objectPool.Get();

            TestRunnerHelper.testInt = 0;
            objectPool.Each(x =>
            {
                TestRunnerGameObject tro  = x.GetComponent <TestRunnerGameObject>();
                TestRunnerHelper.testInt += tro.TestInt;
            });
            Assert.AreEqual(TestRunnerHelper.testInt, 10);

            TestRunnerHelper.testInt = 0;
            objectPool.EachForUnUse(x =>
            {
                TestRunnerGameObject tro  = x.GetComponent <TestRunnerGameObject>();
                TestRunnerHelper.testInt += tro.TestInt;
            });
            Assert.AreEqual(TestRunnerHelper.testInt, 20);

            TestRunnerHelper.testInt = 0;
            objectPool.EachForAll(x =>
            {
                TestRunnerGameObject tro  = x.GetComponent <TestRunnerGameObject>();
                TestRunnerHelper.testInt += tro.TestInt;
            });
            Assert.AreEqual(TestRunnerHelper.testInt, 30);
            yield return(null);
        }