Пример #1
0
        /// <summary>
        /// Spawns GameObject from first pool containing given prefab, creates new pool, or instantiates
        /// </summary>
        /// <param name="prefab">GameObject to Spawn</param>
        /// <param name="autoCreatePool">false = Instantiate Object</param>
        /// <returns></returns>
        public static GameObject Spawn(GameObject prefab, Vector3 localPosition, Quaternion localRotation, Vector3 localScale, bool autoCreatePool = true)
        {
            GameObject go = null;

            foreach (var pool in Instance.Pools)
            {
                if (pool.Uses(prefab))
                {
                    go = pool.Spawn(localPosition, localRotation, localScale);
                    pool.AfterSpawn(go);
                    return(go);
                }
            }
            if (autoCreatePool)
            {
                SimplePool newPool = CreatePool(prefab);
                go = newPool.Spawn(localPosition, localRotation, localScale);
                newPool.AfterSpawn(go);
            }
            else
            {
                go = GameObject.Instantiate <GameObject>(prefab);
                go.SetActive(true);
                go.SendMessage("OnSpawn", SendMessageOptions.DontRequireReceiver);
            }
            return(go);
        }
Пример #2
0
        //Overloads with different parameters
        public static GameObject Spawn(GameObject prefab, Vector3 position)
        {
            GameObject go = null;

            foreach (var pool in Instance.Pools)
            {
                if (pool.Uses(prefab))
                {
                    go = pool.Spawn(position);
                    pool.AfterSpawn(go);
                    return(go);
                }
            }
            SimplePool newPool = CreatePool(prefab);

            go = newPool.Spawn(position);
            newPool.AfterSpawn(go);
            return(go);
        }