[Unity3D]人物模型的换装
admin
2023-01-20 20:43:12
0

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

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

首先 我们将从美工那儿获取到的人物模型资源加载到本地,然后通过写代码挂载到人物模型上面。以下是挂在在模型上面的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++; 	} }


程序截图:

[Unity3D]人物模型的换装

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

转载请保留原链接: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 

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


相关内容

热门资讯

今年上半年全国城镇新增就业69... 今天(22日)上午,人力资源社会保障部举行新闻发布会。今年上半年,全国城镇新增就业695万人,同比持...
委内瑞拉强震遇难人数升至534... 当地时间21日,委内瑞拉全国代表大会主席豪尔赫·罗德里格斯通过社交媒体通报,该国6月24日两次强震造...
高考684分花3000元咨询进... 潮新闻客户端 青年特约评论员 曾耀湘图源:视觉中国近日,据齐鲁晚报报道,河北一名2018级考生,因“...
郑州2死2伤火灾系人为纵火 郑州市公安局金水分局对外发布案件通报。通报显示,6月19日21时,郑州市金水区宏明路与柳林路东南角宏...
29岁成都小伙旅行中改道广西救... 7月14日,自发赶往广西救灾的志愿者党鑫蕊,由于劳累过度导致心功能衰竭,在贵港市覃塘区不幸离世,年仅...
清理洗衣机下水管道的方法 清理洗衣机下水管道是一项必要的任务,如果不及时清理,管道内部容易积累污垢和细菌,从而影响洗衣机的使用...
澳外长宣称:中国要就军事建设做... 7月初,中国向太平洋公海海域成功发射一枚携载训练模拟弹头的潜射战略导弹。中方重申,此为例行军事训练活...
伊朗威胁打击海水淡化厂,到底有... 据路透社报道,伊朗7月21日对科威特一座海水淡化厂发动袭击,引发海湾地区担忧,随着该地区冲突升级,更...
美新版“空军一号”刚上岗就回炉... 【环球时报综合报道】美国《防务新闻》7月20日称,美国总统特朗普透露,新版总统专机“空军一号”将被送...
全自动卧式洗衣机清理方法 随着生活水平的不断提高,全自动卧式洗衣机已经成为了家庭生活中不可或缺的一部分。它的出现方便了我们日常...