当前位置: 首页 > news >正文

网站模板建站教程视频织梦手机网站建设

网站模板建站教程视频,织梦手机网站建设,茶叶网站开发目的和意义,苏州做网站推广问题描述#xff1a;Unity在创建和销毁对象的时候是很消耗性能的#xff0c;所以我们在销毁一个对象的时候#xff0c;可以不用Destroy#xff0c;而是将这个物体隐藏后放到回收池里面#xff0c;当再次需要的时候如果回收池里面有之前回收的对象#xff0c;就直接拿来用…问题描述Unity在创建和销毁对象的时候是很消耗性能的所以我们在销毁一个对象的时候可以不用Destroy而是将这个物体隐藏后放到回收池里面当再次需要的时候如果回收池里面有之前回收的对象就直接拿来用这样就可以大量的创建和销毁物体。 首先创建一个子弹预制体并添加刚体组件然后创建一个Skill空对象和一个Skill脚本 using System.Collections; using UnityEngine;public class Skill : MonoBehaviour {public int _SkillLv;//技能等级public GameObject bluut;//子弹预制体[Header(可调节参数)]//速度合成public float _Speedy;public float _Speedx;public float _cd;void Start(){StartCoroutine(FireCoroutine());}//定义一个携程用于在一定时间后发射子弹//间隔为_cd秒IEnumerator FireCoroutine(){while (true){yield return new WaitForSeconds(_cd);fashe(_SkillLv);}}//发射子弹的方法void fashe(int lv){for (int i 0; i lv; i){GameObject bullet Instantiate(bluut, transform.position, Quaternion.identity);int randomY Random.Range(200, (int)_Speedy);int randomX Random.Range(-(int)_Speedx, (int)_Speedx);bullet.GetComponentRigidbody2D().AddForce(new Vector2(randomX, randomY));Destroy(bullet, 5f);}} }将Skill脚本加到Skill空对象上然后将子弹预制体拖入然后运行游戏。 调整参数并观察游戏的帧率可以看到在等级为10cd为1的时候帧率还是挺高的 上上强度当等级为500,cd为1的时候可以看到此时的帧率下降明显 现在看看加入对象池的效果  首先创建一个BulletPoolManager空对象和对应的脚本并将脚本拖到空对象上 using System.Collections.Generic; using UnityEngine;public class BulletPoolManager : MonoBehaviour {// 子弹的预制体public GameObject bulletPrefab;//初始化对象池private QueueGameObject pool new QueueGameObject();//单例模式public static BulletPoolManager Instance;void Awake(){if (Instance null){Instance this;DontDestroyOnLoad(gameObject);}else{Destroy(gameObject);}}//创建子弹的方法public GameObject GetBullet(){if (pool.Count 0){GameObject obj pool.Dequeue();obj.SetActive(true);return obj;}else{// 如果对象池里面没有可用的子弹则实例化一个新的子弹对象//注意这里是为了演示所有子弹是直接从预制体中实例化的实际使用时需要动态创建子弹对象GameObject newbullet Instantiate(bulletPrefab); return newbullet;}}// 回收子弹的方法public void ReturnBullet(GameObject bullet){bullet.SetActive(false);bullet.transform.SetParent(transform);pool.Enqueue(bullet);} } 将子弹的预制体拖到回收池对应位置这里为了方便直接用拖的实际使用的时候根据需要修改这里  修改技能代码 主要修改的地方 using System.Collections; using UnityEngine;public class Skill : MonoBehaviour {public int _SkillLv;//技能等级public GameObject bluut;//子弹预制体[Header(可调节参数)]//速度合成public float _Speedy;public float _Speedx;public float _cd;void Start(){StartCoroutine(FireCoroutine());}//定义一个携程用于在一定时间后发射子弹//间隔为_cd秒IEnumerator FireCoroutine(){while (true){yield return new WaitForSeconds(_cd);fashe(_SkillLv);}}//发射子弹的方法void fashe(int lv){for (int i 0; i lv; i){GameObject bullet BulletPoolManager.Instance.GetBullet();bullet.transform.position transform.position;bullet.transform.parent gameObject.transform;int randomY Random.Range(200, (int)_Speedy);int randomX Random.Range(-(int)_Speedx, (int)_Speedx);bullet.GetComponentRigidbody2D().AddForce(new Vector2(randomX, randomY));StartCoroutine(ReturnBullet(bullet));}}IEnumerator ReturnBullet(GameObject bullet){yield return new WaitForSeconds( 5f);BulletPoolManager.Instance.ReturnBullet(bullet);} }运行游戏并修改参数我们会发现同样等级10cd1的时候的帧率要高于不用回收池的时候。 试试等级500cd为1 可以看到使用对象池还是有一点提升的。 你可以在这里看到回收的对象 这是用的对象池是用队列来存储回收的对象的在实际开发中并不一定要使用队列只要能存储多个对象的数据结构不管是泛型还是数组都可以当做对象池。
http://www.dnsts.com.cn/news/22404.html

相关文章:

  • 广州 网站优化企业建站用什么主机
  • t恤图案设计网站网站建设源码开发
  • 宽屏网站和普通网站软件开发文档国标
  • 如何让网站被百度快速收录win8风格网站开发实例
  • 编程 网站建设长沙网站运营
  • 郑州做网站建设html设计网页作业代码
  • 网匠网站建设有限公司中国石化工程建设有限公司王龙哲
  • 个人网站设计论文摘要关键词湖南企业建网站
  • 建设摩托车官方网站机械设备东莞网站建设
  • .net网站开发项目东营住房和城乡建设厅网站
  • 成都公司建站模板兰溪市建设局网站 图片
  • 网站建设流程案例it公司排名
  • 制作网站培训怎么做电商网站推广
  • 微网站建设公司豆芽网站建设douyanet
  • 网站制作品牌公司公司网站建设开发济南兴田德润简介图片
  • 自助建站申请书建设环境竣工验收网站
  • 北京东城网站建设公司wordpress 对象存储插件
  • 个人网站不能备案电子商务网站开发书例子
  • 外国网站快速申请qq开发一个软件需要
  • 网站域名被黑孝感网站开发
  • 广州网站建设设计公司信息个人网站网址有哪些
  • 海外网站有哪些什么营销软件好用
  • 南宁cms建站系统现场直播的视频
  • 网站技术制作discuz模板制作教程
  • 郯城县网站建设商标设计logo软件
  • 网站内如何做内部链接兰州seo新站优化招商
  • 网站源码推荐ui设计工资
  • 网站怎么做黑链接临海市建设局网站
  • ip地址进入网站怎么做的h5网站动画怎么做的
  • 培训行业网站建设15年做哪些网站致富