要学习unity3d人物换装首先要大致认识一下SkinnedMeshRenderer(蒙皮渲染组件

我们要学习如何绑定如何换材质球和网格

1.代码

代码如下(示例):

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;public class Rehandling : MonoBehaviour
{public Button eyes;//头发public Button hair;//眼睛public Button pants;//衣裳public Button shoes;//裤子public Button top;//鞋public Transform Femaletarck;//要换衣服的小女孩模型public Transform FemaleModel;//拥有整个资源的模型public Transform[] Femaletarcks;//要所有小女孩所有的Transformpublic Transform[] FemaleModels;//要整个资源模型的TransformDictionary<string, Dictionary<string, SkinnedMeshRenderer>> pairs = new Dictionary<string, Dictionary<string, SkinnedMeshRenderer>>();//字典方便储存Dictionary<string, GameObject> valuePairs = new Dictionary<string, GameObject>();string[] vs = new string[] { "eyes-1", "face-1", "hair-1", "pants-1", "shoes-1", "top-1" };// Start is called before the first frame updatevoid Start(){GainTransform();//初始化Initialized();//换装的方法eyes.onClick.AddListener(() =>//头发{Getdressed("eyes-2");});hair.onClick.AddListener(() =>//眼睛{Getdressed("hair-2");});pants.onClick.AddListener(() =>//衣裳{Getdressed("pants-2");});shoes.onClick.AddListener(() =>//裤子{Getdressed("shoes-2");});top.onClick.AddListener(() =>//鞋{Getdressed("top-2");});}void GainTransform()//初始化{Femaletarcks=Femaletarck.GetComponentsInChildren<Transform>(true);//获取小女孩所有的TransformFemaleModels = FemaleModel.GetComponentsInChildren<Transform>(true);//获取模型下所有的Transform}void Getdressed(string name)//换装的方法{string[] keys=name.Split('-');if(pairs.ContainsKey(keys[0]))//判断是否已经穿上了{if(pairs[keys[0]].ContainsKey(keys[1])){return;//如果已经穿上了直接返回}else//如果没有穿上{GameObject go;if(valuePairs.TryGetValue(keys[0],out go)){Destroy(go);//销毁衣服}valuePairs.Remove(keys[0]);//移除pairs.Remove(keys[0]);//移除}}List<Transform> equipment = new List<Transform>();//保存List<Transform> skeleton = new List<Transform>();//保存所有的骨骼foreach (var item in FemaleModels){if(item.name==name)//查找{Dictionary<string, SkinnedMeshRenderer> keyValues = new Dictionary<string, SkinnedMeshRenderer>();keyValues.Add(keys[1], item.GetComponent<SkinnedMeshRenderer>());pairs.Add(keys[0],keyValues);//存入GameObject subassembly = new GameObject();//new一个空物体subassembly.transform.SetParent(Femaletarck);//认父valuePairs.Add(keys[0], subassembly);//保存subassembly.name=item.name;subassembly.AddComponent<SkinnedMeshRenderer>();//添加SkinnedMeshRenderer组件subassembly.GetComponent<SkinnedMeshRenderer>().sharedMesh=item.GetComponent<SkinnedMeshRenderer>().sharedMesh;//网格subassembly.GetComponent<SkinnedMeshRenderer>().materials = item.GetComponent<SkinnedMeshRenderer>().materials;//材质球foreach (var items in item.GetComponent<SkinnedMeshRenderer>().bones){foreach (var itemss in Femaletarcks)//在自己的骨骼中查找{if(items.name==itemss.name){skeleton.Add(itemss);subassembly.GetComponent<SkinnedMeshRenderer>().rootBone = itemss;// 是骨骼节点;}}}subassembly.GetComponent<SkinnedMeshRenderer>().bones = skeleton.ToArray();//所有相关的骨骼}}}public void Initialized(){for (int i = 0; i < vs.Length; i++){Getdressed(vs[i]);}}// Update is called once per framevoid Update(){}
}

例子

这边不让我传视频发个百度网盘链接在这

链接:https://pan.baidu.com/s/13jSXzZPJ9g1r1X_zZ2jVWw 
提取码:bn9b

关于unity 3d人物换装相关推荐

  1. unity 3d模型换装的实现与相关注意点

    1 做好裸模,绑好骨骼,k好动作. 2 做出模型需要更换的装备,刷好权重.每个部位需要拆分成单独的模型.比如衣服,鞋子,裤子等. 3 导出裸模与装备模型到unity,每种模型都需要包含骨骼,因为换装依 ...

  2. Unity简易实现人物换装功能

    人物换装是动作类游戏必不可少的一个功能,本篇就介绍一个简易的换装功能,如要换装,人物身体肯定会拆分成几个部分,如头部,武器,身体等,每个部分都有一个SkinnedMeshRenderer组件,这个组件 ...

  3. unity中Avatar换装实现(三)之美

    前言 最近学习了Unity中Avatar换装功能实现,参考了网上的几篇文章,总结了一个Demo.Unity的换装实现参考网上的教程,总体有两种实现,一种是官方Demo给出的合并Mesh实现, 还有一种 ...

  4. 3D游戏中人物换装解决方案

    换装基本上是每个网游都必须有的一个功能,每种网游的做法都各有不同,有些是换掉整个模型,有些则是通过可以换掉模型的一个部分完成.前者属于整体换,相对简单些:后者则是通过部分替换实现,目前用的比较多,本文 ...

  5. 【Unity3D】3D角色换装++ Advance

    1.如果角色只是单纯的更换装备 也就是说 角色的整个身体是一个完整的网格 而所需要更换的各个部件只是装备 而不是身体的某一部分 比如NGUI中Character的例子 穿装备之前 角色只有默认的身体 ...

  6. 技巧| Unity中Avatar换装实现

    转自: http://blog.uwa4d.com/archives/avartar.html Avatar换装是MMO游戏不可缺少的一部分,一个人物模型通常可拆分为头.身体.手臂.腿.武器等部分,如 ...

  7. Unity中Avatar换装实现

    Avatar换装是MMO游戏不可缺少的一部分,一个人物模型通常可拆分为头.身体.手臂.腿.武器等部分,如何将这些部分组合到一起呢?本文将阐述如何将在Unity中实现人物模型的换装功能. 这是侑虎科技第 ...

  8. unity中Avatar换装实现(一)之美

    Avatar换装是MMO游戏不可缺少的一部分,一个人物模型通常可拆分为头.身体.手臂.腿.武器等部分,如何将这些部分组合到一起呢?本文将阐述如何将在Unity中实现人物模型的换装功能. 资源准备 1. ...

  9. android 试衣间源码,AR开发实战EasyAR项目之AR试衣间(人物换装)

    一.主要框架视图 二.关键代码 AvatarButton using System.Collections; using System.Collections.Generic; using Unity ...

  10. Unity3D人物换装

    这个Demo主要是基于SkinnedMeshRenderer,对其中元素做修改达到改变模型外形与装饰的效果. //换贴图,直接把这段代码加在要换贴图的模型上即可; private var eyeind ...

最新文章

  1. mysql盲注学习-1
  2. poj 1511 Invitation Cards
  3. sql 日期加1天_SQL基础知识——BETWEEN
  4. 女式T恤行业调研报告 - 市场现状分析与发展前景预测
  5. linux环境下通过nginx实现tomcat集群
  6. php数组排序语言,php数组排序函数有哪些
  7. 2-PowerShell 对象,查询操作和格式化
  8. 开关电路的三极管特性
  9. BurpSuite+Proxifer 抓取PC客户端HTTP数据包
  10. F28335学习之ADC配置
  11. 微信公众号--素材管理
  12. 一.数组(10)274. H 指数(不怎么理解)
  13. java 坦克大战画坦克_java简易坦克大战(2)
  14. 钉钉考勤与企业系统对接
  15. 杜绝企业机密外泄,U-Mail邮件防泄密解决方案
  16. 黄金期货对比现货黄金有哪些优势
  17. 2021年中国游戏行业发展现状及行业发展趋势分析[图]
  18. 381个Android开源项目
  19. H-WORM家族远控木马分析与处置
  20. IT 安防生意不好做,我被赶出了电子卖场

热门文章

  1. Go语言log日志包详解及使用
  2. 华为鸿蒙手机用大卡还是小卡,【荣耀3XPro评测】大卡+小卡双3G网络-中关村在线...
  3. LINUX编译xcb/xcb-proto
  4. 网关和路由器的区别?
  5. mysql中chr_ASCII码对应表chr(9)、chr(10)、chr(13)、chr(32)、chr(34)、chr(39)
  6. 【BZOJ】【P1406】【AHOI2007】【密码箱】【题解】【数论】
  7. 字符串百分号 c语言,C语言 输出百分号(%)的方法
  8. 专访洪小文:创新的最后一公里是什么?
  9. 动态页面抓取超级指南_减少页面重量的完整指南
  10. 1156 Sexy Primes (20 分)(质数 模拟