zoukankan      html  css  js  c++  java
  • Unity对齐工具

    对齐功能:

    水平左对齐

    水平右对齐

    垂直上对齐

    垂直下对齐

    水平均匀

    垂直均匀

    using System.Linq;
    using System.Collections;
    using UnityEngine;
    using UnityEditor;
    
    public class AlignTool : Editor
    {
        [MenuItem("开发工具/水平左对齐 ←")]
        public static void alignInHorziontalLeft()
        {
            float x = Mathf.Min(Selection.gameObjects.Select(obj => obj.transform.localPosition.x -
            ((RectTransform)obj.transform).sizeDelta.x / 2
            ).ToArray());
    
            foreach (GameObject gameObject in Selection.gameObjects)
            {
                gameObject.transform.localPosition = new Vector3(x + ((RectTransform)gameObject.transform).sizeDelta.x / 2,
                    gameObject.transform.localPosition.y);
                // MathUtil.setPositionX(gameObject.transform.localPosition, x);
            }
        }
    
        [MenuItem("开发工具/水平右对齐 →")]
        public static void alignInHorziontalRight()
        {
            float x = Mathf.Max(Selection.gameObjects.Select(obj => obj.transform.localPosition.x +
            ((RectTransform)obj.transform).sizeDelta.x / 2).ToArray());
            foreach (GameObject gameObject in Selection.gameObjects)
            {
                gameObject.transform.localPosition = new Vector3(x - ((RectTransform)gameObject.transform).sizeDelta.x / 2, gameObject.transform.localPosition.y);
                // MathUtil.setPositionX(gameObject.transform.localPosition, x);
            }
        }
    
        [MenuItem("开发工具/垂直上对齐 ↑")]
        public static void alignInVerticalUp()
        {
            float y = Mathf.Max(Selection.gameObjects.Select(obj => obj.transform.localPosition.y +
            ((RectTransform)obj.transform).sizeDelta.y / 2).ToArray());
    
            foreach (GameObject gameObject in Selection.gameObjects)
            {
                gameObject.transform.localPosition = new Vector3(gameObject.transform.localPosition.x, y - ((RectTransform)gameObject.transform).sizeDelta.y / 2);
                //MathUtil.setPositionY(gameObject.transform.localPosition, y);
            }
        }
    
        [MenuItem("开发工具/垂直下对齐 ↓")]
        public static void alignInVerticalDown()
        {
            float y = Mathf.Min(Selection.gameObjects.Select(obj => obj.transform.localPosition.y -
            ((RectTransform)obj.transform).sizeDelta.y / 2).ToArray());
    
            foreach (GameObject gameObject in Selection.gameObjects)
            {
                gameObject.transform.localPosition = new Vector3(gameObject.transform.localPosition.x, y + ((RectTransform)gameObject.transform).sizeDelta.y / 2);
                //MathUtil.setPositionY(gameObject.transform.localPosition, y);
            }
        }
    
    
        [MenuItem("开发工具/水平均匀 |||")]
        public static void uniformDistributionInHorziontal()
        {
            int count = Selection.gameObjects.Length;
            float firstX = Mathf.Min(Selection.gameObjects.Select(obj => obj.transform.localPosition.x).ToArray());
            float lastX = Mathf.Max(Selection.gameObjects.Select(obj => obj.transform.localPosition.x).ToArray());
            float distance = (lastX - firstX) / (count - 1);
            var objects = Selection.gameObjects.ToList();
            objects.Sort((x, y) => (int)(x.transform.localPosition.x - y.transform.localPosition.x));
            for (int i = 0; i < count; i++)
            {
                objects[i].transform.localPosition = new Vector3(firstX + i * distance, objects[i].transform.localPosition.y);
                //MathUtil.setPositionX(position, firstX + i * distance);
            }
        }
    
        [MenuItem("开发工具/垂直均匀 ☰")]
        public static void uniformDistributionInVertical()
        {
            int count = Selection.gameObjects.Length;
            float firstY = Mathf.Min(Selection.gameObjects.Select(obj => obj.transform.localPosition.y).ToArray());
            float lastY = Mathf.Max(Selection.gameObjects.Select(obj => obj.transform.localPosition.y).ToArray());
            float distance = (lastY - firstY) / (count - 1);
            var objects = Selection.gameObjects.ToList();
            objects.Sort((x, y) => (int)(x.transform.localPosition.y - y.transform.localPosition.y));
            for (int i = 0; i < count; i++)
            {
                objects[i].transform.localPosition = new Vector3(objects[i].transform.localPosition.x, firstY + i * distance);
                //MathUtil.setPositionX(position, firstX + i * distance);
            }
        }
    
        [MenuItem("开发工具/重置大小(大) ■")]
        public static void ResizeMax()
        {
            var height = Mathf.Max(Selection.gameObjects.Select(obj => ((RectTransform)obj.transform).sizeDelta.y).ToArray());
            var width = Mathf.Max(Selection.gameObjects.Select(obj => ((RectTransform)obj.transform).sizeDelta.x).ToArray());
            foreach (GameObject gameObject in Selection.gameObjects)
            {
                ((RectTransform)gameObject.transform).sizeDelta = new Vector2(width, height);
            }
        }
    
        [MenuItem("开发工具/重置大小(小) ●")]
        public static void ResizeMin()
        {
            var height = Mathf.Min(Selection.gameObjects.Select(obj => ((RectTransform)obj.transform).sizeDelta.y).ToArray());
            var width = Mathf.Min(Selection.gameObjects.Select(obj => ((RectTransform)obj.transform).sizeDelta.x).ToArray());
            foreach (GameObject gameObject in Selection.gameObjects)
            {
                ((RectTransform)gameObject.transform).sizeDelta = new Vector2(width, height);
            }
        }
    
    }
  • 相关阅读:
    Spring JdbcTemplate源码阅读报告
    Linux 套接字通信笔记(一)
    Python的科学计算包matplotlib setup
    创建Spring Boot项目
    Java反射与自定义注解
    二手前端入门React项目
    Spring 并发事务的探究
    使用IDEA结合MAVEN创建一个Spring Java Web项目
    FutureTask与Fork/Join
    结合业务,精炼SQL
  • 原文地址:https://www.cnblogs.com/Jeece/p/6545031.html
Copyright © 2011-2022 走看看