测试的瓦片没有实例化,使用的同一个引用,时间消耗要比实例化后的时间少2倍
清理所有瓦片后执行:
tilemap.ClearAllTiles(); tilemap.CompressBounds();
139*96普通瓦片消耗时间SetTile: time 1804 ms
139*96普通瓦片消耗时间SetTile: time 2198 ms
139*96普通瓦片消耗时间SetTile: time 1871 ms
139*96普通瓦片消耗时间SetTile: time 1886 ms
未清理,保留139*96个瓦片执行:
139*96普通瓦片消耗时间SetTile: time 3215 ms
139*96普通瓦片消耗时间SetTile: time 3487 ms
清理所有瓦片后执行:
tilemap.ClearAllTiles();
139*96普通瓦片消耗时间SetTile: time 1781 ms
139*96普通瓦片消耗时间SetTile: time 1935 ms
139*96普通瓦片消耗时间SetTile: time 2108 ms
139*96普通瓦片消耗时间SetTile: time 1827 ms
清理所有瓦片后执行:
tilemap.ClearAllTiles(); tilemap.CompressBounds();
139*96普通瓦片消耗时间SetTiles: time 414 ms
139*96普通瓦片消耗时间SetTiles: time 294 ms
139*96普通瓦片消耗时间SetTiles: time 294 ms
瓦片数量与显示消耗关系:
200*500÷100*100=10
[Log] 清除瓦片消耗时间: time 3 ms
[Log] 200*500普通瓦片消耗时间SetTile: time 14846 ms
[Log] 清除瓦片消耗时间: time 22 ms
[Log] 100*100远征瓦片消耗时间SetTile: time 804 ms
[Log] 清除瓦片消耗时间: time 2 ms
[Log] 200*500普通瓦片消耗时间SetTile: time 14612 ms
[Log] 清除瓦片消耗时间: time 23 ms
[Log] 100*100远征瓦片消耗时间SetTile: time 792 ms
14612 ÷ 792 = 18.174
14846 ÷ 804 = 18.4
可以看出使用settile时间与瓦片个数为非线性
[Log] 200*500普通瓦片消耗时间SetTiles: time 2663 ms
[Log] 清除瓦片消耗时间: time 25 ms
[Log] 100*100普通瓦片消耗时间SetTiles: time 250 ms
[Log] 清除瓦片消耗时间: time 2 ms
[Log] 200*500普通瓦片消耗时间SetTiles: time 2450 ms
[Log] 清除瓦片消耗时间: time 24 ms
[Log] 100*100普通瓦片消耗时间SetTiles: time 217 ms
[Log] 清除瓦片消耗时间: time 2 ms
[Log] 200*500普通瓦片消耗时间SetTiles: time 2408 ms
[Log] 清除瓦片消耗时间: time 25 ms
[Log] 100*100普通瓦片消耗时间SetTiles: time 209 ms
[Log] 清除瓦片消耗时间: time 2 ms
[Log] 200*500普通瓦片消耗时间SetTiles: time 2474 ms
[Log] 清除瓦片消耗时间: time 25 ms
[Log] 100*100普通瓦片消耗时间SetTiles: time 223 ms
2663 ÷ 250 = 10.652
2450 ÷ 217 = 11.290
2408 ÷ 209 = 11.52
2474 ÷ 223 = 11.09
总结;
1.可以看出,清理瓦片后时间消耗的更少。
2.调用tilemap.CompressBounds()对性能影响不大
3.使用SetTiles消耗最少。推荐使用settiles
4.使用Settiles和SetTitle时间消耗跟瓦片数量为非线性关系,数量越大斜率就越大。settile最明显。
5.通过1和5可以得出,当tilemap里面东西越多时,settile和settiles消耗的时间越大.