1.对象池PoolManager

namespace kernal

{

public class PoolManager : MonoBehaviour

{

//“缓冲池”集合

public static Dictionary<string, Pools> PoolsArray = new Dictionary<string, Pools>();

// 加入“池”

public static void Add(Pools pool)

{

if (PoolsArray.ContainsKey(pool.name)) return;

PoolsArray.Add(pool.name, pool);

}

// 删除不用的

public static void DestroyAllInactive()

{

foreach (KeyValuePair<string, Pools> keyValue in PoolsArray)

{

keyValue.Value.DestoryUnused();

}

}

// 清空“池”

void OnDestroy()

{

PoolsArray.Clear();

}

}

}

2.对象池 内部类: 池时间

//[System.Serializable]

public class PoolTimeObject

{

public GameObject instance;

public float time;

}//PoolTimeObject.cs_end

}

3.对象池调用text01

public class text01 : MonoBehaviour

{

public Transform CubeTransform;

public GameObject Spheres;

private GameObject SpheressGameObject;

void Update ()

{

if (Input.GetKeyDown(KeyCode.A))

{

StartCoroutine(LoadParticalEffectInPool(0.1f, Spheres,CubeTransform.transform.position, CubeTransform.transform.rotation, null));

}

}

protected IEnumerator LoadParticalEffectInPool(float internalTime, GameObject goParEffPrefab, Vector3 VecParticalEffect, Quaternion QuaParticalEffect, Transform tranParent, AudioClip acAudioEffect = null)

{

//间隔时间

yield return new WaitForSeconds(internalTime);

//在缓冲池中,得到一个指定的预设“激活体”。

GameObject goParticalPrefab = PoolManager.PoolsArrayDictionary["Ssss"].GetGameObjectByPool(goParEffPrefab, VecParticalEffect, QuaParticalEffect);

if (tranParent != null)

{

goParticalPrefab.transform.parent = tranParent; //确定父节点

}

}

}

4.对象池对象删除Destorys

public class Destorys : MonoBehaviour {

public float FloRecoverTime = 1F;        //回收时间

public float SpeedSphere = 5;              //运动速度

private Rigidbody _rigidbody;              //对象池对象刚体

void Start()

{

_rigidbody = gameObject.GetComponent<Rigidbody>();

}

void Update()

{

_rigidbody.AddForce(Vector3.forward*SpeedSphere);

}

void OnEnable()

{

StartCoroutine("RecoverdGameObjectByTime");

}

void OnDisable()

{

StopCoroutine("RecoverdGameObjectByTime");

}

// 回收对象,根据指定的时间点

IEnumerator RecoverdGameObjectByTime()

{

yield return new WaitForSeconds(FloRecoverTime);

   PoolManager.PoolsArrayDictionary["Ssss"].RecoverGameObjectToPools(this.gameObject);

}

}

注:在对象池中的模型物体,使用时调用方法最好放在OnEnable中调用,在OnDisable中结束,回收时恢复最初状态,方便下次调用时出现的形态与自身属性。与之前对象池2(方法功能)Pools对象池1(方法功能)PoolOption联合使用。

