Skip to content

Instantly share code, notes, and snippets.

@achimmihca
Created November 20, 2019 17:38
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save achimmihca/a8d92347f2fe88050fae5f381eff9a6d to your computer and use it in GitHub Desktop.
Save achimmihca/a8d92347f2fe88050fae5f381eff9a6d to your computer and use it in GitHub Desktop.
Unity3D Editor script that adds some MenuItem to move the corners of a RectTransform to its anchors.
using System.Collections;
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;
public static class CornersToAnchorsMenuItems
{
// Hotkey: Alt+C
[MenuItem("Tools/Corners to Anchors (RectTransform)/Width and Height and Position &c")]
public static void MoveCornersToAnchors_WidthAndHeightAndPosition()
{
EditorUtils.GetSelectedComponents<RectTransform>().ForEach(it =>
{
Undo.RecordObject(it, "MoveCornersToAnchors_WidthAndHeightAndPosition");
MoveCornersToAnchorsExtensions.MoveCornersToAnchors_Width(it);
MoveCornersToAnchorsExtensions.MoveCornersToAnchors_Height(it);
MoveCornersToAnchorsExtensions.MoveCornersToAnchors_CenterPosition(it);
});
}
[MenuItem("Tools/Corners to Anchors (RectTransform)/Width and Height")]
public static void MoveCornersToAnchors_WidthAndHeight()
{
EditorUtils.GetSelectedComponents<RectTransform>().ForEach(it =>
{
Undo.RecordObject(it, "MoveCornersToAnchors_WidthAndHeight");
MoveCornersToAnchorsExtensions.MoveCornersToAnchors_Width(it);
MoveCornersToAnchorsExtensions.MoveCornersToAnchors_Height(it);
});
}
[MenuItem("Tools/Corners to Anchors (RectTransform)/Width")]
public static void MoveCornersToAnchors_Width()
{
EditorUtils.GetSelectedComponents<RectTransform>().ForEach(it =>
{
Undo.RecordObject(it, "MoveCornersToAnchors_Width");
MoveCornersToAnchorsExtensions.MoveCornersToAnchors_Width(it);
});
}
[MenuItem("Tools/Corners to Anchors (RectTransform)/Width and Center Horizontal")]
public static void MoveCornersToAnchors_WidthAndCenterHorizontal()
{
EditorUtils.GetSelectedComponents<RectTransform>().ForEach(it =>
{
Undo.RecordObject(it, "MoveCornersToAnchors_WidthAndCenterHorizontal");
MoveCornersToAnchorsExtensions.MoveCornersToAnchors_Width(it);
it.anchoredPosition = new Vector2(0, it.anchoredPosition.y);
});
}
[MenuItem("Tools/Corners to Anchors (RectTransform)/Height")]
public static void MoveCornersToAnchors_Height()
{
EditorUtils.GetSelectedComponents<RectTransform>().ForEach(it =>
{
Undo.RecordObject(it, "MoveCornersToAnchors_Height");
MoveCornersToAnchorsExtensions.MoveCornersToAnchors_Height(it);
});
}
[MenuItem("Tools/Corners to Anchors (RectTransform)/Height and Center Vertical")]
public static void MoveCornersToAnchors_HeightAndCenterVertical()
{
EditorUtils.GetSelectedComponents<RectTransform>().ForEach(it =>
{
Undo.RecordObject(it, "MoveCornersToAnchors_HeightAndCenterVertical");
MoveCornersToAnchorsExtensions.MoveCornersToAnchors_Height(it);
it.anchoredPosition = new Vector2(it.anchoredPosition.x, 0);
});
}
[MenuItem("Tools/Corners to Anchors (RectTransform)/Center Horizontal and Vertical")]
public static void MoveCornersToAnchors_CenterPosition()
{
EditorUtils.GetSelectedComponents<RectTransform>().ForEach(it =>
{
Undo.RecordObject(it, "MoveCornersToAnchors_CenterPosition");
MoveCornersToAnchorsExtensions.MoveCornersToAnchors_CenterPosition(it);
});
}
[MenuItem("Tools/Corners to Anchors (RectTransform)/Center Horizontal")]
public static void MoveCornersToAnchors_CenterHorizontal()
{
EditorUtils.GetSelectedComponents<RectTransform>().ForEach(it =>
{
Undo.RecordObject(it, "MoveCornersToAnchors_CenterHorizontal");
it.anchoredPosition = new Vector2(0, it.anchoredPosition.y);
});
}
[MenuItem("Tools/Corners to Anchors (RectTransform)/Center Vertical")]
public static void MoveCornersToAnchors_CenterVertical()
{
EditorUtils.GetSelectedComponents<RectTransform>().ForEach(it =>
{
Undo.RecordObject(it, "MoveCornersToAnchors_CenterVertical");
it.anchoredPosition = new Vector2(it.anchoredPosition.x, 0);
});
}
}
public static class MoveCornersToAnchorsExtensions
{
public static void MoveCornersToAnchors_Width(this RectTransform rectTransform)
{
rectTransform.sizeDelta = new Vector2(0, rectTransform.sizeDelta.y);
}
public static void MoveCornersToAnchors_Height(this RectTransform rectTransform)
{
rectTransform.sizeDelta = new Vector2(rectTransform.sizeDelta.x, 0);
}
public static void MoveCornersToAnchors_CenterPosition(this RectTransform rectTransform)
{
rectTransform.anchoredPosition = Vector2.zero;
}
}
public class EditorUtils
{
public static List<T> GetSelectedComponents<T>()
{
List<T> result = new List<T>();
GameObject[] activeGameObjects = Selection.gameObjects;
if (activeGameObjects == null || activeGameObjects.Length == 0)
{
return result;
}
foreach (GameObject gameObject in activeGameObjects)
{
T rectTransform = gameObject.GetComponent<T>();
if (rectTransform != null)
{
result.Add(rectTransform);
}
}
return result;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment