ObjectPool
来源:互联网 发布:淘宝主营类目占比 编辑:程序博客网 时间:2024/06/05 03:04
using System.Collections;using System.Collections.Generic;using UnityEngine;public class ObjectPool :SingletonByMono<ObjectPool> { private static Dictionary<string, ArrayList> pool = new Dictionary<string, ArrayList> (); public Object ReturnStorage(GameObject go) { string key = go.gameObject.name; if(pool.ContainsKey (key)) { pool[key].Add (go); } else { pool [key] = new ArrayList (){go}; } go.SetActive (false); return go; } public Object Get(GameObject prefab,Vector3 position,Quaternion quaternion) { string key = prefab.name + "(Clone)"; Object o; if(pool.ContainsKey (key)&&pool[key].Count>0) { ArrayList list = pool [key]; o = list [0] as Object; list.RemoveAt(0); (o as GameObject).SetActive (true); (o as GameObject).transform.position = position; (o as GameObject).transform.rotation = quaternion; } else { o = Instantiate (prefab, position, quaternion); } return o; } public void WaitToReturn(GameObject go,float waitTime) { StartCoroutine (ReturnToPool(go,waitTime)); } IEnumerator ReturnToPool(GameObject go ,float waitTime) { yield return new WaitForSeconds (waitTime); ReturnStorage (go); }}
using System.Collections;using System.Collections.Generic;using UnityEngine;public class ObjectPool :SingletonByMono<ObjectPool> {private static Dictionary<string, ArrayList> pool = new Dictionary<string, ArrayList> ();public Object ReturnStorage(GameObject go){string key = go.gameObject.name;if(pool.ContainsKey (key)){pool[key].Add (go);}else{pool [key] = new ArrayList (){go};}go.SetActive (false);return go;}public Object Get(GameObject prefab,Vector3 position,Quaternion quaternion){string key = prefab.name + "(Clone)";Object o;if(pool.ContainsKey (key)&&pool[key].Count>0){ArrayList list = pool [key];o = list [0] as Object;list.RemoveAt(0);(o as GameObject).SetActive (true);(o as GameObject).transform.position = position;(o as GameObject).transform.rotation = quaternion;}else{o = Instantiate (prefab, position, quaternion);}return o;}public void WaitToReturn(GameObject go,float waitTime){StartCoroutine (ReturnToPool(go,waitTime));}IEnumerator ReturnToPool(GameObject go ,float waitTime){yield return new WaitForSeconds (waitTime);ReturnStorage (go);}}
using System.Collections;using System.Collections.Generic;using UnityEngine;public class ObjectPool :SingletonByMono<ObjectPool> {private static Dictionary<string, ArrayList> pool = new Dictionary<string, ArrayList> ();public Object ReturnStorage(GameObject go){string key = go.gameObject.name;if(pool.ContainsKey (key)){pool[key].Add (go);}else{pool [key] = new ArrayList (){go};}go.SetActive (false);return go;}public Object Get(Vector3 position, Quaternion quaternion,GameObject prefab = null,string prefabName=null,string prefabPath=null){string key;if(prefab){key = prefab.name + "(Clone)";}else if(prefabName!=null){key = prefabName + "(Clone)";}else{key = "";}Object o=null;if(pool.ContainsKey (key)&&pool[key].Count>0){ArrayList list = pool [key];o = list [0] as Object;list.RemoveAt(0);(o as GameObject).SetActive (true);(o as GameObject).transform.position = position;(o as GameObject).transform.rotation = quaternion;}else{if(prefab){o = Instantiate (prefab, position, quaternion);}else if(prefabPath!=null){o = Instantiate (Resources.Load (prefabPath), position, quaternion);}}return o;}public void WaitToReturn(GameObject go,float waitTime){StartCoroutine (ReturnToPool(go,waitTime));}IEnumerator ReturnToPool(GameObject go ,float waitTime){yield return new WaitForSeconds (waitTime);ReturnStorage (go);}}
阅读全文
0 0
- ObjectPool
- ObjectPool
- ObjectPool
- ObjectPool
- Specific Type ObjectPool
- ObjectPool 对象池程序
- java对象池ObjectPool
- java对象池ObjectPool
- PoolableObjectFactory和ObjectPool
- Unity 内存管理之 ObjectPool
- Unity 内存管理之 ObjectPool
- Unity 对象池之ObjectPool
- commons-pool实战之 PoolableObjectFactory和ObjectPool
- Unity优化之ObjectPool-关于初始化
- commons-pool实战之 PoolableObjectFactory、ObjectPool、 KeyedPoolableObjectFactory......
- Unity3d中对象池(ObjectPool)的实现
- Build your own ObjectPool in Java to boost app speed
- 什么情况下应该使用对象池(ObjectPool)
- java基础
- 关于 Java 打包工具 jar 的接口形参名称丢失问题
- 7个知识点快速入门,Web前端初学者必备
- springboot(九):定时任务
- MTK-CAMERA
- ObjectPool
- Web页面显示{ wtf.quick_form() }(关键词:flask/bug)
- fridge11_29(抽象类和接口区别)
- ViewPager 无限循环。
- nginx的一般优化
- html5 5+sdk 接入问题
- 干货 | 高盛:2017人工智能报告中文版(附PDF版下载)
- linux的变量、判断、重复操作
- LeakCanary检测内存泄漏,BlockCanary优化代码结构