对象池3(方法功能)PoolManager(控制)PoolTimeObject(时间管理)text01(调用)Destorys(销毁)的更多相关文章

  1. Unity实现”对象池管理器“

    前言:警告!这可能是坨屎,空闲时间写成,仅作娱乐 在Unity中生成或销毁一个物体会占用较大的资源,如果是制作FPS射击游戏,子弹生成更是雪上加霜.所以我自己写了一个PoolManager,不能和网上 ...

  2. 抓到 Netty 一个隐藏很深的内存泄露 Bug | 详解 Recycler 对象池的精妙设计与实现

    欢迎关注公众号:bin的技术小屋,如果大家在看文章的时候发现图片加载不了,可以到公众号查看原文 本系列Netty源码解析文章基于 4.1.56.Final版本 最近在 Review Netty 代码的 ...

  3. 通用对象池ObjectPool的一种简易设计和实现方案

    对象池,最简单直接的作用当然是通过池来减少创建和销毁对象次数,实现对象的缓存和复用.我们熟知的线程池.数据库连接池.TCP连接池等等都是非常典型的对象池. 一个基本的简易对象池的主要功能实现我认为应该 ...

  4. Java对象池技术的原理及其实现

    看到一片有关于java 对象基础知识,故转载一下,同时学习一下. 摘 要 本文在分析对象池技术基本原理的基础上,给出了对象池技术的两种实现方式.还指出了使用对象池技术时所应注意的问题. 关键词 对象池 ...

  5. Java堆外内存之一:堆外内存场景介绍(对象池VS堆外内存)

    最近经常有人问我在Java中使用堆外(off heap)内存的好处与用途何在.我想其他面临几样选择的人应该也会对这个答案感兴趣吧. 堆外内存其实并无特别之处.线程栈,应用程序代码,NIO缓存用的都是堆 ...

  6. 对象池2(方法功能)Pools

    对象池Pools(主要调用方法功能) namespace kernal { public class Pools : MonoBehaviour { [HideInInspector] public ...

  7. 对象池1(方法功能)PoolOption

    2.对象池PoolOption(方法功能) //单类型缓冲对象管理(单模池操作管理)功能: 激活.收回.预加载等. namespace kernal { [System.Serializable] p ...

  8. 对象回收过程?线程池执行过程? map原理?集合类关系?synchronized 和 volatile ? 同一个类的方法事务传播控制还有作用吗?java 锁

    1.  对象回收过程? 可达性分析算法: 如果一个对象从 GC Roots 不可达时,则证明此对象不可用. 通过一系列称为GC ROOTS的对象作为起点,从这些起点往下搜索,搜索走过的路径 称为引用链 ...

  9. 常量池与方法区以及又读new String对象创建问题

    又拿出这道String str1 = new String("abc");创建几个对象的面试题梳理了一下常量池与方法区的关系,希望能把这两者的关系通过这道面试题说明白 方法区是什么 ...

随机推荐

  1. Long-Polling, Websockets, SSE(Server-Sent Event), WebRTC 之间的区别与使用

    1.首先看下最简单的SSE: 只用支持SSE的浏览器(大部分)即可,浏览器内置EventSource对象,该对象默认隔三秒刷新一下response的数据. HTML代码(取自w3cschool): & ...

  2. [转]-webkit-overflow-scrolling:touch的应用

    -webkit-overflow-scrolling 用来控制元素在移动设备上是否使用滚动回弹效果. 在移动端上,在你用overflow-y:scorll属性的时候,你会发现滚动的效果很木,很慢,这时 ...

  3. android onResultActivity不执行原因总结

    插一个注意点.在用ArrayAdapter的时候数据那里的类型必须是List<String> 不能是ArrayList<String> 1.在A.Activity中调用star ...

  4. 第十一篇 logging模块

    logging模块是Python中内置的很强大的一个日志模块,它可以帮我们记录程序运行的情况,对于后续排错有很好的帮助. logging模块定义了下表所示的日志级别,按照严重程度由低到高排列: 级别 ...

  5. [Swift]八大排序算法(八):基数排序

    排序分为内部排序和外部排序. 内部排序:是指待排序列完全存放在内存中所进行的排序过程,适合不太大的元素序列. 外部排序:指的是大文件的排序,即待排序的记录存储在外存储器上,待排序的文件无法一次装入内存 ...

  6. Ubuntu下安装部署MongoDB以及设置允许远程连接

    最近因为项目原因需要在阿里云服务器上部署MongoDB,操作系统为Ubuntu,网上查阅了一些资料,特此记录一下步骤. 1.运行apt-get install mongodb命令安装MongoDB服务 ...

  7. 3.mouseenter和mouseover事件的区别

    <html> <head> <meta charset="UTF-8"> <script src="jquery-3.3.1.j ...

  8. (WIN7)delphi7运行关闭出现cannot creat file"C:\program file\borland\delphi7\bin\initcc32.exe拒绝访问

    1. 程序右键,以管理权限运行.2. 将Delphi7目录只读取消.WIN7以上的操作系统正常运行程序不是以管理员方式运行的

  9. excel文件的groovy脚本在SoapUI中进行数据驱动测试

    SoapUI Pro具有从外部文件读取数据的功能,例如:excel,csv等.但SoapUI不提供从excel文件读取数据的功能.因此,为了从SoapUI中的excel文件中读取数据,我们需要在gro ...

  10. vue 中引用 百度地图

    1.在 http://lbsyun.baidu.com/ 申请 秘钥 2.在index.html文件中引入 <script src="http://api.map.baidu.com/ ...