Unity框架:JKFrame2.0學習筆記(四)——對象池系統(tǒng)(2)
2023-04-12
前言
書接上回,上一篇文章介紹了對象池系統(tǒng)的構(gòu)成和內(nèi)部實現(xiàn)的邏輯,這一篇文章主要記錄下對象池系統(tǒng)在JKFrame2.0的框架中該如何使用。
案例
我們做一個發(fā)射子彈的例子,來用到對象池系統(tǒng)。
創(chuàng)建子彈
創(chuàng)建子彈的預制體,可以用球來代替

添加子彈腳本
給子彈預制體添加子彈腳本,子彈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);
}
}
添加控制發(fā)射腳本
寫一個控制發(fā)射子彈的腳本,掛載到場景的空物體上
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();
}
}
}
最終效果

總結(jié)
只是舉了個簡單的例子,拋磚引玉,大家可以多看下源碼,對象池系統(tǒng)的用法還有很多,要靈活運用,以后的其他模塊也有很多要用到對象池系統(tǒng)的。
本文僅代表作者觀點,版權(quán)歸原創(chuàng)者所有,如需轉(zhuǎn)載請在文中注明來源及作者名字。
免責聲明:本文系轉(zhuǎn)載編輯文章,僅作分享之用。如分享內(nèi)容、圖片侵犯到您的版權(quán)或非授權(quán)發(fā)布,請及時與我們聯(lián)系進行審核處理或刪除,您可以發(fā)送材料至郵箱:service@tojoy.com






