二、.享元模式
1.简介
对于有很多相同的类时,需要共享类时,就会用到享元模式。比如渲染森林时,CPU向GPU传递3D数据。目前的游戏中,很多数都会使用一样模型,这时候就可以使用一个共享类。每棵树的需要传递数据就会大大的减少。在Unity的静态批处理和动态批处理。还有URP管线中的SRP Batcher。
2.地形实例
在游戏里基于区块建立地表,每个地形有自己的特性。比如:水面不能行走哦,丘陵不能建造等等。
第一种做法是使用枚举,管理一个大的枚举数组:
但这样单个地形的体现就被分出来了,地形的方法也被分开了。使用享元模式的优化是:
做一个地形类,这个类不包含任何实例的信息,是这个地形通用的数据。不接收任何单独实例的修改。
这里存的是指针,相同地形指向的是同一个Terrain对象。
3.性能如何
有人会觉得:跟踪这样的指针会导致缓存不命中,降低运行速度。