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

荣泰建设集团网站网站百度权重查询

荣泰建设集团网站,网站百度权重查询,传奇游戏网站怎么做,响应式网站 有哪些弊端自定义泛型对象池 文章目录 自定义泛型对象池封装泛型类例子 使用Unity自带对象池 封装泛型类 public abstract class MyPool<T> : MonoBehaviour where T :Component {[SerializeField] protected T prefab; // 生成的预制体[SerializeField] protected int defaultNum…

自定义泛型对象池

文章目录

  • 自定义泛型对象池
    • 封装泛型类
    • 例子
  • 使用Unity自带对象池

封装泛型类

public abstract class MyPool<T> : MonoBehaviour where T :Component
{[SerializeField] protected T prefab; // 生成的预制体[SerializeField] protected int defaultNum; // 池子的大小protected Queue<T> pool = new Queue<T>(); // 队列存储池子protected bool IsPoolEmpty() => pool.Count == 0;protected bool IsPoolFull() => pool.Count > prefab;// 对象池四件套protected virtual T OnCreateItem() => Instantiate(prefab, transform);protected virtual void OnGetItem(T obj) => obj.gameObject.SetActive(true);protected virtual void OnReleaseItem(T obj) => obj.gameObject.SetActive(false);protected virtual void OnDestroy(T obj) => Destroy(obj.gameObject);// 用来获得对象后初始化一些信息protected abstract void InitializedObj(T obj); protected T Get(){T obj;if (IsPoolEmpty()) obj = OnCreateItem();else{obj = pool.Dequeue();OnGetItem(obj);}InitializedObj(obj);return obj;}protected void Release(T obj){if (IsPoolFull()) OnDestroy(obj);else{pool.Enqueue(obj);OnReleaseItem(obj);}}}

例子

BoxPool:

public class BoxPool : MyPool<Box> 
{public float IntervalTime = 0.1f;void Start(){StartCoroutine(ContinueCreateBox());}// 不断生成对象private IEnumerator ContinueCreateBox(){while (true){Box box = Get(); // 获得出来使用yield return new WaitForSeconds(IntervalTime);}}// 重写创建对象方法,添加委托protected override Box OnCreateItem(){Box box = base.OnCreateItem();box.SetBackDestroy(() => {Release(box);});return box;}// 完成抽象方法,初始化信息protected override void InitializedObj(Box obj){obj.transform.position = transform.position + Random.insideUnitSphere * 2f; // 半径2内随机 obj.transform.rotation = Quaternion.identity;obj.GetComponent<Rigidbody>().velocity = Vector3.zero; // 重置刚体速度,否则会越掉越快}}

Box:

public class Box : MonoBehaviour
{public UnityAction backDestroy;private float intervalTime = 1.5f;private float nowTime;private void Update() {nowTime += Time.deltaTime;if (nowTime > intervalTime){nowTime = 0;backDestroy?.Invoke();}}public void SetBackDestroy(UnityAction back){backDestroy = back;}
}

不断生成Box

使用Unity自带对象池

http://www.dtcms.com/wzjs/209888.html

相关文章:

  • 软件开发工具的基本功能湖南seo推广软件
  • 宁德东侨建设局网站百度下载官网
  • 建站公司选址热搜词工具
  • wordpress能做流量站吗百度推销广告一年多少钱
  • 提供网站制作公司报价网站seo哪家好
  • php网站后台建设广告平台有哪些
  • 哈尔滨网站建设团队郑州网站优化渠道
  • 个人网站首页布局企业网站推广策略
  • 做网站卖狗挣钱吗h5下一页
  • 怎么做网站教程++用的工具湖南专业seo优化
  • 如何搭建自己的网站服务器地址什么是搜索引擎优化的核心
  • 北京网站建设批发百度付费推广有几种方式
  • nodejs可以做网站么优化网址
  • 建设网站关键词怎么写公众号seo排名优化
  • 网站建设公司圣辉友联软文自动发布软件
  • 网上做图赚钱的网站杭州百度推广代理商
  • 购物网站成品软文拟发布的平台与板块
  • 重庆点优建设网站公司吗优化网站首页
  • 深圳宝安网站推广百度站长资源平台
  • 零基础学wordpress课件seo排名课程咨询电话
  • 中天建设集团门户网站网站怎么申请怎么注册
  • 网站建设实训结论百度商品推广平台
  • java做网站合适么2022年五月份热点事件
  • wordpress的搭建环境重庆seo俱乐部
  • 织梦网站开发视频百度官网网站
  • wordpress 分类文章置顶插件青岛关键词推广seo
  • seo优秀网站seo搜索引擎优化价格
  • 东城网站建设哪家好百度排行榜风云榜
  • 企模网站手机优化助手
  • 浦东新区做网站关键词智能优化排名