初始化

This commit is contained in:
2025-12-11 16:40:24 +08:00
commit f8947c6c27
149 changed files with 18871 additions and 0 deletions
+80
View File
@@ -0,0 +1,80 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PoolData
{
public GameObject fatherObj;
public List<GameObject> poolList;
public PoolData(GameObject obj,GameObject poolParent)
{
fatherObj = new GameObject(obj.name);
fatherObj.transform.parent = poolParent.transform;
poolList = new List<GameObject>();
PushObj(obj);
}
public void PushObj(GameObject obj)
{
poolList.Add(obj);
obj.transform.parent = fatherObj.transform;
obj.SetActive(false);
}
public GameObject GetObj()
{
GameObject obj;
obj = poolList[0];
poolList.RemoveAt(0);
obj.SetActive(true);
obj.transform.parent = null;
return obj;
}
}
public class Pool : Singleton<Pool>
{
public Dictionary<string, PoolData> dic = new Dictionary<string, PoolData>();//生成一个字典
private GameObject poolObj;//Scene窗口中的“pool”总收纳盒
public GameObject Get(string name, Vector3 position, Quaternion rotation)//返回一个预制体,
{
GameObject obj;
if (dic.ContainsKey(name) && dic[name].poolList.Count > 0)//如果字典里有这个东西,并且它的数量大于0就取出来
{
obj = dic[name].GetObj();
obj.transform.position = position;//实例化时候的参数传过来
obj.transform.rotation = rotation;//同上
}
else
{
obj = Object.Instantiate(Resources.Load(name), position, rotation) as GameObject;//没有就读取一个,不用存入字典
obj.name = name;
}
return obj;
}
public GameObject Return(GameObject obj)//隐藏掉
{
if(obj.activeSelf)
{
if(poolObj==null)
{
poolObj = new GameObject("pool");
}
string name = obj.name;
if (dic.ContainsKey(name))//如果找到了这个名字
{
dic[name].PushObj(obj);
}
else
{
dic.Add(name, new PoolData(obj, poolObj) { });
}
}
return obj;
}
public void Clear()//切换场景时将所有缓存清除
{
dic.Clear();
poolObj = null;
}
}