溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

[Unity3D]人物模型的換裝

發布時間:2020-06-14 15:03:12 來源:網絡 閱讀:289 作者:蓬萊仙羽 欄目:游戲開發

寫一寫今天的學習心得,保持每天不斷的學習,今天寫的是人物的換裝的技術實現。

人物的換裝是游戲開發的一個基本的技術,初來公司,老板就要我學習一下人物換裝,也當是給我練練手吧,然后我接到一個需求之后,就要開始學習和搜集資料來實現這一功能,一下是學習心得,接下來我們就一起來學習一下,僅僅供新手參考。

首先 我們將從美工那兒獲取到的人物模型資源加載到本地,然后通過寫代碼掛載到人物模型上面。以下是掛在在模型上面的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 

====================== 相互學習,共同進步 ===================


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女