用法,1是获取,2是清除,

问题是这个池到底能做什么用

首先用这个池生成的对象是在池节点下使用,而不是取出来用(可以取出来用,直接transform.parent赋值就可以)

疑问,池里面的节点时什么时候被隐藏的

Despawn时被隐藏的

补充说明:池中有spawn列表和despawn列表,在生成和回炉的操作时会进入对应的列表,如果两个列表数据量的和大于最大数值,回炉时就会销毁数据对象

spawn取出的对象可以绑的任何节点之下,使用despawn回收时这个对象节点绑定不需要变化,仅仅只是被池隐藏掉了

---------------------------------------------------

Demo分析

Example Scene场景分析

发现池以外的类为

ExampleObjects节点下的

Spawner节点上的SimpleSpawner

Creator节点上的CreationExample

---------------------------------------------------

SimpleSpawner类分析

目的应该是演示静态创建的池的使用

里面包含两个池,普通图形shape prefab池,例子prefab池

具体就是创建spawn然后再删除despawn

CreationExample类分析

1 目的应该是演示一个动态创建的池(池的名称是Creator),并且动态设置池的属性

这里设置的属性主要是清理条件很重要,比如prefabPool.preloadAmount = 5;

只保留5个,这个参数导致生成球最多只有5个,超过5个就会清除

2 在Start中还有个例子,从池中取出一个空闲对象,并填充的操作

---------------------------------------------------

PoolManager有3个基本类分析

SpawnPool 对象池

PoolManager 对象池管理器

PreRuntimePoolItem 存入池的item(这里能设置PoolName和PrefabName)

作用应该是OnStart时自动进入相应名字的池

另外有两个参数需要注意(实际作用未知)

DespawnOnStart 不会在OnStart时被自动设置为inactive

Do Not Reparent 是否把节点加入对象池的子节点

SpawnPool (只写几个需要注意的位置)

Awake时会调用PoolManager.Pools.Add(this);把自己加入PoolManager中

包含4种Transform,AudioSource,ParticleSystem,ParticleEmitter

SpawnPool里面还有一层PrefabPool,一个SpawnPool内部包含一组PrefabPool

具体创建池时是先创建PrefabPool,然后加入SpawnPool中

静态创建看SpawnPool.Awake

动态创建看CreationExample.Start

---------------------------------------------------

Untiy PoolManager随手记的更多相关文章

  1. Linux.NET实战手记—自己动手改泥鳅(上)

    各位读者大家好,不知各位读者有否阅读在下的前一个系列<Linux.NET 学习手记>,在前一个系列中,我们从Linux中Mono的编译安装开始,到Jexus服务器的介绍,以及如何在Linu ...

  2. Linux.NET学习手记(7)

    前一篇中,我们简单的讲述了下如何在Linux.NET中部署第一个ASP.NET MVC 5.0的程序.而目前微软已经提出OWIN并致力于发展VNext,接下来系列中,我们将会向OWIN方向转战. 早在 ...

  3. Linux.NET学习手记(8)

    上一回合中,我们讲解了Linux.NET面对OWIN需要做出的准备,以及介绍了如何将两个支持OWIN协议的框架:SignalR以及NancyFX以OwinHost的方式部署到Linux.NET当中.这 ...

  4. 关于《Linux.NET学习手记(8)》的补充说明

    早前的一两天<Linux.NET学习手记(8)>发布了,这一篇主要是讲述OWIN框架与OwinHost之间如何根据OWIN协议进行通信构成一套完整的系统.文中我们还直接学习如何直接操作OW ...

  5. U3D DrawCall优化手记

    在最近,使用U3D开发的游戏核心部分功能即将完成,中间由于各种历史原因,导致项目存在比较大的问题,这些问题在最后,恐怕只能通过一次彻底的重构来解决 现在的游戏跑起来会有接近130-170个左右的Dra ...

  6. 信息系统实践手记5-CACHE设计一例

    说明:信息系统实践手记系列是系笔者在平时研发中先后遇到的大小的问题,也许朴实和细微,但往往却是经常遇到的问题.笔者对其中比较典型的加以收集,描述,归纳和分享. 摘要:此文描述了笔者接触过的部分信息系统 ...

  7. 信息系统实践手记6-JS调用Flex的性能问题一例

    说明:信息系统实践手记系列是系笔者在平时研发中先后遇到的大小的问题,也许朴实和细微,但往往却是经常遇到的问题.笔者对其中比较典型的加以收集,描述,归纳和分享. 摘要:此文描述了笔者接触过的部分信息系统 ...

  8. SQL Server 2016 CTP2.2 安装手记

    SQL Server 2016 CTP2.2 安装手记 下载一个iso文件,解压出来(大约2.8G左右),在该路径下双击Setup.exe即可开始安装. 安装之前请先安装.NET 3.5 SP1,在服 ...

  9. Knockout.js随手记(2)

    计算属性 konckout.js的API文档,写的极为详细和生动,透过MVVM的运作原理,开发时只需专注于定义ViewModel逻辑,不需耗费心力处理TextBox.Select的onchange.o ...

随机推荐

  1. 【BZOJ1419】Red is good 期望

    [BZOJ1419]Red is good Description 桌面上有R张红牌和B张黑牌,随机打乱顺序后放在桌面上,开始一张一张地翻牌,翻到红牌得到1美元,黑牌则付出1美元.可以随时停止翻牌,在 ...

  2. Android笔记之获取显示器宽高

    原先的Display.getWidth().Display.getHeight()已废弃 推荐的获取Display宽高的方法如下 DisplayMetrics metrics = new Displa ...

  3. mongodb学习之:数据库命令以及固定集合

    如何我们要删除一个集合,可以采用db.test.drop()的方式,其实在这背后,这个函数运行的是drop命令.可以用runCommand达到同样的效果. 我们首先新建一个集合作为测试使用: > ...

  4. 初学php html javascript后小总结

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/c3568/article/details/30474015 转载请注明出处:http://blog. ...

  5. 【LeetCode】Construct Binary Tree from Preorder and Inorder Traversal

    Given preorder and inorder traversal of a tree, construct the binary tree. Note:You may assume that ...

  6. Sql Server 2016 创建内存数据库

    官方教程:https://docs.microsoft.com/en-us/sql/relational-databases/in-memory-oltp/survey-of-initial-area ...

  7. linux jdk更换

    有时候会发现,安装了新的jdk,而java -version 之后发现仍旧是旧的jdk,即使自己已经更新了JAVA_HOME的环境变量,解决方法如下: 具体如下: 1. 查看相应的jdk是否在 ubu ...

  8. cc、gcc、g++区别

    gcc是C编译器:g++是C++编译器:linux下cc一般是一个符号连接,指向gcc:gcc和g++都是GUN(组织)的编译器.而CC则一般是makefile里面的一个名字,即宏定义,嘿,因为Lin ...

  9. Redis之Ubuntu开机启动

    1.编译源码,生成可执行文件: 2.将生成的可执行文件拷贝到 /user/local/bin目录下,若没有x权限请加上: 3.将安装包中的 redis.conf配置文件移到/etc/redis.con ...

  10. UOJ Easy Round#7

    UOJ Easy Round#7 传送门:http://uoj.ac/contest/35 题解:http://matthew99.blog.uoj.ac/blog/2085 #1 题意: 在一个(2 ...