Unity懒人福利————— 一键搭UI工具
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工具相关推荐
- 懒人反编译辅助脚本工具
simplyDecompile 懒人反编译辅助脚本 一.利用本辅助工具编译 https://github.com/dz-hexiang/simplyDecompile 本工具是利用apktool 和d ...
- 懒人精灵ocr文字查找工具的使用
今天介绍一下懒人精灵ocr功能使用, 下面是整个流程如果有什么不懂可以加群785554238,里面有最新的版本和相关例子脚本 1.先从此处下载安装包 https://share.weiyun.com/ ...
- python一键电影搜索与下载_[懒人福利]用Python进行[天堂电影]下载资源的搜索
#!/usr/bin/env python #encoding:utf-8 import requests from bs4 import BeautifulSoup import urllib im ...
- 懒人福利!传沃尔玛计划将超市购物车变为智能机器人
继与京东达成深度战略合作之后,沃尔玛又推出一项新计划--将超市购物车变为智能机器人,患有懒癌症的小伙伴这下可有福了! 对于逛超市这件事,几乎每个人都有一个共同的情结--将身子挂在购物车上进行短距离滑行 ...
- Unity根据XMl配置一键生成UI预设
目标 其实我也不知道是为什么了,老板觉得很多问题不需要程序员也能解决问题,于是希望我们能实现一个通过XMl配置就实现UI界面的部分功能,(ps;凡是能用xml解决的问题就用xml解决)高度模板化.加快 ...
- 【懒人福利】自动记录操作步骤
平时,在记录一些操作类文档时,都要先想好操作步骤,然后再编写文档. 这样,其实是费了两次功夫. 在windows系统上,有个psr.exe程序,可以记录你的操作步骤,而且可以帮你自动生成一个操作类文档 ...
- 用这些软件重装windows也太好用了吧(懒人一键安装windows软件推荐)
我是导游 前言 黑鲨 韩博士 云净装机大师 极速装机 装机助手 前言 介绍的软件需要电脑能够正常运维为前提条件,适用于懒人,一键执行即可完成全部操作,之后还给你一个崭新的系统,并且不需要自己下载驱动, ...
- unity3d 快速拼ui工具 psd2ugui
传统做ui的流程:美术出效果图-- 美术切图-- 程序拿到效果图和小图-- 摆位置调像素拼ui 工具化后流程:美术出效果图(根据规则命名图层)-- 一键导出ui信息-- 程序一键生成ui 工具分为两部 ...
- 懒人必备,4款匠心打造的国产软件,每一款都堪称珍品
话不多说,咱们直入主题. Wox Wox,是一款懒人必备的搜索效率工具. Wox 软件界面简洁,体积轻巧,只需一个搜索框,放置在桌面,你便可以,一键搜索电脑上的任意文件.网页.以及软件等等,减少很多不 ...
最新文章
- A. Powered Addition【贪心】
- 一个页面是否应该全部组件化
- 自己开发的在线视频下载工具,基于Java多线程
- ❤️六W字《计算机基础知识》(二)(建议收藏)❤️
- STM32工作笔记0027---理解电阻的串联和并联
- Shell 操作(一)
- 特征匹配中OpenCV Dmatch类的用法解析以及非常详细的ORB特征提取与匹配解析
- http工作原理和机制
- ENet-论文笔记-理解
- 阿里云ACA、ACP、ACE认证考试区别,报名入口及模拟试题分享
- CSS3——渐变(线性渐变、径向渐变、重复性渐变)
- 如何查计算机的开机启动程序,Win7系统电脑如何查看开机启动项?
- 动态代理之Waiter案例
- 河南计算机会考必背知识点,2017年河南物理高中会考知识点大全
- 生成式人工智能是否会是下一个风口?
- 阿里、腾讯、字节、京东、美团、百度......薪资职级大比拼
- eNSP模拟下的vlanif配置实现(一个汇聚交换机,两个接入交换机)通过三层交换机实现vlan间的三层通信
- 三维建模教程——概念版摩托车
- 游戏搜索引擎 - 6617.com 内测,欢迎大家点评 :)
- Python+matplotlib实现填充螺旋实例