Unity编程小零碎
Unity开发使用语言还是C#居多(起码川就是用C#用到死的,虽然我对这个语言并不是特别有爱心),所以零零碎碎记录一些常用的代码书写习惯,一来为了看着好看,二来也是为了点点滴滴积累起来程序的性能优势。
List的for循环使用相关
虽然循环不是个好东西,可是毕竟少不了它。所以这里面有许多可以叨叨的,毕竟一次循环可优化,那么一整套循环走下来,可提升的性能可就不是一半点了。所以先从一个最常见的开始。
List<int> mineList; for (int i = 0; i < mineList.Count; i++) { DoSomeThing (mineList [i]); }
这是常用的一种循环方式来获取List当中的元素,有什么问题吗?我们可以通过对比进行说明。
List<int> mineList; for (int i = 0, imax = mineList.Count; i < imax; i++) { DoSomething (mineList [i]); }
针对List进行for循环,因为每次循环都会获取List的Count属性,所以提前存储Count属性可以优化掉这一部分的时间。不要小看这部分时间哦,针对这一部分进行优化,如果每一帧都涉及大量逻辑计算,减轻计算量可以保证游戏帧稳定。
下面再说说for循环内部。针对List进行循环更多自然还是要取List中的值。取值也有两种方法:第一种每次取值直接调用下标;第二种种则依据下标保存值到临时变量中,然后本次循环内部使用临时变量。因为List通过下标取值耗时要比Array耗时,所以第二种方法显然优于第一种(不过如果只有取值一次,那两种都差不多了)。
所以总结下,核心就是通过空间换时间。毕竟List和Array相比,无论查询还是数据的插入删除,List都要比Array使用更为广泛。可是List与Array相比,在查询方面确实耗时,而我们存储数据,为的不也是查询使用数据吗?所以有能够优化的地方,就要压榨我们自己的书写习惯了。

浙公网安备 33010602011771号