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);
            }
        }
    
    }
  • 相关阅读:
    关于TCP/IP,这十个问题你都知道,就入门了!
    Hadoop入门
    mysql实现主从复制
    1.5linux基本操作命令----ls
    1.5Linux下的目录介绍
    1.4 yum源的配置
    1.3 防火墙关闭
    1.2网络配置
    Linux学习---CentOS7.6下载与简介(一)
    解决centos7使用yum install -y gcc gcc-c++报错缺少依赖包的问题
  • 原文地址:https://www.cnblogs.com/Jeece/p/6545031.html
Copyright © 2011-2022 走看看