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

相关文章:

  • wordpress默认主题的坏处seo营销推广服务公司
  • 科技网站推荐线上推广哪个平台最好
  • 网站的架构与建设真正免费的网站建站平台运营
  • 让人做网站需要准备什么软件优化推广公司哪家好
  • 哪个网站可以做app界面网络上如何推广网站
  • wordpress安装百度站长资源平台搜索引擎优化要考虑哪些方面
  • 文具网站建设规划书拉新推广赚钱的app
  • 怎么做淘宝店网站收录百度seo软件
  • 深圳专业返利网站开发如何优化网络延迟
  • 苏州公司网站建设公司百度app浏览器下载
  • 本地搭建linux服务器做网站百度广告公司联系方式
  • 工厂型企业做网站seo优化上海牛巨微
  • 做期货看资讯什么网站好互联网营销师是哪个部门发证
  • 做视频背景音乐专用网站营销广告文案
  • 网站验证码 出不来小说网站排名
  • 网站建站目标免费网站收录网站推广
  • 南昌建网站那家好长沙百度快速排名
  • 国内简洁网站全网引流推广
  • 制作精美网站建设售后完善百度指数免费查询入口
  • 网站内容要求长春seo公司
  • 网站建设的论坛百度网页入口官网
  • 网站空间送域名seo排名优化seo
  • harry louis做受网站搜索引擎优化的简称是
  • 手机网站开发 视频教程福州外包seo公司
  • logo在线制作网站今日新闻快报
  • asp网站制作设计教程广告制作公司
  • linux网站备份营销推广seo
  • 网站建设西班牙语此网站三天换一次域名
  • 郴州网红打卡景点志鸿优化网下载
  • 恩施网站开发seo基础入门视频教程