gpt4 book ai didi

c# - 如何在 LayoutGroup 中跟踪 UI 游戏对象的移动?

转载 作者:太空宇宙 更新时间:2023-11-03 23:12:41 25 4
gpt4 key购买 nike

我想平滑地插入 UI 游戏对象位置,而不是 Unity 的 LayoutGroup 类(特别是 Horizo​​ntalLayoutGroup)处理的默认捕捉。 问题是我不知道 LayoutGroup 类在布局计算完成后使用什么方法或属性来访问或覆盖移动 UI 对象。


我一直在整个 UnityEngine.UI 和他们的 Bitbucket 存储库中进行搜索。如果一切都失败了,我将不得不创建自己的布局类,从而失去 Unity 的所有强大布局功能。

Bitbucket 存储库链接:https://bitbucket.org/Unity-Technologies/ui/src/0155c39e05ca/UnityEngine.UI/UI/Core/Layout/?at=5.2


我只需要找出 UnityEngine.UI 命名空间中的哪些函数或属性可用于覆盖 Unity 的 LayoutGroup 子定位,以便可以将其替换为 lerp或补间。

最佳答案

如果您要求直接回答,这里是 LayoutGroup 类的方法:

 protected void SetChildAlongAxis(RectTransform rect, int axis, float pos, float size)
{
if (rect == null)
return;

m_Tracker.Add(this, rect,
DrivenTransformProperties.Anchors |
DrivenTransformProperties.AnchoredPosition |
DrivenTransformProperties.SizeDelta);

rect.SetInsetAndSizeFromParentEdge(axis == 0 ? RectTransform.Edge.Left : RectTransform.Edge.Top, pos, size);
}

这是从 Horizo​​ntalOrVerticalLayoutGroup 中调用的方法:

protected void SetChildrenAlongAxis(int axis, bool isVertical)

但是

我建议您不要使用此代码,因为这是所有布局(网格、水平和垂直)的基类。改变行为会影响所有派生布局。

您可以创建自己的布局组

解决问题:

  1. 添加所需大小的空子元素并让布局对其进行定位(这是实际元素的容器)。
  2. 创建您在第 1 步中创建的元素的子子元素(这是您现在可以控制的实际元素,因此您可以对其进行定位、补间等)。

希望对你有帮助

关于c# - 如何在 LayoutGroup 中跟踪 UI 游戏对象的移动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38502288/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com