Version: 5.4 (switch to 5.5b)
言語English
  • C#
  • JS

Script language

Select your preferred scripting language. All code snippets will be displayed in this language.

Editor

class in UnityEditor

/

Inherits from: ScriptableObject

Suggest a change

Success!

Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable.

Close

Sumbission failed

For some reason your suggested change could not be submitted. Please try again in a few minutes. And thank you for taking the time to help us improve the quality of Unity Documentation.

Close

Cancel

マニュアルに切り替える

Description

カスタムエディターを派生する基本クラス。これを使用して独自のインスペクターとオブジェクト用のエディターを作成します。

鎧や、ダメージ、銃の GameObject へ参照する変数のスクリプト MyPlayer があるとします。

no example available in JavaScript
using UnityEngine;
using System.Collections;

// This is not an editor script. public class MyPlayer : MonoBehaviour { public int armor = 75; public int damage = 25; public GameObject gun;

void Update () { // Update logic here... } }

カスタムエディターを使用して、インスペクター上のスクリプトの表示を例えば次のように変更することができます。


インスペクターのカスタムエディター

エディターをカスタムのコンポーネントにアタッチするために CustomEditor 属性を使用できます。

カスタムエディターを設計するには複数の方法があります。 エディターが複数オブジェクトの編集をサポートするためには CanEditMultipleObjects 属性を使用できます。 スクリプト変数を直接編集する代わりに、SerializedObjectSerializedProperty システムを使用するほうが マルチオブジェクト編集のハンドリングや取り消し、プレハブの上書きができるというメリットがあります。このアプローチをユーザーが使用する場合、ヒエラルキーウィンドウで複数のオブジェクトを選択し、一度にすべてのオブジェクトの値を変更することができます。

no example available in JavaScript
using UnityEditor;
using UnityEngine;
using System.Collections;

// Custom Editor using SerializedProperties. // Automatic handling of multi-object editing, undo, and prefab overrides. [CustomEditor(typeof(MyPlayer))] [CanEditMultipleObjects] public class MyPlayerEditor : Editor { SerializedProperty damageProp; SerializedProperty armorProp; SerializedProperty gunProp; void OnEnable () { // Setup the SerializedProperties. damageProp = serializedObject.FindProperty ("damage"); armorProp = serializedObject.FindProperty ("armor"); gunProp = serializedObject.FindProperty ("gun"); } public override void OnInspectorGUI() { // Update the serializedProperty - always do this in the beginning of OnInspectorGUI. serializedObject.Update (); // Show the custom GUI controls. EditorGUILayout.IntSlider (damageProp, 0, 100, new GUIContent ("Damage"));

// Only show the damage progress bar if all the objects have the same damage value: if (!damageProp.hasMultipleDifferentValues) ProgressBar (damageProp.intValue / 100.0f, "Damage"); EditorGUILayout.IntSlider (armorProp, 0, 100, new GUIContent ("Armor"));

// Only show the armor progress bar if all the objects have the same armor value: if (!armorProp.hasMultipleDifferentValues) ProgressBar (armorProp.intValue / 100.0f, "Armor"); EditorGUILayout.PropertyField (gunProp, new GUIContent ("Gun Object")); // Apply changes to the serializedProperty - always do this in the end of OnInspectorGUI. serializedObject.ApplyModifiedProperties (); } // Custom GUILayout progress bar. void ProgressBar (float value, string label) { // Get a rect for the progress bar using the same margins as a textfield: Rect rect = GUILayoutUtility.GetRect (18, 18, "TextField"); EditorGUI.ProgressBar (rect, value, label); EditorGUILayout.Space (); } }

代わりに、もしマルチオブジェクト編集のハンドリングや取り消し、 プレハブの上書きを必要としない場合、スクリプト変数は SerializedObjectSerializedProperty を使用せずに 次のサンプルのようにエディター上で直接編集できます。

no example available in JavaScript
using UnityEditor;
using UnityEngine;
using System.Collections;

// Example script with properties. public class MyPlayer : MonoBehaviour { public int damage; public int armor; public GameObject gun;

// ...other code... }

// Custom Editor the "old" way by modifying the script variables directly. // No handling of multi-object editing, undo, and prefab overrides! [CustomEditor (typeof(MyPlayer))] public class MyPlayerEditor : Editor { public override void OnInspectorGUI () { MyPlayer mp = (MyPlayer)target;

mp.damage = EditorGUILayout.IntSlider ("Damage", mp.damage, 0, 100); ProgressBar (mp.damage / 100.0f, "Damage"); mp.armor = EditorGUILayout.IntSlider ("Armor", mp.armor, 0, 100); ProgressBar (mp.armor / 100.0f, "Armor"); bool allowSceneObjects = !EditorUtility.IsPersistent (target); mp.gun = (GameObject)EditorGUILayout.ObjectField ("Gun Object", mp.gun, typeof(GameObject), allowSceneObjects); } // Custom GUILayout progress bar. void ProgressBar (float value, string label) { // Get a rect for the progress bar using the same margins as a textfield: Rect rect = GUILayoutUtility.GetRect (18, 18, "TextField"); EditorGUI.ProgressBar (rect, value, label); EditorGUILayout.Space (); } }

