Unity中使用的几种缓存方式

要减少GC就要减少堆内存分配的频繁度和减少内存分配的大小。
一般性我们用得多的也就是各种池处理和缓存字典。

我自己总结在Unity里用到缓存的地方:

  • Class pool:网络PB类等
  • List pool:各种中间列表,用完即删的List
  • Unity game object pool:缓存各种游戏中的Object、减少Instance次数,如名字板、血条、当前场景怪
  • Class internal cache:类内部临时变量或者字典结构;使用的个数很少,这样写起来快也更直观,不依赖其它结构
  • Resource cache:bundle及已经加载的音频、图片等资源的缓存及释放

对于音频资源,使用某个音频之后是否会接着使用,这个是不确定的。这时我们可以使用一些置换算法来达到一个比较好的缓存效果。
1. LRU;这个算法比较成熟,就是最近的最长时候没有使用到的那一个。
2. LFU;这个算法的实现有些变体。就是既统计时间也统计次数,在这当中取一个平衡值

你可能感兴趣的:(Unity3D,游戏)