程序员必知: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),然后随便点击一个组件的锚点,用鼠标拖动一下,再用上面的锚点工具应用锚点,最后勾上自动保存,在切换一下预设物回来,发现锚点应用成功

比手动拖要快多了

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

相关文章
|
C# 图形学
unity使用BMFont制作位图字体
unity也能制作艺术字拉
unity使用BMFont制作位图字体
|
缓存 程序员 Shell
【最全面】SourceTree使用教程详解(连接远程仓库,克隆,拉取,提交,推送,新建/切换/合并分支,冲突解决,提交PR) (三)
【最全面】SourceTree使用教程详解(连接远程仓库,克隆,拉取,提交,推送,新建/切换/合并分支,冲突解决,提交PR) (三)
2872 0
【最全面】SourceTree使用教程详解(连接远程仓库,克隆,拉取,提交,推送,新建/切换/合并分支,冲突解决,提交PR) (三)
|
图形学
unity摄像机的平滑过渡,平滑缓冲
在Unity中,通过插值计算实现摄像机的平滑过渡与缓冲效果,避免突兀跳跃,提升玩家视觉体验。主要方法包括位置和旋转的平滑过渡,常用线性插值(Lerp)和SmoothDamp函数。代码示例展示了如何使用SmoothDamp实现摄像机从一个点到另一个点的平滑移动。将脚本挂载到场景中测试即可看到效果。
|
图形学
unity中Rigidbody添加力的几种方式
本篇就是添加力的几种方式,记录一下
|
机器学习/深度学习 存储 算法
技术好文:ttf文件结构解析
技术好文:ttf文件结构解析
939 0
|
开发工具 git 开发者
|
存储 弹性计算 固态存储
阿里云服务器NVMe SSD本地盘和SATA HDD本地盘详解
阿里云本地盘是ECS实例物理机上的硬盘,提供低延迟、高IOPS和高吞吐量的存储选项。分为NVMe SSD和SATA HDD两种类型。NVMe SSD适合I/O密集型应用,如在线业务和NoSQL数据库,支持多种ECS实例规格。SATA HDD适合大数据存储和离线计算,适用于金融和互联网行业的Hadoop计算。欲了解更多详情,可参阅阿里云块存储页面。
1349 9
|
缓存 图形学 UED
U3D开发技术深度解析:异步场景加载与资源管理优化策略
【7月更文第11天】在Unity3D(简称U3D)游戏开发中,优化场景加载与资源管理是提升用户体验的关键一环。通过实现高效的异步场景加载和智能的资源管理策略,我们能显著缩短玩家的等待时间,提升游戏流畅度。本文将详细介绍这两种技术的应用,并提供实用的代码示例。
1424 0
|
前端开发 API 云计算
探索现代Web开发中的微前端架构
【10月更文挑战第4天】在快速发展的软件开发领域,微前端架构(Micro Frontends)逐渐成为构建大型、复杂前端应用的热门选择。本文深入探讨微前端架构的概念、优势及其实现方式。微前端架构将应用分解为独立模块,每个模块可由不同团队独立开发、测试和部署,从而提高开发效率和应用的可维护性。其优势包括独立性、技术多样性、可扩展性和灵活性。实现微前端架构需定义边界、选择通信机制、构建基础框架、开发独立模块并进行集成与测试。现代Web开发中,常用方法包括使用Web Components、模块化CSS、状态管理和服务端渲染等。随着云计算和微服务架构的普及,微前端架构预计在未来几年内持续增长。
|
存储 数据可视化 网络安全
【最全面】SourceTree使用教程详解(连接远程仓库,克隆,拉取,提交,推送,新建/切换/合并分支,冲突解决,提交PR) (一)
【最全面】SourceTree使用教程详解(连接远程仓库,克隆,拉取,提交,推送,新建/切换/合并分支,冲突解决,提交PR)
3412 0