Variables

serializedObjectobject や objects の SerializedObject
targetターゲットとなるオブジェクト
targets複数選択された場合のターゲットとなるオブジェクト群

Public Functions

DrawDefaultInspectorデフォルトのインスペクターを描画します
DrawHeaderEditor のヘッダーを描画するためにはこの関数を呼び出します。
DrawPreviewプレビュー描画するための最初のエントリーポイントです。
GetInfoStringプレビューにアセットの情報を表示するにはこのメソッドを使用します。
GetPreviewTitleプレビューのタイトルを変更したい場合はこのメソッドをオーバーライドします。
HasPreviewGUI OnPreviewGUI を実装する場合は、サブクラスでこのメソッドをオーバーライドします。
OnInspectorGUIカスタムインスペクターを作成するためにこの関数を実装します
OnInteractivePreviewGUI自身のカスタムのインタラクティブなプレビューを作成するために実装します。カスタムのインタラクティブなプレビューはインスペクター上のプレビューエリアとオブジェクト選択ツールで使用されます
OnPreviewGUI自身のカスタムのプレビューをインスペクター上のプレビューエリア、プライマリ Editor ヘッダーとオブジェクト選択ツールで作成するために実装します。
OnPreviewSettingsプレビューのヘッダーを自由にカスタマイズしたい場合にオーバーライドして使用します。
RenderStaticPreview表示する静的なプレビューを描画したい場合、このメソッドを上書きします。
Repaintこの Editor を表示しているインスペクターを再描画させます。
RequiresConstantRepaintこの編集結果は現在の状態で常に再描画される必要があるかどうか。
UseDefaultMarginsデフォルトのマージンを取らせたくない場合、Editor を継承したクラスでメソッドをオーバーライドし、false を返すようにします

Static Functions

CreateCachedEditor previousEditor は targetObject か targetObjects のためのエディターです。エディターがすでにオブジェクトを追跡しているか previousEditor を破棄して新しいのを作成する場合に関数はどちらかを返します。
CreateEditor targetObject や複数の targetObjects のためのカスタムエディターを作成します。

Messages

OnSceneGUIエディターでシーンビューのイベントの処理が可能となります。

Inherited members

Variables

hideFlagsオブジェクトは非表示、シーンに保存、ユーザーが編集可能、などを設定する。
nameオブジェクト名

Public Functions

GetInstanceIDオブジェクトのインスタンス ID を返します
ToStringゲームオブジェクトの名前を返します

Static Functions

Destroyゲームオブジェクトやコンポーネント、アセットを削除します
DestroyImmediateオブジェクト obj を破棄します。
DontDestroyOnLoad新しいシーンを読み込んでもオブジェクトが自動で破壊されないように設定します
FindObjectOfTypeタイプ type から最初に見つけたアクティブのオブジェクトを返します
FindObjectsOfTypeタイプから見つけたすべてのアクティブのオブジェクト配列を返します
Instantiateオブジェクト original のコピーを返します
CreateInstanceScriptableObject のインスタンスを作成します。

Operators

boolオブジェクトが存在するかどうか
operator !=二つのオブジェクトが異なるオブジェクトを参照しているか比較します
operator ==2つのオブジェクト参照が同じオブジェクトを参照しているか比較します。

Messages

Awake ScriptableObject スクリプトを開始するとき、この関数は呼び出されます。
OnDestroyScriptableObject が破棄されるとき、この関数は呼び出されます。
OnDisableScriptableObject クラスのオブジェクトがスコープを外れるとき、この関数は呼び出されます。
OnEnableオブジェクトがロードされたとき、この関数は呼び出されます。