言語: 日本語
  • C#
  • JS
  • Boo

スクリプト言語

お好みのスクリプト言語を選択すると、サンプルコードがその言語で表示されます。

Editor

Namespace: 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

Base class to derive custom Editors from. Use this to create your own custom inspectors and editors for your objects.

Consider a script MyPlayer with variables for armor, damage, and a reference to a gun GameObject:

// MyPlayer.js
// This is not an editor script.

var armor : int = 75;
var damage : int = 25;
var gun : GameObject;

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

カスタムエディタを使用して、インスペクタ上のスクリプトの表示を例えば次のように変更することが出来ます:
インスペクターのカスタムエディター エディタをカスタムのコンポーネントにアタッチするために CustomEditor 属性を使用できます。 カスタム エディタ を設計するには複数の方法があります。 エディタが複数オブジェクトの編集をサポートするためには CanEditMultipleObjects 属性を使用できます。 スクリプト変数を直接編集する代わりに、 SerializedObject および SerializedProperty システムを使用するほうが マルチオブジェクト編集のハンドリング、取り消し、およびプレハブの上書きが出来るというメリットがあります。

// Custom Editor using SerializedProperties.
// Automatic handling of multi-object editing, undo, and prefab overrides.
#pragma strict
@CustomEditor(MyPlayer)
@CanEditMultipleObjects
class MyPlayerEditor extends Editor {
	var damageProp : SerializedProperty;
	var armorProp : SerializedProperty;
	var gunProp : SerializedProperty;

	function OnEnable () {
		// Setup the SerializedProperties
		damageProp = serializedObject.FindProperty ("damage");
		armorProp = serializedObject.FindProperty ("armor");
		gunProp = serializedObject.FindProperty ("gun");
	}

	function 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.0, "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.0, "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.
	function ProgressBar (value : float, label : String) {
		// Get a rect for the progress bar using the same margins as a textfield:
		var rect : Rect = GUILayoutUtility.GetRect (18, 18, "TextField");
		EditorGUI.ProgressBar (rect, value, label);
		EditorGUILayout.Space ();
	}
}

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

// Custom Editor the "old" way by modifying the script variables directly.
// No handling of multi-object editing, undo, and prefab overrides!
@CustomEditor (MyPlayer)
class MyPlayerEditor extends Editor {

	function OnInspectorGUI () {
		target.damage = EditorGUILayout.IntSlider ("Damage", target.damage, 0, 100);
		ProgressBar (target.damage / 100.0, "Damage");

		target.armor = EditorGUILayout.IntSlider ("Armor", target.armor, 0, 100);
		ProgressBar (target.armor / 100.0, "Armor");

		var allowSceneObjects : boolean = !EditorUtility.IsPersistent (target);
		target.gun = EditorGUILayout.ObjectField ("Gun Object", target.gun, GameObject, allowSceneObjects);
	}

	// Custom GUILayout progress bar.
	function ProgressBar (value : float, label : String) {
		// Get a rect for the progress bar using the same margins as a textfield:
		var rect : Rect = GUILayoutUtility.GetRect (18, 18, "TextField");
		EditorGUI.ProgressBar (rect, value, label);
		EditorGUILayout.Space ();
	}
}

Variables

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

Functions

DrawDefaultInspector デフォルトのインスペクターを描画します
DrawHeader Editor のヘッダを描画するためにはこの関数を呼び出します
DrawPreview プレビュー描画するための最初のエントリポイントです。
GetInfoString プレビューにアセットの情報を表示するにはこのメソッドを使用します
GetPreviewTitle プレビューのタイトルを変更したい場合はこのメソッドをオーバーライドします
HasPreviewGUI OnPreviewGUIを実装する場合はEditorを継承したクラスでオーバーライドします
OnInspectorGUI カスタムインスペクターを作成するためにこの関数を実装します
OnInteractivePreviewGUI 自身のカスタムのインタラクティブなプレビューを作成するために実装します。カスタムのインタラクティブなプレビューはインスペクタ上のプレビューエリアおよびオブジェクト選択ツールで使用されます
OnPreviewGUI 自身のカスタムのインタラクティブなプレビューをインスペクタ上のプレビューエリア、プライマリ Editor ヘッダおよびオブジェクト選択ツールで作成するために実装します。
OnPreviewSettings プレビューのヘッダーを自由にカスタマイズしたい場合にオーバーライドして使用します
RenderStaticPreview Override this method if you want to render a static preview that shows.
Repaint このEditorを表示しているインスペクターを再描画させます
RequiresConstantRepaint Does this edit require to be repainted constantly in its current state?
UseDefaultMargins デフォルトのマージンを取らせたくない場合、Editorを継承したクラスでメソッドをオーバーライドし、 false を返すようにします

Static Functions

CreateEditor objects または複数の objects のためのカスタムエディタを作成します

Messages

OnSceneGUI Editorがシーンビューでイベントの処理が可能となります

Inherited members

Variables

hideFlags オブジェクトは非表示、シーンに保存、ユーザーが編集可能などを行うかどうか
name オブジェクト名

Functions

GetInstanceID Returns the instance id of the object.
ToString ゲームオブジェクトの名前を返します

Static Functions

Destroy ゲームオブジェクト、コンポーネントやアセットを削除します
DestroyImmediate 直ちにオブジェクトを破壊する。ですが、Destroy関数の方を使うことを推奨します
DontDestroyOnLoad 新しいシーンを読み込んでもオブジェクトが自動で破壊されないように設定します
FindObjectOfType タイプから最初に見つけたアクティブのオブジェクトを返します
FindObjectsOfType タイプから見つけた全てのアクティブのオブジェクト配列を返します
Instantiate original のオブジェクトをクローンします
CreateInstance /className/ からScriptableObjectクラスのインスタンスを作成します

Operators

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

Messages

OnDestroy This function is called when the scriptable object will be destroyed.
OnDisable This function is called when the scriptable object goes out of scope.
OnEnable This function is called when the object is loaded.