[Unity优化]gc03:代码优化


参考链接:

https://www.cnblogs.com/zblade/p/6445578.html

http://www.manew.com/thread-101174-1-1.html

以下都是测试过的:

1.GameObject.name和GameObject.tag会产生gc,替代方案为GameObject.CompareTag

2.Input.touches会产生gc,替代方案为Input.touchCount配合Input.GetTouch

3.Physics.SphereCastAll会产生gc,替代方案为Physics.SphereCastNonAlloc

从2和3可以看出,如果方法返回的是一个数组,那么说明执行这个方法时会分配内存产生一个新的数组,从而产生gc

4.装箱操作(值类型转化为引用类型)会产生gc,典型的例子为Debug.Log,其方法签名是public static void Log(object message);

5.StartCoroutine会产生gc

6.yield return 0会产生gc(因为装箱操作),替代方案为yield return null

7.yield return new WaitForSeconds(0.1f)会产生gc(因为new一个对象),替代方案为:

WaitForSeconds waitForSeconds = new WaitForSeconds(0.1f);
IEnumerator A()
{
    while (true)
    {
        yield return waitForSeconds;
    }
}

8.foreach几乎不会产生gc(unity5.5版本修复了,但第一次执行foreach仍会触发gc)

优质内容筛选与推荐>>
1、06.linux平台下运行go文件
2、python class as decorator
3、jar包编译成 dex
4、kubernetes学习与实践篇(一)主要概念介绍
5、由一段代码谈前端js优化和编码规范(一) 分类: JavaScript 2015-03-21 12:43 668人阅读 评论(1) 收藏


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号