Unity框架:JKFrame2.0学习笔记(四)——对象池系统(2)

2023-04-12

前言


书接上回,上一篇文章介绍了对象池系统的构成和内部实现的逻辑,这一篇文章主要记录下对象池系统在JKFrame2.0的框架中该如何使用。


案例


我们做一个发射子弹的例子,来用到对象池系统。


创建子弹

创建子弹的预制体,可以用球来代替



添加子弹脚本

给子弹预制体添加子弹脚本,子弹2秒钟后,自动销毁


using JKFrame;
using UnityEngine;

public class BulletController : MonoBehaviour
{
    public void Init()
    {
        transform.position=Vector3.zero; 
        Invoke(nameof(DestoryBullet),2f); 
    }
    void Update()
    {
        transform.Translate(Vector3.forward*Time.deltaTime*5);
    }

    private void DestoryBullet()
    {
        transform.position=Vector3.zero;
        //子弹放回对象池
        PoolSystem.PushGameObject(gameObject);
    }
}

添加控制发射脚本

写一个控制发射子弹的脚本,挂载到场景的空物体上


using JKFrame;
using UnityEngine;

public class PoolTest : MonoBehaviour
{
    public GameObject bullet;
    void Start()
    {
        //初始化对象池
        PoolSystem.InitGameObjectPool(bullet,10,10);
    }
    void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            //从对象池中获取子弹
            PoolSystem.GetGameObject("bullet", transform)?.Init();
        }
    }
}

最终效果


总结


只是举了个简单的例子,抛砖引玉,大家可以多看下源码,对象池系统的用法还有很多,要灵活运用,以后的其他模块也有很多要用到对象池系统的。





本文仅代表作者观点,版权归原创者所有,如需转载请在文中注明来源及作者名字。

免责声明:本文系转载编辑文章,仅作分享之用。如分享内容、图片侵犯到您的版权或非授权发布,请及时与我们联系进行审核处理或删除,您可以发送材料至邮箱:service@tojoy.com