unity2019 assetbundle实现SkinnedMesh合并换装

一、效果图

二、美术资源设定

三、具体实现

//第二参数是所有mesh上组件SkinnedMeshRenderer集合
private GameObject CreatPerson (GameObject root , List<SkinnedMeshRenderer> skinneds) {
        List<CombineInstance> combineInstances = new List<CombineInstance> ();
        List<Material> materials = new List<Material> ();
        List<Transform> bones = new List<Transform> ();

        Transform[] transforms = root.GetComponents<Transform> ();

        foreach(SkinnedMeshRenderer smr in skinneds) {

            materials.AddRange (smr.sharedMaterials);
            bones.AddRange(smr.bones);
            for(int sub = 0; sub < smr.sharedMesh.subMeshCount; sub++) {
                CombineInstance ci = new CombineInstance ();
                Mesh mesh1 = new Mesh();
                smr.BakeMesh(mesh1);
                mesh1.uv = smr.sharedMesh.uv;
                ci.mesh = mesh1;

                ci.subMeshIndex = sub;
                combineInstances.Add (ci);
            }
        }
        SkinnedMeshRenderer r = root.AddComponent<SkinnedMeshRenderer> ();
        Mesh mesh = new Mesh ();
        mesh.CombineMeshes(combineInstances.ToArray(), false, false);
        r.sharedMesh = mesh;
        r.bones = bones.ToArray ();
        r.materials = materials.ToArray ();
        r.rootBone = root.transform;

        return root;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

一零壹0

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

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

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

打赏作者

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

抵扣说明:

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

余额充值