对象池

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Assets.Script.nn;

/// <summary>
/// 卡牌池
/// </summary>
public class CardPool:MonoBehaviour
{
    static Stack<GameObject> objectPool = new Stack<GameObject>();
    
    /// <summary>
    /// 清空池子
    /// </summary>
    public static void Clear()
    {
        objectPool.Clear();

        foreach(GameObject go in objectPool)
        {
            Destroy(go);
        }
    }
    /// <summary>
    ////// </summary>
    /// <returns></returns>
    public static GameObject Pop()
    {
        if (objectPool.Count == 0)
        {
            GameObject newcard = Instantiate(Resources.Load<GameObject>("nn/3DCard/Card"));

            objectPool.Push(newcard);
        }

        GameObject card = objectPool.Pop();
        card.SetActive(true);
        card.transform.position = Vector3.zero;
        return card;
    }

    /// <summary>
    ////// </summary>
    /// <param name="obj"></param>
    public static void Release(GameObject obj)
    {
        if (objectPool.Contains(obj))
            throw new System.Exception("对象已经放入池内!");
        objectPool.Push(obj);
        obj.GetComponent<Assets.Script.nn.Card>().ResetCardState();
        obj.SetActive(false);
        obj.transform.localScale = new Vector3(0.7f,0.7f,0.7f);

    }

}

 

posted @ 2018-01-19 11:07  cz夏花  阅读(147)  评论(0编辑  收藏  举报