Unity性能优化02_模型场景优化

参考自:https://www.bilibili.com/video/BV1n7411b7aH?p=2

一、Static Batching(静态合批):空间换时间;

(一)在线合批:程序运行中实时的合并模型,如果场景中模型数量、位置不固定,则必须在线合并;

(二)离线合批:程序启动之前利用Unity的合批功能,提前把模型合并好;

使用方法:给含MeshCollider物体的父物体(空物体:需添加MeshFilter、Mesh Renderer、Mesh Collider)都绑定上MeshCombiner.cs,按下J键进行帧率测试:

using UnityEngine;

[RequireComponent(typeof(MeshFilter))]
[RequireComponent(typeof(MeshRenderer))]
public class MeshCombiner : MonoBehaviour {

    void Update()
    {
        if (Input.GetKeyDown(KeyCode.J))
        {
            CombineMeshes();
        }
    }

    void CombineMeshes()
    {
        MeshFilter[] meshFilters = GetComponentsInChildren<MeshFilter>();
        CombineInstance[] combine = new CombineInstance[meshFilters.Length];
        int i = 0;
        while(i<meshFilters.Length)
        {
            combine[i].mesh = meshFilters[i].sharedMesh;
            combine[i].transform = meshFilters[i].transform.localToWorldMatrix;
            meshFilters[i].gameObject.SetActive(false);
            i++;
        }
        var meshFilter = transform.GetComponent<MeshFilter>();
        meshFilter.mesh = new Mesh();
        meshFilter.mesh.CombineMeshes(combine);
        GetComponent<MeshCollider>().sharedMesh = meshFilter.mesh;
        transform.gameObject.SetActive(true);
    }
}

开始运行时的帧率:

按下J键后的帧率:

二、Dynamic Batching(动态批处理:处理 很多角色模型)

(一)骨骼蒙皮

1.CPU Skinning;

2.*GPU Skinning;(技术尚不成熟)

很多重复的角色模型和动画:

(1)导入GPU渲染骨骼动画插件:AnimationInstancing 和 资源包浏览器:资源包浏览器AssetBundles-Browser-master

AnimationInstancin下载地址:链接:https://pan.baidu.com/s/1qmvA-dGN1i4eQgx7Sxc_XQ
提取码:esv5

AssetBundles-Browser-master下载地址:链接:https://pan.baidu.com/s/17e7OrfYi4bcSY2Ls5NdthQ
提取码:rpj5

(2)选定一个角色模型,其他相同角色先隐藏起来,将这个选定的角色身上所有的模型上的Shader修改为:AnimationInstancing/Bumped SpecularInstancing;

(3)给Directional Light添加Animation Instancing Mgr脚本,给选定的那个角色模型添加Animation Instancing脚本,然后Apply一下到prefabs上;

(4)点击上方:AnimationInstancing——Animation Generator,然后把选定的角色模型拖入到Asset to Generate里面,FPS写入60,然后Assets——Refresh刷新一下,可以看到在AnimationTexture文件夹下生成了一个文本配置文件;

(5)点击Cutom Editor——AssetBundle——BuildAssetBundle,报错,然后就点击Window——AssetBundle Browser——animationtexture——Zombie_girlA;

(6)点击该界面中的Build选项,勾选Copy to StreamingAssets,然后Build,然后将选定的僵尸拖拽到脚本Animation Instancing的Prototype里面即可,点击运行,此时帧率基本维持在60帧左右。

三、LOD优化(Level of Detail)

很简单,就不说了。

四、地形优化

(一)Terrain——Mesh;

(二)MMO分区域地图;

(三)动态加载、卸载;

(四)接缝处理;

五、纹理贴图

(一)Mipmap;

(二)三线性插值;

(三)注意半透明优化;

六、Shader:定位Shader瓶颈;

七、控制Camera数量

八、降低顶点和面数

九、关闭不用的碰撞矩阵

十、定点GC

十一、不用的资源要销毁或释放,需要用到的资源要缓存

十二、尽量异步加载,防止阻塞

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

林枫依依

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值