Legacy Documentation: Version 2018.1 (Go to current version)
LanguageEnglish
  • C#
  • JS

Script language

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

PrimitiveBoundsHandle.DrawHandle

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

Submission failed

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

Close

Cancel

public method DrawHandle(): void;
public void DrawHandle();

Description

A function to display this instance in the current handle camera using its current configuration.

Always write properties to the handle before calling this function. Place the calls to this function inside EditorGUI.BeginChangeCheck and EditorGUI.EndChangeCheck to detect user interaction and read the updated properties from the handle.

The following component defines an object with a Bounds property.

#pragma strict
public class BoundsExample extends MonoBehaviour {
	Boundsbounds {
		return m_Bounds;
	}
	 {
		m_Bounds = value;
	}
	@SerializeField
	private var m_Bounds: Bounds = new Bounds(Vector3.zero, Vector3.one);
}
using UnityEngine;

public class BoundsExample : MonoBehaviour { public Bounds bounds { get { return m_Bounds; } set { m_Bounds = value; } } [SerializeField] private Bounds m_Bounds = new Bounds(Vector3.zero, Vector3.one); }

The following Custom Editor allows the user to edit the bounds property for this component in the Scene view.

#pragma strict
@CustomEditor(BoundsExample)
@CanEditMultipleObjects
public class BoundsExampleEditor extends Editor {
	private var m_BoundsHandle: BoxBoundsHandle = new BoxBoundsHandle();
	// the OnSceneGUI callback uses the scene view camera for drawing handles by default
	protected virtual function OnSceneGUI() {
		var boundsExample: BoundsExample = BoundsExampletarget;
		// copy the target object's data to the handle
		m_BoundsHandle.center = boundsExample.bounds.center;
		m_BoundsHandle.size = boundsExample.bounds.size;
		// draw the handle
		EditorGUI.BeginChangeCheck();
		m_BoundsHandle.DrawHandle();
		if (EditorGUI.EndChangeCheck()) {
			// record the target object before setting new values so changes can be undone/redone
			Undo.RecordObject(boundsExample, "Change Bounds");
			// copy the handle's updated data back to the target object
			var newBounds: Bounds = new Bounds();
			newBounds.center = m_BoundsHandle.center;
			newBounds.size = m_BoundsHandle.size;
			boundsExample.bounds = newBounds;
		}
	}
}
using UnityEditor;
using UnityEditor.IMGUI.Controls;
using UnityEngine;

[CustomEditor(typeof(BoundsExample)), CanEditMultipleObjects] public class BoundsExampleEditor : Editor { private BoxBoundsHandle m_BoundsHandle = new BoxBoundsHandle();

// the OnSceneGUI callback uses the scene view camera for drawing handles by default protected virtual void OnSceneGUI() { BoundsExample boundsExample = (BoundsExample)target;

// copy the target object's data to the handle m_BoundsHandle.center = boundsExample.bounds.center; m_BoundsHandle.size = boundsExample.bounds.size;

// draw the handle EditorGUI.BeginChangeCheck(); m_BoundsHandle.DrawHandle(); if (EditorGUI.EndChangeCheck()) { // record the target object before setting new values so changes can be undone/redone Undo.RecordObject(boundsExample, "Change Bounds");

// copy the handle's updated data back to the target object Bounds newBounds = new Bounds(); newBounds.center = m_BoundsHandle.center; newBounds.size = m_BoundsHandle.size; boundsExample.bounds = newBounds; } } }

Did you find this page useful? Please give it a rating: