using System.Collections;
|
using System.Collections.Generic;
|
using UnityEngine;
|
using vnxbqy.UI;
|
|
public class DropItemPool
|
{
|
static Dictionary<int, GameObjectPoolManager.GameObjectPool> dropItemPools = new Dictionary<int, GameObjectPoolManager.GameObjectPool>();
|
|
public static DropItem RequireDropItem(DropItemType _type)
|
{
|
GameObjectPoolManager.GameObjectPool pool = null;
|
var poolKey = (int)_type;
|
if (!dropItemPools.ContainsKey(poolKey))
|
{
|
var prefab = UILoader.LoadPrefab(StringUtility.Contact("DropItem_Pattern_", (int)_type));
|
if (prefab != null)
|
{
|
pool = GameObjectPoolManager.Instance.RequestPool(prefab);
|
dropItemPools[poolKey] = pool;
|
}
|
}
|
else
|
{
|
pool = dropItemPools[poolKey];
|
}
|
|
if (pool != null)
|
{
|
var instance = pool.Request();
|
var dropItem = instance.GetComponent<DropItem>();
|
dropItem.dropItemType = _type;
|
dropItem.SetActive(true);
|
return dropItem;
|
}
|
else
|
{
|
return null;
|
}
|
|
}
|
|
public static void ReycleDropItem(DropItem _dropItem)
|
{
|
var dropItemType = _dropItem.dropItemType;
|
GameObjectPoolManager.GameObjectPool pool;
|
if (dropItemPools.TryGetValue((int)dropItemType, out pool))
|
{
|
pool.Release(_dropItem.gameObject);
|
_dropItem.transform.SetParent(null);
|
_dropItem.SetActive(false);
|
}
|
}
|
|
|
static GameObjectPoolManager.GameObjectPool dropItemNamePool;
|
|
public static DropItemName RequireDropItemName()
|
{
|
if (dropItemNamePool == null)
|
{
|
var prefab = UILoader.LoadPrefab("DropItemName");
|
if (prefab != null)
|
{
|
dropItemNamePool = GameObjectPoolManager.Instance.RequestPool(prefab);
|
}
|
}
|
|
if (dropItemNamePool != null)
|
{
|
var instance = dropItemNamePool.Request();
|
instance.SetActive(true);
|
return instance.GetComponent<DropItemName>();
|
}
|
else
|
{
|
return null;
|
}
|
}
|
|
public static void ReycleDropItemName(DropItemName _dropItemName)
|
{
|
if (dropItemNamePool != null)
|
{
|
dropItemNamePool.Release(_dropItemName.gameObject);
|
_dropItemName.transform.SetParent(null);
|
_dropItemName.SetActive(false);
|
}
|
}
|
|
|
static GameObjectPoolManager.GameObjectPool dropTracePool;
|
|
public static DropItemTrace RequireDropItemTrace()
|
{
|
if (dropTracePool == null)
|
{
|
var prefab = UILoader.LoadPrefab("DropItemTrace");
|
if (prefab != null)
|
{
|
dropTracePool = GameObjectPoolManager.Instance.RequestPool(prefab);
|
}
|
}
|
|
if (dropTracePool != null)
|
{
|
var instance = dropTracePool.Request();
|
instance.SetActive(true);
|
return instance.GetComponent<DropItemTrace>();
|
}
|
else
|
{
|
return null;
|
}
|
}
|
|
public static void ReycleDropItemTrace(DropItemTrace _dropItemTrace)
|
{
|
if (dropTracePool != null)
|
{
|
dropTracePool.Release(_dropItemTrace.gameObject);
|
_dropItemTrace.transform.SetParent(null);
|
_dropItemTrace.SetActive(false);
|
}
|
}
|
|
}
|