UGUI-GUI Skin(IMGUI 系統(tǒng))
GUISkin?是可應(yīng)用于 GUI 的?GUIStyle?的集合。每種__控件 (Control)__ 類型都有自己的樣式定義。皮膚 (Skin) 的主要目的將樣式應(yīng)用于整個(gè) UI,而不是應(yīng)用于單獨(dú)的控件本身。

要?jiǎng)?chuàng)建 GUISkin,請(qǐng)從菜單欄中選擇?Assets > Create > GUI Skin。
請(qǐng)注意:本頁面適用于?IMGUI?系統(tǒng)的一部分;該系統(tǒng)是一個(gè)僅限于腳本的 UI 系統(tǒng)。Unity 有一個(gè)完整的基于游戲?qū)ο蟮?UI 系統(tǒng),您可能更希望使用該系統(tǒng)。該系統(tǒng)允許在 Scene 視圖中以可見對(duì)象的形式設(shè)計(jì)和編輯用戶界面元素。請(qǐng)參閱?UI 系統(tǒng)手冊(cè)以了解更多信息。
屬性
GUI Skin 中的所有屬性都是單獨(dú)的?GUIStyle。請(qǐng)閱讀?GUIStyle?頁面了解有關(guān)樣式 (Style) 用法的更多信息。

詳細(xì)信息
在為游戲創(chuàng)建整個(gè) GUI 時(shí),可能需要為每種不同的控件類型進(jìn)行大量自定義。在許多不同的游戲類型中,例如實(shí)時(shí)策略或角色扮演類游戲,實(shí)際上需要定義每種單一的控件類型。
因?yàn)槊總€(gè)單獨(dú)的控件都使用特定的樣式,所以創(chuàng)建十幾個(gè)單獨(dú)的樣式并手動(dòng)分配樣式是不合理的做法。GUI Skin 能解決這一問題。通過創(chuàng)建 GUI Skin,可為每個(gè)單獨(dú)的控件設(shè)置預(yù)定義的樣式集合。然后,只需使用一行代碼即可應(yīng)用皮膚 (Skin),因此無需手動(dòng)指定每個(gè)單獨(dú)控件的樣式。
創(chuàng)建 GUISkin
GUISkin 是資源文件。要?jiǎng)?chuàng)建 GUI Skin,請(qǐng)從菜單欄中選擇?Assets > Create > GUI Skin。隨后將在 __Project 視圖__中加入新的 GUISkin。

編輯 GUISkin
創(chuàng)建 GUISkin 后,可在 Inspector 中編輯其包含的所有樣式。例如,__Text Field__?樣式將應(yīng)用于所有文本字段 (Text Field) 控件。

無論在腳本中創(chuàng)建多少文本字段,這些字段都將使用此樣式。當(dāng)然,如果愿意,還可以將一個(gè)文本字段的樣式更改為與另一個(gè)文本字段的樣式不同。我們稍后將討論如何執(zhí)行此操作。
應(yīng)用 GUISkin
要將 GUISkin 應(yīng)用于 GUI,必須使用簡單的腳本來讀取皮膚并將其應(yīng)用于控件。
// 創(chuàng)建一個(gè)公共變量,我們稍后可向其中分配 GUISkin
var customSkin : GUISkin;
? ? ? ? // 在 OnGUI() 函數(shù)中應(yīng)用皮膚
function OnGUI()
{
? ? GUI.skin = customSkin;
? ? // 現(xiàn)在創(chuàng)建喜歡的任何控件,這些控件將與自定義皮膚一起顯示
? ? GUILayout.Button("I am a re-Skinned Button");
? ? // 可為某些控件(但并非所有控件)更改或移除皮膚
? ? GUI.skin = null;
? ? // 此處創(chuàng)建的所有控件都將使用默認(rèn)皮膚而不是自定義皮膚
? ? GUILayout.Button("This Button uses the default UnityGUI Skin");
}
在某些情況下,希望兩個(gè)相同的控件使用不同的樣式。為此創(chuàng)建新皮膚并重新分配該皮膚是不合理的。正確的做法應(yīng)該是在皮膚中使用__自定義__樣式。為自定義樣式提供一個(gè)__名稱__;該名稱可用作該單獨(dú)控件的最后一個(gè)參數(shù)。
// 此皮膚中的一個(gè)自定義樣式命名為 "MyCustomControl"
var customSkin : GUISkin;
function OnGUI()
{
? ? GUI.skin = customSkin;
? ? // 提供要用作控件函數(shù)最后一個(gè)參數(shù)的樣式名稱
? ? GUILayout.Button("I am a custom styled Button", "MyCustomControl");
? ? // 也可忽略自定義樣式,而使用皮膚的默認(rèn)按鈕樣式
? ? GUILayout.Button("I am the Skin's Button Style");
}
有關(guān)使用 GUIStyle 的更多信息,請(qǐng)閱讀?GUIStyle?頁面。有關(guān)使用 UnityGUI 的更多信息,請(qǐng)閱讀?GUI 腳本指南。