text显示下标的字体 unity_Unity 中的 10个代码优化小技巧

Unity 中的 10个代码优化小技巧

又到了开学导员开会的时候。满屋子的学生听着比讲课还无聊空洞的东西,于是整齐地打开了手机。于是就在知乎看到了 默然的这篇文章:

https://zhuanlan.zhihu.com/p/208634789

该文翻译了 Unite 2016 《INSIDE》开发人员的演讲。其中介绍了 10 个 Unity 代码优化技巧。我觉得非常有意思和有启发性,但里面有些地方我持存疑态度,所以写篇文章进行记录,和验证。

1、通过合理的计算顺序来减少矢量操作次数

来看下面这几行代码:

Vector3 vec = new Vector3(1, 2, 3);

Vector3 nvec = vec * 3f * 2f;

Vector3 与 float 相乘,实际上是 Vector3 中的三个分量分别与 float 相乘,也就是进行了 三次乘法运算,然后返回乘后的 Vector3

那么对于上面的代码,vec 与 3f 相乘,进行了 3次 乘法运算,然后得到一个临时的 Vector3 我们称其为 temp。 然后 temp 与 2f 相乘,又进行了 3次 乘法运算。那么总共就进行了 6次 乘法运算。 但我们可以通过调整运算顺序来减少乘法次数:

Vector3 vec = new Vector3(1, 2, 3);

Vector3 nvec = vec * (3f * 2f);

这里我们只是加了一个括号,让 3f * 2f 先进行运算。那么这行代码的运算过程就是这样的:首先计算 3f * 2f 只需要一次乘法运算 得出 6f,然后计算 vec * 6f 需要三次乘法运算,得出最终结果。那么总共进行了 4次 乘法运算,与之前的 6次 相比减少了 2次 乘法运算。

这里我做了简单的测试:

结果显示为,在 100000 次运算下,两者运算时间差了 6ms

2、缓存 transform

故名思意,就是我们在 MonoBehavior 中可以先把物体的 transform 缓存一下,之后使用这个缓存的 transform 指针。这里直接给出测试代码和结果:

不缓存时:

缓存后:

可以看出,在每帧 100000 次计算下,缓存后每帧运算时间优化了近 2

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值