[Unity] 动态合并和拆分 mesh 和 贴图

本文介绍了一种在Unity中优化资源使用的方法,通过动态合并场景中的小物件模型和贴图来降低Batch数量,从而节省资源。文章详细讲解了如何收集并合并模型的材质、网格和纹理信息,以及如何在需要时还原合并前的状态。

当场景中有很多不同的模型和贴图时,会导致Batch 会很高,所以我们可以去合并这些小物件模型和贴图,已达到省资源的目的。

首先在记录每一个需要被动态合并的物的material,mesh, texture,uv 等信息

 public void CollectSmallObject(SmallObject mSmallobject)
 {
        ObjectData data = default(ObjectData);
        data.objId = mSmallobject.objId;
        render = mSmallobject.GetComponentsInChildren<MeshRenderer>();
        mesh = mSmallobject.GetComponentsInChildren<MeshFilter>();

        data.MaterialData = new MaterialData[mesh.Length];
        MaterialData materialData = default(RoomMaterialData);
        for (int i = 0; i < mesh.Length && i < render.Length; i++)
        {
            materialData.mainTexture = render[i].sharedMaterial.mainTexture;
            materialData.uv = mesh[i].mesh.uv;
            materialData.render = render[i];
            materialData.mesh = mesh[i];
            data.MaterialData[i] = materialData;
        }
        
        //深沉次遍历
        CollectSmallObject(roomType, ref data);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值