RoadLun原创,转载请声明

众所周知,搭UI是一件繁琐无聊枯燥乏味的事情,具本博主见闻,很多公司会招妹子程序员专门搭UI和UI相关的逻辑。设置每个UI的锚点和坐标真是一个繁重的工作。例如很多手游的某一个菜单栏下有许多子按钮,某天策划觉得这些按钮的间距太小,这时候就需要程序员挨个调整,十分头痛。博主在工作中也遇到这个问题,项目中的UI都是由旁边的妹子一个个修改,十分麻烦,所以博主写了一个一键搭UI的工具,效果如下:

可见,图中的panel下的按钮的位置十分杂乱,锚点也是参差不齐。用这个工具设置好各个属性,然后点击“放松泡杯茶”按钮,这时所有的按钮都规规矩矩,整齐划一,不论是RectTransform里的top、left、bottom、right属性,还是锚点的位置,都已经计算好了,规规矩矩的。节省下的时间可以伸个懒腰,泡杯茶。

想统一修改所有元素的间距、宽高比、按钮偏移等等??  不要着急,只需设置好想要的参数,点击“放松泡杯茶”按钮,元素就自动设置完成。

写这个小工具只需70行代码,核心代码只有10多行,可以说是非常简单了。下面讲实现方式

1.首先这是一个工具脚本,必须引用UnityEditor类,必须继承EditorWindow类,必须有指定的构造函数,必须用Attribute使按钮显示到Uinty面板上,实现OnGUI绘制面板。

2.在面板上绘制出各个输入框和按钮

3.按下按钮实现方法,遍历panel的子物体的RectTransform,计算出锚点的位置(RectTransform的anchorMin和anchorMax属性),并统一设置偏移量(RectTransform的offsetMax和offsetMin属性)

源码:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;public class EasyUI : EditorWindow
{//需要布局的PanelGameObject panel;//上边界距离float upBorderDistance;//元素的高度float elementHight;//元素的间距float elementDistance;//所有元素与左边界距离float leftDistance;//所有元素与右边界距离float rightDistance;//所有panel子对象的left,top,right,bottom值float elementLeft;float elementRight;float elementTop;float elementBottom;//利用构造函数来设置窗口名称EasyUI(){titleContent = new GUIContent("UI雷驴---快速布局工具");}//添加菜单栏用于打开窗口[MenuItem("Tool/EasyUI")]static void ShowWindow(){EditorWindow.GetWindow(typeof(EasyUI));}//开始绘制编辑器窗口private void OnGUI(){GUILayout.BeginVertical();panel = (GameObject)EditorGUILayout.ObjectField("需要布局的panel", panel, typeof(GameObject), true);upBorderDistance = EditorGUILayout.FloatField("元素与上边界距离", upBorderDistance);elementHight = EditorGUILayout.FloatField("元素的高度", elementHight);elementDistance = EditorGUILayout.FloatField("各元素间距", elementDistance);leftDistance = EditorGUILayout.FloatField("元素左边距", leftDistance);rightDistance = EditorGUILayout.FloatField("元素右边距", rightDistance);elementLeft= EditorGUILayout.FloatField("left", elementLeft);elementRight= EditorGUILayout.FloatField("right", elementRight);elementTop= EditorGUILayout.FloatField("top", elementTop);elementBottom= EditorGUILayout.FloatField("bottom", elementBottom);//绘制按钮if (GUILayout.Button("放松泡杯茶")){LayoutElement(); }}Vector2 ancMin;Vector2 ancMax;void LayoutElement() {int i = 0;foreach (RectTransform child in panel.transform){ancMin = new Vector2(leftDistance, 1 - (i * elementDistance + (i + 1) * elementHight + upBorderDistance));ancMax = new Vector2(1 - rightDistance, 1 - (i * (elementHight + elementDistance) + upBorderDistance));//if (!JudgeVector2(ancMin) || !JudgeVector2(ancMax))//{//    Debug.Log("错误:输入值错误————————元素的RectTransform.anchorMin或RectTransform.anchorMax越界");//    return;//}child.anchorMin = ancMin;child.anchorMax = ancMax;child.GetComponent<RectTransform>().offsetMax = new Vector2(elementRight, elementTop);child.GetComponent<RectTransform>().offsetMin = new Vector2(elementLeft, elementBottom);i++;}}//判断一个vector2是否在0-1的范围内bool JudgeVector2(Vector2 vec){return vec.x >= 0 && vec.x <= 1 && vec.y >= 0 && vec.y <= 1;}
}

然后在uinty的工具栏找到EasyUI选项即可打开:

ok,这就是一个快速搭建UI的小工具,只能搭建竖直的panel,想搭建水平的Panel只需做些调整即可,更多的功能可以自己拓展。

