对象池在怪物孵化器中的应用
来源:互联网 发布:触摸屏软件开发公司 编辑:程序博客网 时间:2024/06/10 12:31
有时候需要对某一对象不停的销毁,克隆,比如怪物,子弹,特效等等。但这样反复销毁很耗内存资源。其实我们可以控制游戏对象的Active属性来模拟GameObject的销毁,生成。比如说事先就生成一怪物,将怪物的Active设为false,当要生成该怪物时,设为ture,杀死怪物时设为flase。这就是对象池技术。当然,千万别忘了重新生成时,要将所有属性重置。下面是我写的关于使用对象池做的怪物孵化器。转自蛮牛
public class BabyWalfSpawn : MonoBehaviour{ public GameObject BabyWalfPrefab;//小狼预设 public int MaxCount = 7;//最大数量 public float ProduceSpeed = 10f;//产生速度 public float RangePos = 10;//产生范围 // private int _Count = 0;//产生数量 public GameObject[] BayWalfs;//BayWalfs // Use this for initialization void Start() { BayWalfs = new GameObject[MaxCount]; InvokeRepeating("BirthBabyWalf", ProduceSpeed, ProduceSpeed); } void BirthBabyWalf() { for (int i = 0; i < BayWalfs.Length; i++) { if (BayWalfs[i] == null) { BayWalfs[i] = Instantiate(BabyWalfPrefab, GetRandomPositon(), Quaternion.identity) as GameObject; BayWalfs[i].transform.parent = this.transform; BayWalfs[i].GetComponent<WolfBaby>().WolfBabyId = i;//设置生成小狼id break; } } _Count++; if (_Count == MaxCount) { CancelInvoke("BirthBabyWalf");//生成最大数量完毕,关闭生成 InvokeRepeating("UpdateBabyWalf", ProduceSpeed, ProduceSpeed);//判断是否有小狼死亡来是否生成新的小狼 } } private void UpdateBabyWalf() { for (int i = 0; i < BayWalfs.Length; i++) { if (!BayWalfs[i].activeInHierarchy) { BayWalfs[i].SetActive(true); BayWalfs[i].transform.position = GetRandomPositon();//重新定位 break; } } } private Vector3 GetRandomPositon() { return new Vector3(transform.position.x + Random.Range(-RangePos, RangePos), transform.position.y, transform.position.z + Random.Range(-RangePos, RangePos)); } public void SetBabyWalfsDie(int Walfid)//小狼脚本处理死亡时执行调用该函数,处理对应id小狼死亡 { BayWalfs[Walfid].SetActive(false); }}
阅读全文
0 0
- 对象池在怪物孵化器中的应用
- 浅谈对象池技术在游戏中的应用
- 面向对象在javascript中的应用
- FSO对象模型在VB中的应用
- FSO对象模型在VB中的应用
- FSO对象模型在VB中的应用
- Rectangle对象在游戏开发中的应用
- Rectangle对象在游戏开发中的应用
- 匿名对象在开发中的应用
- DocumentFragment 对象在性能优化中的应用
- 《他山之石:TechStars孵化器中的创业真经》
- Javascript中的arguments对象在FCKeditor中的应用
- 内存和对象内存池技术在网游开发中的注意点和应用
- 内存和对象内存池技术在网游开发中的注意点和应用zz
- 内存和对象内存池技术在网游开发中的注意点和应用
- 内存和对象内存池技术在网游开发中的注意点和应用
- 面向对象在数据库应用程序中的应用(dotNet)
- 转载:面向对象在数据库应用程序中的应用(dotNet)
- 动态规划学习(1)
- JSP三大指令
- BCD码简介及其与十进制数字字符串之间的转换
- 滴滴首个开源项目 VirtualAPK 加载耦合插件首选
- 委托
- 对象池在怪物孵化器中的应用
- MySql命令行创建和删除触发器
- ######好#######输入DStreams和receivers
- Redis小记
- Tomcat 架构分析(三) Jasper模块
- Intellij idea创建javaWeb以及Servlet简单实现
- P2936 [USACO09JAN]全流Total Flow [ISAP算法]
- 阴影贴图
- SpringBoot下实现前端验证码图片的生成和校验