溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

[Unity3D]人物模型的換裝

發(fā)布時(shí)間:2020-06-14 15:03:12 來(lái)源:網(wǎng)絡(luò) 閱讀:234 作者:蓬萊仙羽 欄目:游戲開(kāi)發(fā)

寫(xiě)一寫(xiě)今天的學(xué)習(xí)心得,保持每天不斷的學(xué)習(xí),今天寫(xiě)的是人物的換裝的技術(shù)實(shí)現(xiàn)。

人物的換裝是游戲開(kāi)發(fā)的一個(gè)基本的技術(shù),初來(lái)公司,老板就要我學(xué)習(xí)一下人物換裝,也當(dāng)是給我練練手吧,然后我接到一個(gè)需求之后,就要開(kāi)始學(xué)習(xí)和搜集資料來(lái)實(shí)現(xiàn)這一功能,一下是學(xué)習(xí)心得,接下來(lái)我們就一起來(lái)學(xué)習(xí)一下,僅僅供新手參考。

首先 我們將從美工那兒獲取到的人物模型資源加載到本地,然后通過(guò)寫(xiě)代碼掛載到人物模型上面。以下是掛在在模型上面的js代碼,也就是換裝的腳本:

var ME1 : Mesh;    //網(wǎng)格 var MA1 : Material;   //材質(zhì) 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,可以我們從屬性菜單中直接給這個(gè)賦值,可行方便的一個(gè)策略是將所有的模型資源寫(xiě)在一個(gè)數(shù)組中,然后通過(guò)數(shù)組的索引獲取到對(duì)應(yīng)的貼圖就OK了。

幀數(shù)值的js代碼,這段是掛在在攝像機(jī)上的:

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]人物模型的換裝

轉(zhuǎn)眼之間都快到凌晨一點(diǎn)半了,還是可以洗洗睡了!

轉(zhuǎn)載請(qǐng)保留原鏈接:http://write.blog.csdn.net/postedit/14093409 謝謝!

附加:群號(hào)858550,里面有近2000號(hào)Unity的同胞們也有一些大牛們,歡迎進(jìn)入進(jìn)行技術(shù)交流或者學(xué)習(xí)!

×××:http://download.csdn.net/detail/s10141303/6494229

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

==================== 迂者 丁小未 CSDN博客專(zhuān)欄=================

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

MyTel:13262983383 

====================== 相互學(xué)習(xí),共同進(jìn)步 ===================


向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI