示例#1
0
            GateSpace.Gate GetRandomGate()
            {
                Pool <GateSpace.Gate> pool = Utility.GetRandomElementFromQueue <Pool <GateSpace.Gate> >(_gatePools); //shuffle queues so we wom't get same pattern of spawning

                GateSpace.Gate myGate = pool.Allocate();
                void handler(object sender, EventArgs e)
                {
                    pool.Release(myGate);
                    myGate.Death -= handler;
                }

                myGate.Death += handler;
                _gatePools.Enqueue(pool);
                return(myGate);
            }
示例#2
0
            void InstantiateMainRoadElement()
            {
                Road road = _roadPool.Allocate();

                void handler(object sender, EventArgs e)
                {
                    _roadPool.Release(road);
                    road.Death -= handler;
                    SpawnRoad();
                }

                road.Death += handler;
                road.transform.position = _nextBlockPosition;
                GateSpace.Gate gate = GetRandomGate(); //we allow road to pick its gate on it's own
                road.Init(gate);
            }