二. 弹幕框架具体实现

本文详细介绍了在Unity中构建弹幕框架的具体步骤和思路,包括实体类、对象池和管理器的实现。强调了实体类的抽象设计,对象池的初始化与自动注册,以及管理器的字典操作。该框架适用于新手快速创建弹幕效果。
摘要由CSDN通过智能技术生成

摘要

  • 本文将会讲解在弹幕框架基本结构下的具体实现,要想阅读本文,建议先阅读前置文章

开发思路

  • 在编写具体代码前,要先思考,在UnityC#开发中,我们希望整个框架的具体逻辑是如何的。
  • 虽然在前一文章中已经阐述了诸如接口方法、对象池、以及三层结构。但它们并不具备完整的解决方案,我们仍要思考完整的解决方案应该是什么样子的。一个很好的方法就是提要求。
  • 对于一切运动实体,我们希望它们自己运动,自己判断是否应该结束运动并回到池子中。这也就意味着我们希望与运动判断相关的逻辑都在实体内部实现,并且对象池的入列方法交给实体自己来执行,即“别人从池子中拿实体,实体自己将自身还到池子中”。
  • 对于对象池,我们希望在UnityEditor窗口中设置好后,就能在Runtime下生效,我们只需要通过API去使用就可以了。这也就意味着对象池在初始化的时候能够自动的加载对象,并且将自己注册到管理类的字典中。
  • 在获取对象的时候,我们希望各种复杂的统一细节交给管理类,我们只要申请,然后得到对象,除了做一些该对象特有的设置外,只需要通过调用一个方法,就能让对象开始运动。

具体实现

  • 在思考了具体需求后,我们就可以依次来实现三层结构各部分了。
  • 需要说明的是,在实际开发中必然不可能如此顺利的逐一实现,而是会在测试中反复横跳,进行取舍,最终得出设计的相对优解。

实体类

  • 先来看看实体类的基本结构:
 	public abstract class EntityBase : MonoBehaviour, ShotBaseInter
    {
   
        /// <summary>
        /// 入列方法委托
        /// </summary>
        private Action<ShotBaseInter> enqueue {
    set; get; }

        /// <summary>
        /// 构造器
        /// </summary>
        public EntityBase()
        {
   
            enqueue = null;
        }

        /// <summary>
        /// Unity回调方法,当对象从对象池中被调出并激活后自动执行,
        /// 是实体执行方法的入口
        /// </summary>
        protected virtual void OnEnable()
        {
   
            OnShotBehaviour();
        }

        /// <summary>
        /// 抽象方法,是被调用的主体,所有实体行为都应该在这个方法体内
        /// </summary>
        public abstract void OnShotBehaviour();

        /// <summary>
        /// 开始方法,如果已经开始则不能通过重新调用来重新开始
        /// </summary>
        public void START()
        {
   
            gameObject.SetActive(true);    
        }

        /// <summary>
        /// 停止方法
        /// </summary>
        public void STOP()
        {
   
            StopAllCoroutines();
            gameObject.SetActive(false);
            if (enqueue != null)
                enqueue.Invoke(t
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值