Legacy Documentation: Version 5.0
Language: English
  • C#
  • JS

Script language

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

ToggleGroupScope

Namespace: UnityEditor

Switch to Manual

Description

Begin a vertical group with a toggle to enable or disable all the controls within at once.

See Also: BeginToggleGroup.


Align position/rotation/scale of the selected GameObjects.

#pragma strict
// C# Example
// Simple script that lets you align GameObjects 
// position/rotation/scale wise with the selected active transform
public class Aligner extends EditorWindow {
	var pos = [true, true, true];
	var rot = [true, true, true];
	var scale = [true, true, true];
	var posGroupEnabled = true;
	var rotGroupEnabled = true;
	var scaleGroupEnabled = false;
	function OnGUI() {
		var posGroup = new EditorGUILayout.ToggleGroupScope("Align position", posGroupEnabled);
		{
			posGroupEnabled = posGroup.enabled;
			pos[0] = EditorGUILayout.Toggle("x", pos[0]);
			pos[1] = EditorGUILayout.Toggle("y", pos[1]);
			pos[2] = EditorGUILayout.Toggle("z", pos[2]);
		}
		var rotGroup = new EditorGUILayout.ToggleGroupScope("Align rotation", rotGroupEnabled);
		{
			rotGroupEnabled = rotGroup.enabled;
			rot[0] = EditorGUILayout.Toggle("x", rot[0]);
			rot[1] = EditorGUILayout.Toggle("y", rot[1]);
			rot[2] = EditorGUILayout.Toggle("z", rot[2]);
		}
		var scaleGroup = new EditorGUILayout.ToggleGroupScope("Align scale", scaleGroupEnabled);
		{
			scaleGroupEnabled = scaleGroup.enabled;
			scale[0] = EditorGUILayout.Toggle("x", scale[0]);
			scale[1] = EditorGUILayout.Toggle("y", scale[1]);
			scale[2] = EditorGUILayout.Toggle("z", scale[2]);
		}
		GUILayout.Space(30);
		if (GUILayout.Button("Align!"))
			Align();
	}
	function Align() {
		var transforms = Selection.transforms;
		var activeTransform = Selection.activeTransform;
		if (transforms.Length < 2) {
			Debug.LogWarning("Aligner: select at least two objects.");
			return ;
		}
		for (var i = 0; i < transforms.Length; i++) {
			if (posGroupEnabled) {
				var newPos;
				newPos.x = pos[0] ? activeTransform.position.x : transforms[i].position.x;
				newPos.y = pos[1] ? activeTransform.position.y : transforms[i].position.y;
				newPos.z = pos[2] ? activeTransform.position.z : transforms[i].position.z;
				transforms[i].position = newPos;
			}
			if (rotGroupEnabled) {
				var newRot;
				newRot.x = rot[0] ? activeTransform.rotation.eulerAngles.x : transforms[i].rotation.eulerAngles.x;
				newRot.y = rot[1] ? activeTransform.rotation.eulerAngles.y : transforms[i].rotation.eulerAngles.y;
				newRot.z = rot[2] ? activeTransform.rotation.eulerAngles.z : transforms[i].rotation.eulerAngles.z;
				transforms[i].rotation = Quaternion.Euler(newRot);
			}
			if (scaleGroupEnabled) {
				var newScale;
				newScale.x = scale[0] ? activeTransform.localScale.x : transforms[i].localScale.x;
				newScale.y = scale[1] ? activeTransform.localScale.y : transforms[i].localScale.y;
				newScale.z = scale[2] ? activeTransform.localScale.z : transforms[i].localScale.z;
				transforms[i].localScale = newScale;
			}
		}
	}
	@MenuItem("Examples/Position-Rotation-Scale Aligner")
	static function Init() {
		var window = AlignerEditorWindow.GetWindow(Aligner);
		window.Show();
	}
}

Variables

enabledThe enabled state selected by the user.