资源池管理
2021-08-10 15:58:26 0 举报
游戏中的资源池管理策略
作者其他创作
大纲/内容
ObjectChannel功能:维护单一资源
+ Capacity:int + Keep:bool (场景转换时是否销毁)- _recycleQueue:LinkedList<IObjectPool>- spawnQueue:LinkedList<IObjectPool>
+ Equals(ObjectChannel):bool- operation2(params)+ OnDestory()+ Update()
EObjectExtend功能:资源增长方式
+ None+ Single 唯一实例(UI)+ Fixed 常量增长+ Two 成倍增长+ Loop 不增长,循环利用
AssetBundleLoader
ObjectPool功能:存入,取出资源
GameObjectChannel功能:根据路径加载prefab资源缓存等待队列:逐帧处理的资源,可能转向recyle和spwan队列
+ HashCode:int + PreafabPath:string- _waitQueue:LinkedList<IObjectPool>
+ GameObjectChannel(prefabPath)+ Equals(ObjectChannel)+ Update- OnDestory()
Protag
IObjectPool功能:实现此接口的资源才能归资源池管理
+ Recycle(IObjectPool):放入回收池中- Reset():重置单位状态- operation3()
资源增长方式:固定增长;成倍增长;不增长循环(回收最靠前的一个资源)资源预载方式:资源回收方式:资源销毁方式:逐帧创建,战斗中逐帧销毁,转场景时全部强制资源内存管理:多空位调整,资源命中资源生命周期:永久,动态
ObjectPreload功能:预载资源
资源预载方式:游戏开始时预载,场景开始时预载,切换场景时,先将所有资源置为可移除,然后将下一场景需要用到的资源标识为保持,再进行销毁操作
+ operation1(params):returnType- operation2(params)- operation3()
UI:Keep
Config:Keep
Font:Keep
Monster
要求:1:资源的增长方式 2:资源的回收 3:资源的自动删除方式
FIFOPool功能:对于Audio这样的资源,做缓存策略,资源失效后先进入FIFO池
+ attribute1:type = defaultValue+ attribute2:type- attribute3:type
音效的实例可用FIFO切换场景时对比怪物,特效列表,将动态池中无用的移除
战斗资源动态优化表功能:在战斗中动态记录新资源的生成情况
Audio
ObjectManager功能:外部对资源的请求都应该通过该类,资源的实例管理1.获得u某资源2.场景切换时清除无用资源3.战斗中无创建新资源,快速回收资源,逐帧创建/激活资源
- _keepPool:ObjectPool- _dynamicPool:ObjectPool(场景转换时将检查资源可用性)
Effect
Stage
0 条评论
回复 删除
下一页