資源描述:
《unity3d游戲開發(fā)之Unity自定義編輯器界面.doc》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、個(gè)人收集整理勿做商業(yè)用途好吧,我承認(rèn)自己是個(gè)強(qiáng)迫癥患者,在做項(xiàng)目的時(shí)候發(fā)現(xiàn)腳本的Inspector面板上暴露的密密麻麻的變量頭皮一陣發(fā)麻~~~?舉個(gè)例子比如我要寫一個(gè)Enemy的類,我希望這個(gè)Enemy里面包括了所有的 敵人類型,比如飛機(jī) 坦克等等。?但是由于類型不同,他們的一直變量類型也不同,比如坦克的 變量類型可能有 移動(dòng)速度,子彈類型,或者其他的,飛機(jī)的變量類型有飛行速度,等等。如果不加整理那么在Inspector 面板就會(huì)暴露出密密麻麻的變量不僅頭暈,而且不利于調(diào)試。其實(shí)就是我強(qiáng)迫癥發(fā)作了,我只想
2、面板顯示我想要的東西。?好吧下面開始首先我新建一個(gè)test1 腳本C#?這篇文章來自狗刨學(xué)習(xí)網(wǎng)我們的目標(biāo)是通過枚舉類型來定義當(dāng)前物體的類型。如果m_type是player,那么就顯示playerlife;如果是enemy就顯示enemylife。?下面我們需要寫一個(gè)腳本去重寫Inspector界面。?新建一個(gè)文件夾命名為Editor 因?yàn)槲覀冃枰??using?。酰頸tyEditor 而是用這個(gè)的腳本必須在名字為Editor的文件下。在Editor文件下創(chuàng)建一個(gè)C#新腳本名字隨意我的叫Inspector_
3、test1???首先頭部加入usingUnityEditor??個(gè)人收集整理勿做商業(yè)用途[CunstomEditor(typeof(test1))]繼承改為 Editor??首先我們要序列化一個(gè)物體就是說腳本會(huì)附在一個(gè)Object上??還有腳本的變量??在OnEnable()里面初始化Objcet對(duì)象抓取腳本里面的屬性?然后 再重寫OnI(lǐng)nspectorGUI()??首先是更新腳本的信息test.Update();?然后顯示枚舉類型變量 m_type這個(gè)變量是一定要暴露出來的因?yàn)橥ㄟ^它來定義這個(gè)物體的屬性
4、 是player還是 enemy??EditorGUILayout.propertyField(m_type);?然后我們來判斷這個(gè)m_type是哪個(gè)值 是player還是enemy.???我們通過?SerializedProperty.enumValueIndex枚舉值索引來檢索當(dāng)前枚舉類型的變量值是哪個(gè)??例如在 type枚舉類型里面player的枚舉值索引下標(biāo)為0 enemy??的枚舉值索引下標(biāo)為1這樣我們通過判斷m_type的枚舉下標(biāo)的值就可以推斷出當(dāng)前值的哪一個(gè),進(jìn)而進(jìn)行相關(guān)的操作了。最后,通過
5、?SerializedObject.ApplyModifiedProperties應(yīng)用修改的屬性效果???