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

添加子彈腳本
給子彈預(yù)制體添加子彈腳本,子彈2秒鐘后,自動(dòng)銷毀
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;
//子彈放回對(duì)象池
PoolSystem.PushGameObject(gameObject);
}
}
添加控制發(fā)射腳本
寫一個(gè)控制發(fā)射子彈的腳本,掛載到場(chǎng)景的空物體上
using JKFrame;
using UnityEngine;
public class PoolTest : MonoBehaviour
{
public GameObject bullet;
void Start()
{
//初始化對(duì)象池
PoolSystem.InitGameObjectPool(bullet,10,10);
}
void Update()
{
if (Input.GetMouseButtonDown(0))
{
//從對(duì)象池中獲取子彈
PoolSystem.GetGameObject("bullet", transform)?.Init();
}
}
}
最終效果

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





