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 | Does the window automatically repaint whenever the Scene has changed? |
maximized | Is this window maximized? |
maxSize | このウィンドウの最大サイズ |
minSize | このウィンドウの最小サイズ |
position | The desired position of the window in screen space. |
titleContent | GUIContent は EditorWindows のタイトルを描画するために使用します。 |
wantsMouseEnterLeaveWindow | Checks whether MouseEnterWindow and MouseLeaveWindow events are received in the GUI in this Editor window. |
wantsMouseMove | Checks whether MouseMove events are received in the GUI in this Editor window. |
hideFlags | Should the object be hidden, saved with the Scene or modifiable by the user? |
name | オブジェクト名 |
BeginWindows | すべてのポップアップウィンドウを表示するための開始領域をマークします |
Close | エディターウィンドウを閉じます |
EndWindows | EditorWindow.BeginWindows で開始したウィンドウグループを閉じます |
Focus | Moves keyboard focus to another EditorWindow. |
RemoveNotification | 表示している通知メッセージを停止します |
Repaint | ウィンドウの再描画を行います |
SendEvent | Event をウィンドウに送信します |
Show | Show the EditorWindow window. |
ShowAsDropDown | ドロップダウンの動作とスタイルを持つウィンドウを表示します |
ShowAuxWindow | 補助ウィンドウでエディターウィンドウを表示します |
ShowNotification | 通知メッセージを表示します |
ShowPopup | ポップアップスタイルのフレーミングを使用するエディターウィンドウを表示します |
ShowUtility | フローティングのユーティリティウィンドウとしてエディターウィンドウを表示します |
GetInstanceID | オブジェクトのインスタンス ID を返します |
ToString | Returns the name of the GameObject. |
FocusWindowIfItsOpen | エディターウィンドウが開いている場合に探し出し、最初に見つけたものにフォーカスを当てます |
GetWindow | 現在画面上にある t タイプの最初に見つけた EditorWindow を返します |
GetWindowWithRect | 現在画面上にある t タイプの最初に見つけた EditorWindow を返します |
Destroy | ゲームオブジェクトやコンポーネント、アセットを削除します |
DestroyImmediate | Destroys the object obj immediately. You are strongly recommended to use Destroy instead. |
DontDestroyOnLoad | Do not destroy the target Object when loading a new Scene. |
FindObjectOfType | タイプ type から最初に見つけたアクティブのオブジェクトを返します |
FindObjectsOfType | タイプから見つけたすべてのアクティブのオブジェクト配列を返します |
Instantiate | original のオブジェクトをクローンします |
CreateInstance | ScriptableObject のインスタンスを作成します。 |
bool | オブジェクトが存在するかどうか |
operator != | 二つのオブジェクトが異なるオブジェクトを参照しているか比較します |
operator == | 2つのオブジェクト参照が同じオブジェクトを参照しているか比較します。 |
Awake | 新規ウィンドウが開くときに呼び出されます |
OnDestroy | OnDestroy is called to close the EditorWindow window. |
OnFocus | ウィンドウがキーボードフォーカスを取得するときに呼び出されます |
OnGUI | ここに独自のエディターの GUI を実装します |
OnHierarchyChange | Handler for message that is sent when an object or group of objects in the hierarchy changes. |
OnInspectorUpdate | OnInspectorUpdate は更新する機会をインスペクターに与え、秒当たり 10 回呼ばれます |
OnLostFocus | ウィンドウがキーボードフォーカスを失ったときに呼び出されます |
OnProjectChange | Handler for message that is sent whenever the state of the project changes. |
OnSelectionChange | 選択が変更されるたび呼び出されます |
Update | すべての表示されているウィンドウは秒あたり複数回呼び出されます |
Awake | ScriptableObject スクリプトを開始するとき、この関数は呼び出されます。 |
OnDestroy | ScriptableObject が破棄されるとき、この関数は呼び出されます。 |
OnDisable | ScriptableObject クラスのオブジェクトがスコープを外れるとき、この関数は呼び出されます。 |
OnEnable | オブジェクトがロードされたとき、この関数は呼び出されます。 |
Did you find this page useful? Please give it a rating:
Thanks for rating this page!
What kind of problem would you like to report?
Thanks for letting us know! This page has been marked for review based on your feedback.
If you have time, you can provide more information to help us fix the problem faster.
Provide more information
You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:
You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:
You've told us there is information missing from this page. Please tell us more about what's missing:
You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:
You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:
You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:
You've told us this page has a problem. Please tell us more about what's wrong:
Thank you for helping to make the Unity documentation better!
Your feedback has been submitted as a ticket for our documentation team to review.
We are not able to reply to every ticket submitted.