PopupWindowContent から継承するポップアップウィンドウを表示するのに使用されるクラス
ポップアップウィンドウはフチがなく、ドラッグやサイズ変更ができません。フォーカスを失ったとき、自動的に閉じます。短時間表示する情報やオプションを表示するときに使用します。
エディターのポップアップウィンドウの例はエディターの Scene View ツールバーの "Scene View Effects" オプションです。
以下はエディターウィンドウのボタンを介して表示されるカスタムポップアップウィンドウの例です。ポップアップは 3 つのトグル値があり、フォーカスを失ったときに自動的に閉じます。この例では二つのスクリプトが与えられています。一つ目はメニュー項目を介して開くことができるエディターウィンドウを定義します。そのエディターウィンドウにはポップアップを表示するボタンがあります。 二つ目のスクリプトは独立したクラスとしてポップアップ自身の内容を定義します。
一つ目はポップアップを起動する単純なエディターウィンドウのコードを示します。
using UnityEngine; using UnityEditor;
public class EditorWindowWithPopup : EditorWindow {
// Add menu item [MenuItem("Example/Popup Example")] static void Init() { EditorWindow window = EditorWindow.CreateInstance<EditorWindowWithPopup>(); window.Show(); }
Rect buttonRect; void OnGUI() { { GUILayout.Label("Editor window with Popup example",EditorStyles.boldLabel); if (GUILayout.Button("Popup Options",GUILayout.Width(200))) { PopupWindow.Show(buttonRect, new PopupExample()); } if (Event.current.type == EventType.Repaint) buttonRect = GUILayoutUtility.GetLastRect(); } } }
二つ目は、ポップアップ自身のコードです。
using UnityEngine; using UnityEditor;
public class PopupExample : PopupWindowContent { bool toggle1 = true; bool toggle2 = true; bool toggle3 = true;
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); } }
これらはそれぞれそのクラス名にちなんで別のファイルとして保存する必要があります。いずれも動作しませんので ゲームオブジェクト上にそれらを配置する必要はありません。プロジェクトの開始後、新しい "Example" メニューに行き、ポップアップの例を選択してみてください。ポップアップのオプションウィンドウを表示する新しいエディターウィンドウのボタンをクリックします。
.
Show | PopupWindowContent をポップアップで表示します |
focusedWindow | 現在キーボードフォーカスがある EditorWindow (Read Only) |
mouseOverWindow | 現在マウスのカーソルの下の EditorWindow (Read Only) |
autoRepaintOnSceneChange | シーンが変わるたびに自動的にウィンドウを再描画するかどうか |
maximized | このウィンドウは最大化されるかどうか |
maxSize | このウィンドウの最大サイズ |
minSize | このウィンドウの最小サイズ |
position | スクリーン空間でのウィンドウの位置 |
titleContent | GUIContent は EditorWindows のタイトルを描画するために使用します。 |
wantsMouseMove | このエディターウィンドウの GUI は MouseMove イベントを起こすかどうか |
hideFlags | オブジェクトは非表示、シーンに保存、ユーザーが編集可能、などを設定する。 |
name | オブジェクト名 |
BeginWindows | すべてのポップアップウィンドウを表示するための開始領域をマークします |
Close | エディターウィンドウを閉じます |
EndWindows | EditorWindow.BeginWindows で開始したウィンドウグループを閉じます |
Focus | エディターウィンドウにキーボードフォーカスを当てます |
RemoveNotification | 表示している通知メッセージを停止します |
Repaint | ウィンドウの再描画を行います |
SendEvent | Event をウィンドウに送信します |
Show | EditorWindow を表示します |
ShowAsDropDown | ドロップダウンの動作とスタイルを持つウィンドウを表示します |
ShowAuxWindow | 補助ウィンドウでエディターウィンドウを表示します |
ShowNotification | 通知メッセージを表示します |
ShowPopup | ポップアップスタイルのフレーミングを使用するエディターウィンドウを表示します |
ShowUtility | フローティングのユーティリティウィンドウとしてエディターウィンドウを表示します |
GetInstanceID | オブジェクトのインスタンス ID を返します |
ToString | ゲームオブジェクトの名前を返します |
FocusWindowIfItsOpen | エディターウィンドウが開いている場合に探し出し、最初に見つけたものにフォーカスを当てます |
GetWindow | 現在画面上にある t タイプの最初に見つけた EditorWindow を返します |
GetWindowWithRect | 現在画面上にある t タイプの最初に見つけた EditorWindow を返します |
Destroy | ゲームオブジェクトやコンポーネント、アセットを削除します |
DestroyImmediate | オブジェクト obj を破棄します。 |
DontDestroyOnLoad | 新しいシーンを読み込んでもオブジェクトが自動で破壊されないように設定します |
FindObjectOfType | タイプ type から最初に見つけたアクティブのオブジェクトを返します |
FindObjectsOfType | タイプから見つけたすべてのアクティブのオブジェクト配列を返します |
Instantiate | オブジェクト original のコピーを返します |
CreateInstance | ScriptableObject のインスタンスを作成します。 |
bool | オブジェクトが存在するかどうか |
operator != | 二つのオブジェクトが異なるオブジェクトを参照しているか比較します |
operator == | 2つのオブジェクト参照が同じオブジェクトを参照しているか比較します。 |
Awake | 新規ウィンドウが開くときに呼び出されます |
OnDestroy | OnDestroy は EditorWindow が閉じられたときに呼び出されます |
OnFocus | ウィンドウがキーボードフォーカスを取得するときに呼び出されます |
OnGUI | ここに独自のエディターの GUI を実装します |
OnHierarchyChange | シーンのヒエラルキーが変更される度に呼び出されます |
OnInspectorUpdate | OnInspectorUpdate は更新する機会をインスペクターに与え、秒当たり 10 回呼ばれます |
OnLostFocus | ウィンドウがキーボードフォーカスを失ったときに呼び出されます |
OnProjectChange | プロジェクトが変更されたときに呼び出されます |
OnSelectionChange | 選択が変更されるたび呼び出されます |
Update | すべての表示されているウィンドウは秒あたり複数回呼び出されます |
Awake | ScriptableObject スクリプトを開始するとき、この関数は呼び出されます。 |
OnDestroy | ScriptableObject が破棄されるとき、この関数は呼び出されます。 |
OnDisable | ScriptableObject クラスのオブジェクトがスコープを外れるとき、この関数は呼び出されます。 |
OnEnable | オブジェクトがロードされたとき、この関数は呼び出されます。 |