Unity3D游戏开发之对象池技术(优化)

Unity3D游戏开发之对象池技术(优化)

ID:39891100

大小:18.32 KB

页数:6页

时间:2019-07-14

Unity3D游戏开发之对象池技术(优化)_第1页
Unity3D游戏开发之对象池技术(优化)_第2页
Unity3D游戏开发之对象池技术(优化)_第3页
Unity3D游戏开发之对象池技术(优化)_第4页
Unity3D游戏开发之对象池技术(优化)_第5页
资源描述:

《Unity3D游戏开发之对象池技术(优化)》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、Unity3D游戏开发之对象池技术(优化)我们在做项目的时候,如果同一个物体要用到好多次,我们就不要再用实例化了,因为每次创建一个新物体是很消耗资源的,引用对象池技术,顾名思义,把所有要用到的对象在初始化的时候都扔到这个池子里,想用的时候拿出来用,不想用的时候放回去,这样会大大节省资源,我在狗刨上看到一个写对象池不错的code,拿来分享一下。  这个脚本非常简单,但它可以通过大量减少实例化所带来的开销使我的iOS游戏得到很大的性能提升。  1.把脚本ObjectPool.cs链接到一个GameObject上。2.在物体预设数组中设置你想

2、要放到池中并重复利用的预设物体。3.在缓冲数组中,指定你希望每个物体在游戏开始时被实例化的数量,这样在开始的时候你就有了池对象。4.在你的游戏中调用ObjectPool.instance.GetObjectForType(objectType,onlyPooled)来使用它。objectType写你想生成的预设的名字、并为onlyPooled指定布尔值,如果返回真,它将返回你已经放到池中的对象;如果返回假,它将实例化一个全新的对象。(如果你想限制被池对象的数量,那么设定为真,这样做非常有用,尤其是在需要限制同时播放特效的数量的时候)。文

3、章出处【狗刨学习网】5.确保你从池中调用的对象知道当它被删除时需要返回到池中。1.  2.3.usingUnityEngine;4.usingSystem.Collections;5.usingSystem.Collections.Generic;6.7.publicclassObjectPool:MonoBehaviour8.{9.10.  publicstaticObjectPoolinstance;11.12.  ///

13.  ///Theobjectprefabswhichthepoolcanhandle.1

4、4.  ///

15.  publicGameObject[]objectPrefabs;1.2.  ///3.  ///Thepooledobjectscurrentlyavailable.4.  ///5.  publicList[]pooledObjects;6.7.  ///8.  ///Theamountofobjectsofeachtypetobuffer.9.  ///10.  publicint[]amo

5、untToBuffer;11.12.  publicintdefaultBufferAmount=3;13.14.  ///

15.  ///Thecontainerobjectthatwewillkeepunusedpooledobjectssowedontcloguptheeditorwithobjects.16.  ///17.  protectedGameObjectcontainerObject;18.19.  voidAwake()20.  {21.      instance=this;

6、22.  }23.24.  //Usethisforinitialization25.  voidStart()26.  {27.      containerObject=newGameObject("ObjectPool");28.29.      //Loopthroughtheobjectprefabsandmakeanewlistforeachone.1.      //Wedothisbecausethepoolcanonlysupportprefabssettoitintheeditor,2.      //sowecan

7、assumethelistsofpooledobjectsareinthesameorderasobjectprefabsinthearray3.      pooledObjects=newList[objectPrefabs.Length];4.5.      inti=0;6.      foreach(GameObjectobjectPrefabinobjectPrefabs)7.      {8.        pooledObjects[i]=newList(); 9.10. 

8、       intbufferAmount;11.12.        if(i

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。