Unity换装之分离元素

需要先将美术制作好的人物进行分离。

先存储骨骼,再存储身体其他部分。

下面是制作的编辑器工具,自动分离部件然后保存到Resources文件夹下面

    private static string dir = Application.dataPath + "/Resources";

    [MenuItem("MyDress/Handle Person Resources")]
    public static void Execute()
    {
        //创建存放asset的文件夹.
        if (!Directory.Exists(dir))
        {
           Directory.CreateDirectory(dir);
        }

        foreach (Object o in Selection.GetFiltered(typeof(GameObject), SelectionMode.Assets))
        {
            GameObject go = o as GameObject;
            if (go.name.Contains("@")) continue;

            //复制一个新的.
            GameObject newGo = (GameObject)Object.Instantiate(go);
            newGo.name = go.name;
            GameObject bone = SaveBone(newGo);

            //保存部件.
            foreach (SkinnedMeshRenderer smr in go.GetComponentsInChildren<SkinnedMeshRenderer>(true))
            {
				PrefabUtility.CreatePrefab("Assets/Resources/" +go.name+"_"+ smr.name + ".prefab", smr.gameObject);
            }
			Debug.Log("Handle Person Resources Completed!");
        }
    }



    private static GameObject SaveBone(GameObject go)
    {
        foreach (SkinnedMeshRenderer smr in go.GetComponentsInChildren<SkinnedMeshRenderer>())
        {
            Object.DestroyImmediate(smr.gameObject);
        }
        go.AddComponent<SkinnedMeshRenderer>();
        GameObject prefabGo = PrefabUtility.CreatePrefab( "Assets/Resources/"+go.name+"_bone.prefab",go);
        Object.DestroyImmediate(go);
        return prefabGo;
    }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值