Unity框架:JKFrame2.0学习笔记(四)——对象池系统(2)
  v5bEezpf7PPs 2023年11月02日 120 0

前言

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

案例

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

创建子弹

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

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

添加子弹脚本

给子弹预制体添加子弹脚本,子弹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<BulletController>("bullet", transform)?.Init();
        }
    }
}

最终效果

Unity框架:JKFrame2.0学习笔记(四)——对象池系统(2)_游戏开发_02

总结

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




【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

v5bEezpf7PPs