unity对象池

1.背景:

现在需要做一个弹幕玩法,所以必须要使用对象池,不然一直new对象会导致gc偏高,同时渲染也会有压力。但是考虑到很多项目的对象池不够简洁,对新人不够优化,比如我见过nodePool、classPool、gameObjectPool、luaPool 等等 。我现在要做的是仅仅使用PoolManager.Get<脚本对象>("资源url") 或者 PoolManager.Get<脚本对象>(gameObject对象) == 总之你想用对象池

只需要一个PoolManager的Get方法即可,我不管你是什么对象,只要你实现了IPool接口就可以

完整代码见github: https://github.com/yangjiejie/CustomUnityObjectPool

2.设计灵感

参考了unity官方ListPool的设计哲学平常我们使用List<T> 容器大概率需要使用到对象池

List<string> list = UnityEngine.Pool.ListPool<string>.Get()

官方实现

public class ListPool<T> : CollectionPool<List<T>, T>

{

}

上述OnGet接口直接写死null以及 OnRelease 它仅仅实现了容器的clear操作,至于元素里面是个啥它需要什么操作它不管。它管容器本身的接口不管元素。

部分代码截图:

PoolManager.cs

Pool.cs

相关推荐
用户788477316342 小时前
门店核销闭环:小程序扫码 + .NET 幂等接口 + WPF 看板,一天能跑通
微信小程序·c#
samble5 小时前
从零搭建灌装监控系统(十三):报警系统设计,生命周期与通知
c#·wpf·mvvm·modbus·工业控制
miofly8 小时前
GitHub 今日推荐|SCSKiller:游戏着色器预编译消除卡顿
开源·c#·github
周杰伦fans1 天前
8GB显存下模型量化实战指南
人工智能·后端·c#
samble1 天前
从零搭建灌装监控系统(十二):配置系统,原子写入与容错
c#·wpf·mvvm·modbus·工业控制
流形填表1 天前
题库去重实战:基于题干指纹的重复题清理
开发语言·c#
WarPigs1 天前
Unity对象不应该使用null传播的问题
unity
开开心心就好1 天前
以图搜图找重复图片,本地工具离线就能用
javascript·智能手机·ffmpeg·c#·ocr·word·音视频
QQ_21696290961 天前
基于C#(Asp.net)电竞陪玩信息管理系统的设计与实现
java·大数据·spring boot·微信小程序·c#·云计算·asp.net
未来之窗软件服务2 天前
C# 截图源码支持自动保存-东方仙盟
c#·仙盟创梦ide·东方仙盟·电脑工具