Unity懒人福利————— 一键搭UI工具相关推荐

  1. 懒人反编译辅助脚本工具

    simplyDecompile 懒人反编译辅助脚本 一.利用本辅助工具编译 https://github.com/dz-hexiang/simplyDecompile 本工具是利用apktool 和d ...

  2. 懒人精灵ocr文字查找工具的使用

    今天介绍一下懒人精灵ocr功能使用, 下面是整个流程如果有什么不懂可以加群785554238,里面有最新的版本和相关例子脚本 1.先从此处下载安装包 https://share.weiyun.com/ ...

  3. python一键电影搜索与下载_[懒人福利]用Python进行[天堂电影]下载资源的搜索

    #!/usr/bin/env python #encoding:utf-8 import requests from bs4 import BeautifulSoup import urllib im ...

  4. 懒人福利!传沃尔玛计划将超市购物车变为智能机器人

    继与京东达成深度战略合作之后,沃尔玛又推出一项新计划--将超市购物车变为智能机器人,患有懒癌症的小伙伴这下可有福了! 对于逛超市这件事,几乎每个人都有一个共同的情结--将身子挂在购物车上进行短距离滑行 ...

  5. Unity根据XMl配置一键生成UI预设

    目标 其实我也不知道是为什么了,老板觉得很多问题不需要程序员也能解决问题,于是希望我们能实现一个通过XMl配置就实现UI界面的部分功能,(ps;凡是能用xml解决的问题就用xml解决)高度模板化.加快 ...

  6. 【懒人福利】自动记录操作步骤

    平时,在记录一些操作类文档时,都要先想好操作步骤,然后再编写文档. 这样,其实是费了两次功夫. 在windows系统上,有个psr.exe程序,可以记录你的操作步骤,而且可以帮你自动生成一个操作类文档 ...

  7. 用这些软件重装windows也太好用了吧(懒人一键安装windows软件推荐)

    我是导游 前言 黑鲨 韩博士 云净装机大师 极速装机 装机助手 前言 介绍的软件需要电脑能够正常运维为前提条件,适用于懒人,一键执行即可完成全部操作,之后还给你一个崭新的系统,并且不需要自己下载驱动, ...

  8. unity3d 快速拼ui工具 psd2ugui

    传统做ui的流程:美术出效果图-- 美术切图-- 程序拿到效果图和小图-- 摆位置调像素拼ui 工具化后流程:美术出效果图(根据规则命名图层)-- 一键导出ui信息-- 程序一键生成ui 工具分为两部 ...

  9. 懒人必备,4款匠心打造的国产软件,每一款都堪称珍品

    话不多说,咱们直入主题. Wox Wox,是一款懒人必备的搜索效率工具. Wox 软件界面简洁,体积轻巧,只需一个搜索框,放置在桌面,你便可以,一键搜索电脑上的任意文件.网页.以及软件等等,减少很多不 ...

最新文章

  1. A. Powered Addition【贪心】
  2. 一个页面是否应该全部组件化
  3. 自己开发的在线视频下载工具,基于Java多线程
  4. ❤️六W字《计算机基础知识》(二)(建议收藏)❤️
  5. STM32工作笔记0027---理解电阻的串联和并联
  6. Shell 操作(一)
  7. 特征匹配中OpenCV Dmatch类的用法解析以及非常详细的ORB特征提取与匹配解析
  8. http工作原理和机制
  9. ENet-论文笔记-理解
  10. 阿里云ACA、ACP、ACE认证考试区别,报名入口及模拟试题分享
  11. CSS3——渐变(线性渐变、径向渐变、重复性渐变)
  12. 如何查计算机的开机启动程序,Win7系统电脑如何查看开机启动项?
  13. 动态代理之Waiter案例
  14. 河南计算机会考必背知识点,2017年河南物理高中会考知识点大全
  15. 生成式人工智能是否会是下一个风口?
  16. 阿里、腾讯、字节、京东、美团、百度......薪资职级大比拼
  17. eNSP模拟下的vlanif配置实现(一个汇聚交换机,两个接入交换机)通过三层交换机实现vlan间的三层通信
  18. 三维建模教程——概念版摩托车
  19. 游戏搜索引擎 - 6617.com 内测,欢迎大家点评 :)
  20. Python+matplotlib实现填充螺旋实例

热门文章

  1. Gangs(附C语言实现)
  2. SpringBoot整合模板FreeMarker篇
  3. web前端工作有哪些职业发展方向
  4. win10使用电池时关闭自动调节亮度
  5. 有参构造法和无参构造法
  6. 30张被厂商阉割掉的Andorid7.0原生2K壁纸,我们为你优选最优质的10张
  7. 计算机科学全奖博士招生,福特汉姆大学魏文启课题组
  8. 6.JUC-共享模型之工具
  9. php和python学不明白_现在自学php和python那个合适?
  10. 基于JAVA的KTV点歌系统,管理系统。