如何解决2D Unity:将基于文本的UI元素扩展到底部
此InfoBox内是一个Text-Element,每次我更新文本时,我都希望InfoBox展开或折叠,但只能扩展到底部。现在,我的InfoBox始终会在顶部和底部同时展开或折叠,但是我不希望这种情况发生。我该如何实现?我添加了一些屏幕截图,以更好地形象化这一点。
这些是我对信息框的设置:
这些是我对文本的设置:
例如,这是当我使用较少的文本,框从底部和顶部折叠时发生的情况,但是我希望它固定在顶部(与旁边的绿色框位于同一行)并且仅折叠在底部:
任何帮助都非常感谢!
解决方法
您的主要问题似乎是在父对象上也使用了ContentSizeFitter
。因此,这取决于此父对象与其相应父对象的对齐方式。
我知道这句话听起来很奇怪,但是您所做的基本上是将对齐责任移交给了父母。
=>使您的UI元素与顶部对齐并向下增长。
您只需为此设置
- 锚点最小->
1
- 最大锚点y->
1
- 枢轴y->
1
或直接转到RectTransform
检查器,打开对齐工具并按住 Shift + Alt 并单击顶部对齐:
第二步,而不是使用ContentSizeFitter
,我更喜欢拥有自己的脚本,该脚本仅执行应做的事情,而已。
您可以获得preferredHeight
,它正是您想要的值。
以下脚本仅始终将首选高度应用于文本rect。使用[ExecuteAlways]
也可以在编辑模式下使用。只需将其与GameObject
组件安装在同一UI.Text
上
[ExecuteAlways]
[RequireComponent(typeof(Text))]
[RequireComponent(typeof(RectTransform))]
public class TextHeightFitter : MonoBehaviour
{
[SerializeField] private RectTransform _rectTransform;
[SerializeField] private Text _text;
private void Update()
{
if (!_text) _text = GetComponent<Text>();
if (!_rectTransform) _rectTransform = GetComponent<RectTransform>();
var desiredHeight = _text.preferredHeight;
var size = _rectTransform.sizeDelta;
size.y = desiredHeight;
_rectTransform.sizeDelta = size;
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。