[Unity3D]人物模型的换装

简介:

写一写今天的学习心得,保持每天不断的学习,今天写的是人物的换装的技术实现。

人物的换装是游戏开发的一个基本的技术,初来公司,老板就要我学习一下人物换装,也当是给我练练手吧,然后我接到一个需求之后,就要开始学习和搜集资料来实现这一功能,一下是学习心得,接下来我们就一起来学习一下,仅仅供新手参考。

首先 我们将从美工那儿获取到的人物模型资源加载到本地,然后通过写代码挂载到人物模型上面。以下是挂在在模型上面的js代码,也就是换装的脚本:

var ME1 : Mesh;    //网格 var MA1 : Material;   //材质 private var TK = 0;    var ME2 : Mesh;   var MA2 : Material;    private var WQ = 0;    var ME3 : Mesh;   var MA3 : Material;    private var ZJ = 0;    var ME4 : Mesh;   var MA4 : Material;    private var YJ = 0;       function OnGUI()   {       GUILayout.Label("");       if(GUILayout.Button ("Helm头盔"))        {           if(TK == 1)           {               transform.Find("group2").Find("Object02").GetComponent(MeshFilter).mesh = null;               transform.Find("group2").Find("Object02").renderer.material = null;               TK = 0;           }           else           {               transform.Find("group2").Find("Object02").GetComponent(MeshFilter).mesh = ME1;               transform.Find("group2").Find("Object02").renderer.material = MA1;               TK = 1;           }       }       if(GUILayout.Button ("Weapon武器"))        {           if(WQ == 1)           {               transform.Find("group2").Find("polySurface1").GetComponent(MeshFilter).mesh = null;               transform.Find("group2").Find("polySurface1").renderer.material = null;               WQ = 0;           }           else           {               transform.Find("group2").Find("polySurface1").GetComponent(MeshFilter).mesh = ME2;               transform.Find("group2").Find("polySurface1").renderer.material = MA2;               WQ = 1;           }       }       if(GUILayout.Button ("LCollar左肩"))       {           if(ZJ == 1)           {               transform.Find("group2").Find("polySurface3").GetComponent(MeshFilter).mesh = null;               transform.Find("group2").Find("polySurface3").renderer.material = null;               ZJ = 0;           }           else           {               transform.Find("group2").Find("polySurface3").GetComponent(MeshFilter).mesh = ME3;               transform.Find("group2").Find("polySurface3").renderer.material = MA3;               ZJ = 1;           }       }       if(GUILayout.Button ("RCollar右肩"))       {           if(YJ == 1)           {               transform.Find("group2").Find("polySurface4").GetComponent(MeshFilter).mesh = null;               transform.Find("group2").Find("polySurface4").renderer.material = null;               YJ = 0;           }           else           {               transform.Find("group2").Find("polySurface4").GetComponent(MeshFilter).mesh = ME4;               transform.Find("group2").Find("polySurface4").renderer.material = MA4;               YJ = 1;           }       }   }  
这里要换装主要是游戏里面的Mesh和Materials,可以我们从属性菜单中直接给这个赋值,可行方便的一个策略是将所有的模型资源写在一个数组中,然后通过数组的索引获取到对应的贴图就OK了。

帧数值的js代码,这段是挂在在摄像机上的:

var updateInterval = 0.5; private var lastInterval : double; // Last interval end time private var frames = 0; // Frames over current interval private var fps : float; // Current FPS private var sum = 0.0; private var num = 0.0;  function Start()  { 	lastInterval = Time.realtimeSinceStartup; 	frames = 0; }  function OnGUI ()  { 	GUILayout.Label("fps:" + fps.ToString("f0") + "      " + (sum/num).ToString("f0")); }  function Update()  { 	transform.RotateAround (Vector3.zero, Vector3.up, 100 * Time.deltaTime); 	++frames; 	var timeNow = Time.realtimeSinceStartup; 	if( timeNow > lastInterval + updateInterval ) 	{ 		fps = frames / (timeNow - lastInterval); 		frames = 0; 		lastInterval = timeNow; 		sum += fps; 		num++; 	} }


程序截图:


转眼之间都快到凌晨一点半了,还是可以洗洗睡了!

转载请保留原链接:http://write.blog.csdn.net/postedit/14093409 谢谢!

附加:群号858550,里面有近2000号Unity的同胞们也有一些大牛们,欢迎进入进行技术交流或者学习!

源码下载:http://download.csdn.net/detail/s10141303/6494229

安卓下载:http://download.csdn.net/detail/s10141303/6507163

==================== 迂者 丁小未 CSDN博客专栏=================

MyBlog:http://blog.csdn.net/dingxiaowei2013              MyQQ:1213250243

MyTel:13262983383 

====================== 相互学习,共同进步 ===================





















本文转蓬莱仙羽51CTO博客,原文链接:http://blog.51cto.com/dingxiaowei/1366240,如需转载请自行联系原作者
相关文章
|
6月前
|
存储 图形学
【unity小技巧】unity中导入下载的3D模型及albedo/baseColor、normal 、AO/Occlus、metallic、roughness贴图纹理设置
【unity小技巧】unity中导入下载的3D模型及albedo/baseColor、normal 、AO/Occlus、metallic、roughness贴图纹理设置
131 0
|
6月前
|
图形学
初识Unity——基本模型、场景操作、世界坐标系和局部坐标系
初识Unity——基本模型、场景操作、世界坐标系和局部坐标系
163 1
|
6月前
|
数据处理 图形学
【unity实战】unity3D中的PRG库存系统和换装系统(附项目源码)
【unity实战】unity3D中的PRG库存系统和换装系统(附项目源码)
59 0
|
存储 图形学
浅谈Unity之模型裁剪shader
Unity之模型裁剪shader
|
图形学
浅谈Unity之ShaderGraph-模型膨胀流动
Unity之ShaderGraph-模型膨胀流动
|
图形学
【Unity实战系列】如何把你的二次元老婆/老公导入Unity进行二创并且进行二次元渲染?(附模型网站分享)
【Unity实战系列】如何把你的二次元老婆/老公导入Unity进行二创并且进行二次元渲染?(附模型网站分享)
547 0
【Unity3D--自由观察模型】模型自动旋转+触屏旋转和缩放
展示3D模型,同时实现模型自动旋转和触屏旋转和缩放
436 0
|
图形学
Unity 导入原神人物模型
Unity 导入原神人物模型
4357 2
Unity 导入原神人物模型
|
图形学
Unity 模型中心点偏移问题解决方法
Unity 模型中心点偏移问题解决方法
1204 1
Unity 模型中心点偏移问题解决方法