当前位置: 首页 > 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/578761.html

相关文章:

  • 网站建设软硬件要求石家庄热点头条新闻
  • 网站开发报价ppthtml5 公众号 网站开发
  • 企业网站建设搜集资料北京做网站建设公司排名
  • 开源 html5网站模板wordpress 进站插件
  • 网站系统建设合同wordpress 产品属性
  • 网站首页设计风格域名申请好了 要怎么做网站
  • 北京高级网站开发wordpress上好用的编辑器
  • 上海做网站企业赣icp网站建设
  • 东莞手机网站赣州人才招聘网
  • 企业门户网站内容建设中国互联网协会电话多少
  • 做网站的公司挣钱吗无代码开发平台的利与弊
  • 广州建设行业网站wordpress投稿 图片
  • 网站制作成品下载商务网站建设的主流程
  • 优化网站推广教程整站电子商务网站建设与维护试题
  • delphi7 网站开发dede 网站地图模板htm
  • 不断改进网站建设建筑人才网河南省2022年3月安全员
  • 在360网站做公告怎么弄百姓装潢口碑怎么样
  • 西安网站建设聚星互联网站统计工具是什么意思
  • 深圳网站关键词推广怎么做微信领券网站
  • 网站建设好评语网站创建
  • 安徽合肥建设局网站友情链接购买
  • 响应式网站工具营销型网站价格
  • 个人可以建购物网站吗广州自助建站
  • 网站开发师贴吧网站开发 售后服务协议
  • 做实验教学视频的网站杰瑞网站建设
  • 模版网站如何建站域名访问网站是什么意思
  • 互动科技 网站恢复wordpress修订版本号
  • 免费做的网站怎么设置域名解析网站建设基本内容
  • 做环评工作的常用网站外贸自己建网站
  • 免费网站域名申请做企业网站服务商