【Unity】 HTFramework框架(六)ReferencePool引用池

更新日期:2019年9月26日。
Github源碼:[點我獲取源碼]

ReferencePool模塊簡介

ReferencePool是用於任意引用類型(除GameObject)的對象池,可以複用任意引用類型對象,以達到減少系統在頻繁創建和刪除對象時的開銷。

使用ReferencePool

生成對象

不同於ObjectPool對象池,ReferencePool引用池不需要註冊,任意引用類型只需要實現IReference接口,便可以直接通過引用池生成對象。
1.定義一個Test類並實現IReference接口:

public class Test : IReference
{
    public int Value = 0;

    public Test()
    {
        Value = 10;
    }
	
	/// <summary>
    /// 當被引用池回收時重置數據
    /// </summary>
    public void Reset()
    {
        Value = 0;
    }
}

2.生成對象:

        //提取一個 Test 對象
        Test t = Main.m_ReferencePool.Spawn<Test>();

回收對象

當對象不再使用時,回收對象也很簡單:

        //提取一個 Test 對象
        Test t = Main.m_ReferencePool.Spawn<Test>();
        //回收對象
        Main.m_ReferencePool.Despawn(t);

        //批量回收對象
        List<Test> ts;
        Main.m_ReferencePool.Despawns(ts);

設置對象池上限

選中主預製體下的ReferencePool對象,在ReferencePoolManager的屬性面板,Limit爲限制引用池中單個引用隊列的上限,引用池中的對象超過此數值時將不再回收對象。
在這裏插入圖片描述

清理對象池

        //清空 Test 對象池
		Main.m_ReferencePool.Clear(typeof(Test));
		//清空所有對象池
        Main.m_ReferencePool.Clear();

運行時檢視面板

在編輯器中運行時將會出現運行時檢視面板(Runtime Data),主要用以調試或數據監測,目前面板如下:
在這裏插入圖片描述
1.展示所有對象池,顯示對象池的類名及當前保留的對象數量。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章