PopupWindow
彈出視窗沒有邊距,不可拖動,也無法調節大小,此外,它們還會在失去焦點時自動關閉,它們用于顯示短暫的資訊或選項,
UnityEditor.PopupWindow - Unity 腳本 API
https://docs.unity.cn/cn/2020.3/ScriptReference/PopupWindow.html
using UnityEngine;
using UnityEditor;
public class PopWindowExample : EditorWindow
{
private Rect buttonRect;
PopupExample example = new PopupExample();
[MenuItem("Tools/PopWindowExample")]
static void Open()
{
EditorWindow.GetWindow<PopWindowExample>().Show();
}
private void OnGUI()
{
GUILayout.Label("Editor window with Popup example", EditorStyles.boldLabel);
if (GUILayout.Button("Popup Options", GUILayout.Width(200)))
{
PopupWindow.Show(buttonRect, example);
}
GUILayout.Label( "Selection == " + example.Str);
if (Event.current.type == EventType.Repaint)
{
buttonRect = GUILayoutUtility.GetLastRect();
}
}
//繼承PopupWindowContent
public class PopupExample : PopupWindowContent
{
private bool toggle1 = true;
private bool toggle2 = true;
private bool toggle3 = true;
public string Str
{
get
{
string str = "";
if (toggle1)
{
str += 1;
}
if (toggle2)
{
str += 2;
}
if (toggle3)
{
str += 3;
}
return str;
}
}
public override Vector2 GetWindowSize()
{
return new Vector2(200, 150);
}
//繪制
public override void OnGUI(Rect rect)
{
GUILayout.Label("Popup Options Example", EditorStyles.boldLabel);
toggle1 = EditorGUILayout.Toggle("Toggle 1", toggle1);
toggle2 = EditorGUILayout.Toggle("Toggle 2", toggle2);
toggle3 = EditorGUILayout.Toggle("Toggle 3", toggle3);
}
//打開
public override void OnOpen()
{
Debug.Log("Popup opened: " + this);
}
//關閉
public override void OnClose()
{
Debug.Log("Popup closed: " + this);
}
}
}
AdvancedDropdown
可搜索的下拉控制元件,
IMGUI.Controls.AdvancedDropdown - Unity 腳本 API
https://docs.unity.cn/cn/2020.3/ScriptReference/IMGUI.Controls.AdvancedDropdown.html
using UnityEditor;
using UnityEngine;
using UnityEditor.IMGUI.Controls;
class WeekdaysDropdown : AdvancedDropdown
{
public string selectStr;
public WeekdaysDropdown(AdvancedDropdownState state) : base(state)
{
}
//構建子項
protected override AdvancedDropdownItem BuildRoot()
{
var root = new AdvancedDropdownItem("Weekdays");
var firstHalf = new AdvancedDropdownItem("First half");
var secondHalf = new AdvancedDropdownItem("Second half");
var weekend = new AdvancedDropdownItem("Weekend");
firstHalf.AddChild(new AdvancedDropdownItem("Monday"));
firstHalf.AddChild(new AdvancedDropdownItem("Tuesday"));
secondHalf.AddChild(new AdvancedDropdownItem("Wednesday"));
secondHalf.AddChild(new AdvancedDropdownItem("Thursday"));
weekend.AddChild(new AdvancedDropdownItem("Friday"));
weekend.AddChild(new AdvancedDropdownItem("Saturday"));
weekend.AddChild(new AdvancedDropdownItem("Sunday"));
root.AddChild(firstHalf);
root.AddChild(secondHalf);
root.AddChild(weekend);
return root;
}
//選擇回呼
protected override void ItemSelected(AdvancedDropdownItem item)
{
base.ItemSelected(item);
selectStr = item.name;
}
}
public class AdvancedDropdownTestWindow : EditorWindow
{
WeekdaysDropdown dropdown = new WeekdaysDropdown(new AdvancedDropdownState());
[MenuItem("Tools/AdvancedDropdownTestWindow")]
static void Open()
{
EditorWindow.GetWindow<AdvancedDropdownTestWindow>().Show();
}
void OnGUI()
{
var rect = GUILayoutUtility.GetRect(new GUIContent("Show"), EditorStyles.toolbarButton);
if (GUI.Button(rect, new GUIContent("Show"), EditorStyles.toolbarButton))
{
dropdown.Show(rect);
}
GUILayout.Label(dropdown.selectStr);
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/357207.html
標籤:其他
上一篇:stm32mini開發板lora模塊例程中中文字庫更新失敗的解決方案
下一篇:C語言代碼 模塊化實作三子棋
