示例#1
0
    /// <summary>
    /// Spawns an object from specified pool
    /// </summary>
    /// <param name="prefab">Pool name</param>
    /// <param name="pos">Target position</param>
    /// <param name="rot">Target rotation</param>
    /// <returns></returns>
    public static GameObject Spawn(GameObject prefab, Vector3 pos, Quaternion rot)
    {
        QuickPool targetPool = ObjectsPool.Instance.pools.Where(pool => pool.Prefab == prefab).FirstOrDefault();

        if (targetPool == null)
        {
            return(null);
        }

        GameObject obj = targetPool.GetItem();

        if (obj == null)
        {
            return(null);
        }

        obj.transform.position = pos;
        obj.transform.rotation = rot;

        if (ObjectsPool.Instance.spawnDespawnMessages)
        {
            obj.SendMessage("OnSpawn", SendMessageOptions.DontRequireReceiver);
        }
        return(obj);
    }
示例#2
0
    /// <summary>
    /// Spawns an object from specified pool
    /// </summary>
    /// <param name="name">Pool name</param>
    /// <param name="pos">Target position</param>
    /// <param name="rot">Target rotation</param>
    /// <returns></returns>
    public static GameObject Spawn(string name, Vector3 pos, Quaternion rot)
    {
        QuickPool targetPool = ObjectsPool.Instance.pools.Where(pool => pool.poolName == name).FirstOrDefault();

        if (targetPool == null)
        {
            return(null);
        }

        GameObject obj = targetPool.GetItem();

        if (obj == null)
        {
            if (ObjectsPool.Instance.debugMessages)
            {
                Debug.Log("No such object left");
            }
            return(null);
        }

        obj.SetActive(true);
        obj.transform.position = pos;
        obj.transform.rotation = rot;

        if (ObjectsPool.Instance.spawnDespawnMessages)
        {
            obj.SendMessage("OnSpawn", SendMessageOptions.DontRequireReceiver);
        }

        return(obj);
    }