| label | Label to show above the toggled controls. |
| toggle | Enabled state of the toggle group. |
bool The enabled state selected by the user.
Begin a vertical group with a toggle to enable or disable all the controls within at once.
See Also: EndToggleGroup.
Align position/rotation/scale of the selected GameObjects.
#pragma strict
// Simple script that lets you align GameObjects
// position/rotation/scale wise with the selected active transform
public class Aligner extends EditorWindow {
var pos: boolean[] = [true, true, true];
var rot: boolean[] = [true, true, true];
var scale: boolean[] = [true, true, true];
var posGroupEnabled: boolean = true;
var rotGroupEnabled: boolean = true;
var scaleGroupEnabled: boolean = false;
function OnGUI() {
posGroupEnabled = EditorGUILayout.BeginToggleGroup("Align position", posGroupEnabled);
pos[0] = EditorGUILayout.Toggle("x", pos[0]);
pos[1] = EditorGUILayout.Toggle("y", pos[1]);
pos[2] = EditorGUILayout.Toggle("z", pos[2]);
EditorGUILayout.EndToggleGroup();
rotGroupEnabled = EditorGUILayout.BeginToggleGroup("Align rotation", rotGroupEnabled);
rot[0] = EditorGUILayout.Toggle("x", rot[0]);
rot[1] = EditorGUILayout.Toggle("y", rot[1]);
rot[2] = EditorGUILayout.Toggle("z", rot[2]);
EditorGUILayout.EndToggleGroup();
scaleGroupEnabled = EditorGUILayout.BeginToggleGroup("Align scale", scaleGroupEnabled);
scale[0] = EditorGUILayout.Toggle("x", scale[0]);
scale[1] = EditorGUILayout.Toggle("y", scale[1]);
scale[2] = EditorGUILayout.Toggle("z", scale[2]);
EditorGUILayout.EndToggleGroup();
GUILayout.Space(30);
if (GUILayout.Button("Align!"))
Align();
}
function Align() {
var transforms: Transform[] = Selection.transforms;
var activeTransform: Transform = Selection.activeTransform;
if (transforms.Length < 2) {
Debug.LogWarning("Aligner: select at least two objects.");
return ;
}
for (var i: int = 0; i < transforms.Length; i++) {
if (posGroupEnabled) {
var newPos: Vector3;
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: Vector3;
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: Vector3;
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 = GetWindow(Aligner);
window.Show();
}
}
// Simple script that lets you align GameObjects // position/rotation/scale wise with the selected active transform
using UnityEngine; using UnityEditor;
public class Aligner : EditorWindow { bool[] pos = new bool[3] { true, true, true }; bool[] rot = new bool[3] { true, true, true }; bool[] scale = new bool[3] { true, true, true };
bool posGroupEnabled = true; bool rotGroupEnabled = true; bool scaleGroupEnabled = false;
void OnGUI() { posGroupEnabled = EditorGUILayout.BeginToggleGroup("Align position", posGroupEnabled); pos[0] = EditorGUILayout.Toggle("x", pos[0]); pos[1] = EditorGUILayout.Toggle("y", pos[1]); pos[2] = EditorGUILayout.Toggle("z", pos[2]); EditorGUILayout.EndToggleGroup();
rotGroupEnabled = EditorGUILayout.BeginToggleGroup("Align rotation", rotGroupEnabled); rot[0] = EditorGUILayout.Toggle("x", rot[0]); rot[1] = EditorGUILayout.Toggle("y", rot[1]); rot[2] = EditorGUILayout.Toggle("z", rot[2]); EditorGUILayout.EndToggleGroup();
scaleGroupEnabled = EditorGUILayout.BeginToggleGroup("Align scale", scaleGroupEnabled); scale[0] = EditorGUILayout.Toggle("x", scale[0]); scale[1] = EditorGUILayout.Toggle("y", scale[1]); scale[2] = EditorGUILayout.Toggle("z", scale[2]); EditorGUILayout.EndToggleGroup();
GUILayout.Space(30); if (GUILayout.Button("Align!")) Align(); }
void Align() { Transform[] transforms = Selection.transforms; Transform activeTransform = Selection.activeTransform; if (transforms.Length < 2) { Debug.LogWarning("Aligner: select at least two objects."); return; } for (int i = 0; i < transforms.Length; i++) { if (posGroupEnabled) { Vector3 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) { Vector3 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) { Vector3 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 void Init() { Aligner window = (Aligner)EditorWindow.GetWindow(typeof(Aligner)); window.Show(); } }