Note: Unity エディター を拡張するには、UI Toolkit を使用することを強く推奨します。UI Toolkit は、IMGUI よりも最新の機能で、柔軟性があり、スケーラブルなソリューションを提供するからです。
アプリケーション内でカスタムウィンドウをいくつでも作ることができます。カスタムウィンドウもインスペクター、シーン、その他のビルトインウィンドウと同じように機能します。カスタムウィンドウは、ゲームのサブシステムにユーザーインターフェースを追加するのにぴったりの方法です。
カスタムウィンドウの作成は、以下の手順で簡単に行えます。
Editor Window を作成するには、スクリプトが “Editor” という名前のフォルダー内にある必要があります。このスクリプト中で、EditorWindow を継承するクラスを作成してください。その後、OnGUI 関数内で GUI 制御を書いてください。
using UnityEngine;
using UnityEditor;
using System.Collections;
public class Example : EditorWindow
{
void OnGUI () {
// 実際のウィンドウのコードはここに書きます
}
}
MyWindow.cs - プロジェクト内の ‘Editor’ という名前のフォルダーに配置されています。
ウィンドウを画面上に表示するには、それを表示するメニュー項目を作成します。これを行うには、MenuItem プロパティによって呼び出される関数を作成します。
Unity のデフォルトの挙動では、ウィンドウが再利用されるようになっているため、メニュー項目を再選択すると既存のウィンドウが表示されます。これは、次のように関数 EditorWindow.GetWindow を使用して行われます。以下はその例です。
using UnityEngine;
using UnityEditor;
using System.Collections;
class MyWindow : EditorWindow {
[MenuItem ("Window/My Window")]
public static void ShowWindow () {
EditorWindow.GetWindow(typeof(MyWindow));
}
void OnGUI () {
// 実際のウィンドウのコードはここに書きます
}
}
MyWindow の表示
これにより、ドック可能な標準のエディターウィンドウがひとつ作成されます。このウィンドウの位置は次の起動時まで保存され、またカスタムレイアウト中で使用することができます。作成する内容をより具体的に設定したい場合は、GetWindowWithRect を使用できます。
ウィンドウのコンテンツは、OnGUI 関数を実装することによってレンダリングされます。インゲーム GUI ( GUI と GUILayout ) に使用するものと同じ UnityGUI クラスを使用できます。Unity はこの他にもいくつかの GUI 制御を提供しています。これらはエディターでのみ動作する EditorGUI と EditorGUILayout クラスに入っています。これらのクラスは、すでに通常のクラスで使用可能な制御に対して追加されたものなので、自由に組み合わせることができます。
以下の C# コードでは、GUI 要素をカスタムの EditorWindow に追加しています。
using UnityEditor;
using UnityEngine;
public class MyWindow : EditorWindow
{
string myString = "Hello World";
bool groupEnabled;
bool myBool = true;
float myFloat = 1.23f;
// Window メニューに "My Window" というメニュー項目を追加
[MenuItem("Window/My Window")]
public static void ShowWindow()
{
//既存のウィンドウのインスタンスを表示。ない場合は作成します。
EditorWindow.GetWindow(typeof(MyWindow));
}
void OnGUI()
{
GUILayout.Label ("Base Settings", EditorStyles.boldLabel);
myString = EditorGUILayout.TextField ("Text Field", myString);
groupEnabled = EditorGUILayout.BeginToggleGroup ("Optional Settings", groupEnabled);
myBool = EditorGUILayout.Toggle ("Toggle", myBool);
myFloat = EditorGUILayout.Slider ("Slider", myFloat, -3, 3);
EditorGUILayout.EndToggleGroup ();
}
}
この結果、以下のようなウィンドウができ上がります。
詳しくは、EditorWindow (エディターウィンドウ)に関するページを参照してください。
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.