• Unity3D性能优化


    最近在学习Unity3D时,提到了性能优化,刚学习Unity时,只知道对象池可避免重复的删除和重建,今天又重新总结了一下,才知道,原来性能优化还有这么多方式

    不过最主要从三个方面进行:

    一、从CPU方面考虑

    二、从GPU方面考虑

    三、从内存方面考虑

    下面分别从三方面进行总括:

    1、先大概从CPU方面概括:

    (1)主要是指计算有关的部分

    (2)代码部分

      ①删除一些空的方法,如Update

      ②使用for循环代替foreach,使用List代替ArrayList尽量少使用封箱拆箱操作

      ③可以Break掉的循环,直接退出,减少不必要的循环

      ④少使用复杂运算,如除法、开平方根、反余弦、可以使用+*代替

      ⑤FixedUpdate等频繁调用的方法可以扩大间隔、可以使用协程、Invokerepeating

      ⑥OnGUI,最好只在一个脚本中出现

      ⑦OnBecameVisible当物体被相机看到时才执行一些操作,常用于AI

      ⑧不使用打印,不出现警告

      ⑨不能频繁的获取组件,创建新的对象,使用全局变量代替

    (3)物理系统

      ①碰撞检测方面,使用离散的

      ②碰撞器不使用MeshCollider,使用简模代替

    (4)粒子系统

      ①减少粒子数量、缩小效果

    (5)动画方面

      ①使用简单的动画

    (6)Shader方面

      ①尽量使用一些简单的算法,不使用复杂的效果

      ②尽量不使用透明的处理

      ③减少屏幕特效的复杂运算

    (7)灯光

      ①不使用实时阴影,使用Mixed

    2、从GPU方面:

    (1)、主要是渲染方面

    (2)、批处理

      ①动态批处理:要求比较高,对面数、定点数、材质球都有要求

      ②静态批处理:

        1)把不动的物体标记为Static

        2)相同材质球、相同预设物

    (3)、减少模型数量、骨骼数、片面数,使用法线贴图代替细节模型

    (4)、减少场景的大小、树、草

    (5)、灯光烘焙

        ①光照探测

     (6)、遮挡剔除Occlision

     (7)、LODMipMap(会增大内存)

     (8)、减少镜头特效

     (9)、减少透明效果、反射效果

     (10)、减少不必要的层级:打包图集,一个图集最好不要超过1024*1024

     (11)、使用序列帧动画代替粒子系统(增大内存)

    3、从内存方面

    (1)空间、存取速度方面

    (2)使用对象池,减少对GC使用

    (3)使用stringBuilder代替string

    (4)减少图片尺寸,压缩图片

    (5)简模

    (6)Dll,减少使用多余的类库,使用小的类库

    (7)删除不必要的资源,如一些事例

    (8)使用动态加载

    (9)使用全局变量

    (10)使用内存空间小的类型

    以上只是学习中总结的一个概论,详细内容可在网上了解

    温故知新,方便自己回顾使用
  • 相关阅读:
    bzoj3926: [Zjoi2015]诸神眷顾的幻想乡 后缀自动机在tire树上拓展
    Codeforces Beta Round #64D
    bzoj2300#2300. [HAOI2011]防线修建
    Codecraft-18 and Codeforces Round #458 (Div. 1 + Div. 2, combined)G. Sum the Fibonacci
    D
    Codeforces Round #503 (by SIS, Div. 1)E. Raining season
    dp优化
    (CCPC-Final 2018)K
    Educational Codeforces Round 48 (Rated for Div. 2)G. Appropriate Team
    Python 匿名函数
  • 原文地址:https://www.cnblogs.com/zjka/p/10969517.html
Copyright © 2020-2023  润新知