[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 

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


相关内容

热门资讯

失控的监护“外包”:孩子被送特... 从封闭式特训机构出来三个月后,李雨有时仍感觉自己还在里面。她忍不住看相关新闻。她看到报道中,一名21...
一举创下3项世界纪录,中国自主... 【环球时报报道 记者 郭媛丹】21日上午,中船集团旗下中船澄西船舶修造有限公司为力拓集团建造的自主研...
试图把国内矛盾外引?专家解析菲... 【环球时报报道 记者 樊巍】21日上午,外交部边海司负责人就菲律宾在仁爱礁蓄意挑衅、袭击中国海警执法...
特朗普宣布两年后对仿制药征收1... △美国总统特朗普(资料图)当地时间7月21日,美国总统特朗普在社交媒体发文表示,自2026年8月1日...
美国贸易代表暗示将很快出台新关... 新华社纽约7月21日电(记者刘亚南) 美国贸易代表贾米森·格里尔21日在接受媒体采访时暗示,美国联邦...
中国空调“一机难求”,人民日报... 中国空调“一机难求”,创意产品持续热销,本报记者实地探访——消暑降温,欧洲民众为何追捧中国制造?(第...
美防长:对伊朗战争已耗资375... △美国国防部长赫格塞思(资料图)央视记者当地时间21日获悉,美国国防部长赫格塞思表示,美国对伊朗战争...
在全国抗议声中,泽连斯基解除乌... 据乌克兰媒体《基辅独立报》报道,乌克兰总统泽连斯基解除了乌克兰武装部队总司令瑟尔斯基的职务,并任命联...
也门胡塞武装:停靠沙特港口船只... 新华社科威特城7月21日电(记者尹炣)萨那消息:也门胡塞武装20日警告国际航运公司称,与沙特港口开展...
特朗普:胡塞武装若封锁红海,美... 新华社华盛顿7月21日电(记者黄强 徐剑梅)美国总统特朗普21日在白宫会见到访的黎巴嫩总统奥恩时表示...