この記事でのバージョン
Unity 5.4.0f3
はじめに
今回はUnityエディタ上で通知メッセージを表示する方法のご紹介!
通知メッセージとは以下のような感じのやつです。
EditorWindow.ShowNotification
通知を表示するにはEditorWindowクラスのShowNotificationメソッドを使います。
なお、通知は一定時間で自動で消えますが、即座に消したい時はRemoveNotificationを使います。
例えば以下のような感じで使います。
using UnityEditor; using UnityEngine; public class NotificationWindow : EditorWindow { //メニューからウィンドウを表示 [MenuItem("Tools/Open/NotificationWindow")] public static void Open (){ NotificationWindow.GetWindow (typeof(NotificationWindow)); } //表示するGUIの設定 private void OnGUI(){ //通知を表示するボタン if(GUILayout.Button("Show Notification")){ ShowNotification(new GUIContent("通知!")); } //通知を消すボタン if(GUILayout.Button("Remove Notification")) { RemoveNotification(); } } }
上記のスクリプトをEditorディレクトリに入れると、
メニューにTools/Open/NotificationWindowという項目が追加されます。
この項目を選択するとからウィンドウが表示でき、
Show Notificationボタンを押すと通知が表示され、
Remove Notificationボタンを押すと通知が消えます。
自作ウィンドウ以外に表示
通知は自作したウィンドウだけでなく、
GameViewやSceneViewConsoleWindow等にも表示することが可能です。
using UnityEngine; using UnityEditor; public class NotificationTest{ //Game Viewに通知を表示する [MenuItem("Notification/Game View")] public static void NotificationGameView (){ var assembly = typeof(UnityEditor.EditorWindow).Assembly; var type = assembly.GetType( "UnityEditor.GameView" ); EditorWindow.GetWindow(type).ShowNotification(new GUIContent("GameView")); } //Scene Viewに通知を表示する [MenuItem("Notification/Scene View")] public static void NotificationSceneView (){ var assembly = typeof(UnityEditor.EditorWindow).Assembly; var type = assembly.GetType( "UnityEditor.SceneView" ); EditorWindow.GetWindow(type).ShowNotification(new GUIContent("SceneView")); } //Console Windowに通知を表示する [MenuItem("Notification/Console Window")] public static void NotificationConsoleWindow (){ var assembly = typeof(UnityEditor.EditorWindow).Assembly; var type = assembly.GetType( "UnityEditor.ConsoleWindow" ); EditorWindow.GetWindow(type).ShowNotification(new GUIContent("ConsoleWindow")); } }
上記のスクリプトをEditorディレクトリに入れると、
メニューにNotificationという項目が追加されます。
この各項目を選択すると通知が表示されます。
おわりに
エディタ上限定ですが、何かの通知をする時にはログを出すより分かりやすくていいかもしれません。