对象池3(方法功能)PoolManager(控制)PoolTimeObject(时间管理)text01(调用)Destorys(销毁)
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(销毁)的更多相关文章
- Unity实现”对象池管理器“
前言:警告!这可能是坨屎,空闲时间写成,仅作娱乐 在Unity中生成或销毁一个物体会占用较大的资源,如果是制作FPS射击游戏,子弹生成更是雪上加霜.所以我自己写了一个PoolManager,不能和网上 ...
- 抓到 Netty 一个隐藏很深的内存泄露 Bug | 详解 Recycler 对象池的精妙设计与实现
欢迎关注公众号:bin的技术小屋,如果大家在看文章的时候发现图片加载不了,可以到公众号查看原文 本系列Netty源码解析文章基于 4.1.56.Final版本 最近在 Review Netty 代码的 ...
- 通用对象池ObjectPool的一种简易设计和实现方案
对象池,最简单直接的作用当然是通过池来减少创建和销毁对象次数,实现对象的缓存和复用.我们熟知的线程池.数据库连接池.TCP连接池等等都是非常典型的对象池. 一个基本的简易对象池的主要功能实现我认为应该 ...
- Java对象池技术的原理及其实现
看到一片有关于java 对象基础知识,故转载一下,同时学习一下. 摘 要 本文在分析对象池技术基本原理的基础上,给出了对象池技术的两种实现方式.还指出了使用对象池技术时所应注意的问题. 关键词 对象池 ...
- Java堆外内存之一:堆外内存场景介绍(对象池VS堆外内存)
最近经常有人问我在Java中使用堆外(off heap)内存的好处与用途何在.我想其他面临几样选择的人应该也会对这个答案感兴趣吧. 堆外内存其实并无特别之处.线程栈,应用程序代码,NIO缓存用的都是堆 ...
- 对象池2(方法功能)Pools
对象池Pools(主要调用方法功能) namespace kernal { public class Pools : MonoBehaviour { [HideInInspector] public ...
- 对象池1(方法功能)PoolOption
2.对象池PoolOption(方法功能) //单类型缓冲对象管理(单模池操作管理)功能: 激活.收回.预加载等. namespace kernal { [System.Serializable] p ...
- 对象回收过程?线程池执行过程? map原理?集合类关系?synchronized 和 volatile ? 同一个类的方法事务传播控制还有作用吗?java 锁
1. 对象回收过程? 可达性分析算法: 如果一个对象从 GC Roots 不可达时,则证明此对象不可用. 通过一系列称为GC ROOTS的对象作为起点,从这些起点往下搜索,搜索走过的路径 称为引用链 ...
- 常量池与方法区以及又读new String对象创建问题
又拿出这道String str1 = new String("abc");创建几个对象的面试题梳理了一下常量池与方法区的关系,希望能把这两者的关系通过这道面试题说明白 方法区是什么 ...
随机推荐
- It企业的上市与退市
目前我国的it上市公司有同方股份.华胜天成.长城电脑.航天信息.用友软件.中国软件.东软集团.长电科技.华东科技.航天长峰.航天科技.士兰微.上海贝岭等等. 一般来讲公司上市是为了融资,一是为了解决资 ...
- angular 引入第三方库
第一步 --save:自动写入package.json 第二步: 第三部: 为了让typescript识别$ 第四步:
- RealSense R400系列深度相机的图像获取保存和格式转换
关于RealSense的基础使用的博文用的库有点混杂,挺多博文都是早期maneger的那个库,对那个不是很了解,主要记录一下使用最新的函数库的基础使用. 相机型号:RealSense R435 使用函 ...
- Java中的Random()函数-----转载
Java中的Random()函数 (2013-01-24 21:01:04) 转载▼ 标签: java random 随机函数 杂谈 分类: Java 今天在做Java练习的时候注意到了Java里面的 ...
- GG and MM HDU - 3595 Every-SG
$ \color{#0066ff}{ 题目描述 }$ 两堆石子,GG和MM轮流取,每次在一堆石子中取另一堆石子的k\((k\ge1)\)倍,不能操作的输 现在二人要玩n个这样的游戏,每回合每个人对每个 ...
- SDUT OJ 数据结构上机测试1:顺序表的应用
数据结构上机测试1:顺序表的应用 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem Descri ...
- HTML中title前面小图标的实现
做一个比较正规的网站,需要在标题栏前面加上相应的小图标,会好看的多.效果大致如下: 其实实现起来很简单,只要在html文件中的<head></head>标签中加上: <l ...
- wpa_supplicant
一 函数接口介绍 wpa_ctrl_open接口用来打开wpa_supplicant的控制接口,在UNIX系统里使用UNIX domain sockets,而在Windows里则是使用UDP sock ...
- phpstorm利用database连接mysql数据库
首先声明一点,database只能连接一个已存在的数据库,不能创建数据库 连接一个已存在的数据库步骤: 1,找到database:连续点击俩次shift,输入database就能找到了 2,点击绿色的 ...
- js中自己实现bind函数的方式
最近由于工作比较忙,好久都没时间静下心来研究一些东西了.今天在研究 call 和 apply 的区别的时候,看到 github 上面的一篇文章,看完以后,感觉启发很大. 文章链接为 https://g ...