程序员必知:UnityUGUI锚点快速定位(自适应)

简介: 程序员必知:UnityUGUI锚点快速定位(自适应)

1.编辑器脚本需要放到Editor文件夹下面

简单操作,快速让锚点分布在组件四个顶点

选中组件(可以单选,可以多选) 点击Tools/自适应锚点

代码如下:

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

using UnityEditor;

public class AnchorController

{

【MenuItem("Tools/自适应锚点")】

private static void SelectionAnchor()

{

GameObject【】 objs = Selection.gameObjects;

for (int i = 0; i < objs.Length; i++)

{

if (objs【i】.GetComponent() == null)

continue;

AnchorCon(objs【i】);

}//代码效果参考:http://www.ezhiqi.com/zx/art_22.html

}//代码效果参考:http://www.ezhiqi.com/bx/art_1905.html

private static void AnchorCon(GameObject obj)

{

//位置信息

Vector3 partentPos = obj.transform.parent.position;

Vector3 localPos = obj.transform.position;

//--获取rectTransform

RectTransform partentRect = obj.transform.parent.GetComponent();

RectTransform localRect = obj.GetComponent();

float partentWidth = partentRect.rect.width;

float partentHeight = partentRect.rect.height;

float localWidth = localRect.rect.width 0.5f;

float localHeight = localRect.rect.height 0.5f;

//-位移差--

float offX = localPos.x - partentPos.x;

float offY = localPos.y - partentPos.y;

float rateW = offX / partentWidth;

float rateH = offY / partentHeight;

localRect.anchorMax = localRect.anchorMin = new Vector2(0.5f + rateW, 0.5f + rateH);

localRect.anchoredPosition = Vector2.zero;

partentHeight = partentHeight 0.5f;

partentWidth = partentWidth 0.5f;

float rateX = (localWidth / partentWidth) 0.5f;

float rateY = (localHeight / partentHeight) 0.5f;

localRect.anchorMax = new Vector2(localRect.anchorMax.x + rateX, localRect.anchorMax.y + rateY);

localRect.anchorMin = new Vector2(localRect.anchorMin.x - rateX, localRect.anchorMin.y - rateY);

localRect.offsetMax = localRect.offsetMin = Vector2.zero;

}//代码效果参考:http://www.ezhiqi.com/bx/art_3895.html

}

踩的坑:(纳闷的一笔)

在预设物里面,用上面工具自适应之后保存,换一个预设物,在重新进刚刚的预设物里面,发现刚刚预设物的锚点跟没应用之前是一样的

最后解决办法

先取消自动保存(AutoSave),然后随便点击一个组件的锚点,用鼠标拖动一下,再用上面的锚点工具应用锚点,最后勾上自动保存,在切换一下预设物回来,发现锚点应用成功

比手动拖要快多了

如果喜欢,请点个赞吧,感谢

目录
打赏
0
0
0
0
33
分享
相关文章
【技术深度解析】多平台适配下的UI适配难题:U3D游戏UI错乱的终极解决方案
【7月更文第12天】随着移动设备市场的多元化,Unity游戏开发者面临的一大挑战是如何在不同分辨率和屏幕尺寸的设备上保持UI的一致性和美观性。游戏在高分辨率平板与低分辨率手机上呈现出的UI布局混乱、按钮错位等问题,严重影响玩家体验。本文旨在探讨Unity UI(UGUI)在多平台适配中的最佳实践,通过优化Canvas Scaler设置、灵活运用RectTransform和Anchor Points,以及高效利用设计工具,确保UI的完美适配。
1474 1
阿里云无影:下一代云端办公的革命性工具
【10月更文挑战第4天】随着数字化转型的加速和远程办公需求的激增,企业对灵活、安全的办公解决方案需求变得越来越迫切。阿里云无影(Alibaba Cloud Workspace)作为阿里云推出的云端办公平台,凭借其强大的云计算能力、卓越的安全性和极致的便捷性,成为了推动企业远程办公和数字化工作的利器。在这篇文章中,我们将详细探讨阿里云无影的功能、应用场景以及使用技巧,帮助企业和个人更好地理解并利用这一云办公工具。
682 1
跨云数据管理平台DMS:构建Data+AI的企业智能Data Mesh
跨云数据管理平台DMS助力企业构建智能Data Mesh,实现Data+AI的统一管理。DMS提供开放式元数据服务OneMeta、一站式智能开发平台和云原生AI数据平台,支持多模数据管理和高效的数据处理。结合PolarDB、AnalyticDB等核心引擎,DMS在多个垂直场景中展现出显著优势,如智能营销和向量搜索,提升业务效率和准确性。通过DataOps和MLOps的融合,DMS为企业提供了从数据到AI模型的全生命周期管理,推动数据驱动的业务创新。
312 0
Spring Cloud Alibaba 集成分布式定时任务调度功能
Spring Cloud Alibaba 发布了 Scheduling 任务调度模块 [#3732]提供了一套开源、轻量级、高可用的定时任务解决方案,帮助您快速开发微服务体系下的分布式定时任务。
15540 85
【推荐100个unity插件之2】 DoTween动画插件的安装和使用整合(最全)
【推荐100个unity插件之2】 DoTween动画插件的安装和使用整合(最全)
1075 0
【实现100个unity特效之2】使用shader和shader Graph实现2d图片描边效果(附源码)
【实现100个unity特效之2】使用shader和shader Graph实现2d图片描边效果(附源码)
819 0
Unity3d(webGL)构建数字孪生小案例(包含完整的数据交互体系)附赠完整代码
Unity3d(webGL)构建数字孪生小案例(包含完整的数据交互体系)附赠完整代码,请关注公众号:拼搏的小浣熊,获取简化版的代码!
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问