Unity3D 構建物件池

2021-07-29 14:58:14 字數 2814 閱讀 9806

首先介紹一下啊介面

igoinfo 介面用於外界訪問物件的型別,以及呼叫其**函式

namespace jumpgame 

void recycle();

}}

ipool 介面用於外界訪問其管理的物件型別,最大數量,初始化物件池,獲取物件,**物件

using unityengine;

namespace jumpgame // 最大物件數

prefabtype type // 物件型別

void init(int maxcount, prefabtype type); // 初始化物件池

gameobject getresource(); // 獲取物件

void recycle(gameobject go); // **物件

}}

下面介紹一些工具類

pathtool 工具類用於儲存路徑資訊

using unityengine;

using system.collections.generic;

namespace jumpgame

public enum singleprefabtype

public static class pathtool // end if

return prefabpathdict;

} // end get

} // end

public static dictionarysingleprefabpathdict // end if

return singleprefabpathdict;

} // end get

} // end

} }

poolconfig 用於配置物件池

using jumpgame;

using system.collections.generic;

public class poolconfig // end if

return infodict;

} // end get

} // infodict

}

prefabtool 用於儲存已載入的預製體

using unityengine;

using system.collections.generic;

namespace jumpgame // end if

return prefabdict;

}} // end

}}

下面實現一下物件池類

using unityengine;

using system.collections.generic;

namespace jumpgame

public prefabtype type

private list_golist = new list();

public void init(int maxcount, prefabtype type)

public gameobject getresource() else else // end if

go = instantiate(prefab);

switch (type) // end switch

go.setactive(false);

go.transform.setparent(transform);

go.transform.localposition = vector3.zero;

}// end if

return go;

}public void recycle(gameobject go) else // end if}}

}

建立乙個資源管理類管理所有物件池

using unityengine;

using system.collections.generic;

using jumpgame;

namespace mymanager

// 物件池字典

private dictionarypooldict;

public void startup() // end if

mstatus = managerstatus.started;

} // end method

/// /// 根據物件型別與物件的最大數量新增物件池

///

/// 物件型別

/// 物件的最大數量

private void pushpoolwithtypeandmaxcount(prefabtype type, int maxcount)

/// /// 根據物件型別獲取物件

///

/// 物件型別

///

public gameobject getresourcewithtype(prefabtype type) // end if

return null;

} // end method

/// /// **遊戲物體

///

///

public void recylcewithgo(gameobject go) // end if

} // end method

} // end class

}

Unity3D 物件管理緩衝池之美

在遊戲中,經常會有產生 銷毀大量同類遊戲物件的需求,例如遊戲中的不斷出現的敵人 不斷重新整理的寶箱及遊戲中的一些特效,使用物件池就可以管理這些物件的產生和銷毀。直接上 using unityengine using system.collections using system.collection...

Unity3D開發(九) Unity3d流光效果

遊戲開 壇 hello game 遊戲開發群 201276069 之前曾經注意過material 中紋理的屬性都有 tiling 和offset 但沒有深究過其用途,今天才知道竟然可以利用 offset做uv 動畫,從而完成各種有趣的動畫,比如流光效果!流過效果即通常一條高光光在物體上劃過,模擬高光...

unity3D內的常用輸入物件

該平台為使用者提供了 兩個輸入物件touch與input。在unity中使用touch輸入物件來獲取觸控動作相關的引數。因目前系統多為觸屏的,所以我們把touch 寫在相應的遊戲物件的指令碼上即可。其物件的變數資訊如下圖所示 var projectile gameobject 宣告乙個子彈的遊戲物件...