之前看NGUI的腳本上都有各式各樣的控制按鈕和顯示數(shù)據(jù)的格式星持,當(dāng)時(shí)一直這個(gè)是怎么做的好酷炫,直到這兩天才有時(shí)間下來好好研究了一下讯检。
Inspector
我們在把一個(gè)腳本掛在一個(gè)物體上熟空,他的公共變量會顯示在Inspector上。我們可以用重新對這個(gè)上面顯示的東西做編輯鼠次。
第一種直接編輯
[HelpURL("https://www.baidu.com")] //訪問網(wǎng)址更哄,就是那個(gè)小書按鍵訪問的網(wǎng)址
public class MyEditor : MonoBehaviour
{
//這是設(shè)置顏色屬性控制芋齿,這是設(shè)置的一個(gè)帶灰度的HDR顏色,詳細(xì)見圖三
[ColorUsage(true, true, 0, 8, 0125f, 3)] public Color color;
[HideInInspector] public int hide; //不在面板上顯示
[Header("my title")] //標(biāo)題
public float mount = 2f;
[Space(10)] //間距
[Tooltip("slider value between 0 and 10.")] //鼠標(biāo)移到silder上的說明
[Range(0, 10)] //slider的取值范圍
public float slider = 2f;
[TextArea(5, 10)] //文本框成翩,最小5行觅捆,最大10行。
public string textArea;
[ContextMenu("My Editor")]//如圖二麻敌,點(diǎn)擊執(zhí)行這個(gè)方法
private void Print()
{
Debug.Log("This is My Editor");
}
}
圖一
圖二
圖三
第二種編寫繪制腳本
原本的腳本:
public class MyClass : MonoBehaviour
{
public int myInt;
public string myString;
public float myFloat;
}
編輯腳本:
[CustomEditor(typeof (MyClass))]
public class EditorMyClass : Editor
{
public override void OnInspectorGUI()
{
base.OnInspectorGUI();
var myClass = target as MyClass;
myClass.myFloat = EditorGUILayout.Slider("MySlider", myClass.myFloat, 0, 1);
Rect rect = GUILayoutUtility.GetRect(18, 18);
EditorGUI.ProgressBar(rect, myClass.myFloat, "MyProgressBar");
EditorGUILayout.ColorField("MyColor", Color.black);
EditorGUILayout.HelpBox("This is HelpBox", MessageType.Info);
if (GUILayout.Button("MyButton"))
{
Debug.Log("This is MyButton" + myClass.myInt + myClass.myString);
}
}
}
圖四
這種就是NGUI里面使用的編輯方式栅炒,可以不調(diào)用base,就不會顯示术羔,這個(gè)的做法跟GUI編輯差不多赢赊,多的用法就不一一介紹了。所以基本上我們用的unity的每一個(gè)組件都會有一個(gè)對應(yīng)的編輯類吧级历,但是我們要對unity原生組件做編輯的話释移,之前布局就會回到默認(rèn)的樣子。就不會是我們現(xiàn)在看到的樣子寥殖,可以看看這篇文章很好的解決了這個(gè)問題玩讳。
添加菜單
這個(gè)常常用于直接調(diào)用測試方法涩蜘,或者打開小工具。
public class MenuItemsExample
{
//見圖五
[MenuItem("Window/New Option")]
private static void NewMenuOption()
{
}
[MenuItem("Tools/SubMenu/Option")]
private static void NewNestedOption()
{
}
}
圖五
也可以使用快捷鍵:
% – CTRL on Windows / CMD on OSX
\# – Shift
& – Alt
LEFT/RIGHT/UP/DOWN – Arrow keys
F1…F2 – F keys
HOME, END, PGUP, PGDN
代碼如下:
public class MenuItemsExample
{
//見圖六
// CTRL-SHIFT-A
[MenuItem("Tools/New Option %#a")]
private static void NewMenuOption()
{
}
// CTRL-G
[MenuItem("Tools/Item %g")]
private static void NewNestedOption()
{
}
// G
[MenuItem("Tools/Item2 _g")]
private static void NewOptionWithHotkey()
{
}
}
圖六