如何在 Unity 的水平布局组中移动 UI 元素



我有一个简单的父对象{按钮支架},它附加了一个水平布局组组件,所以当游戏开始时,我在按钮支架中实例化多个按钮,以便它们完美排列。

举个例子,假设我实例化了 2 个按钮,我希望在某个时候这两个按钮切换位置,以便第一个按钮转到第二个按钮的位置,第二个按钮切换到第一个按钮的位置。

这就是我要做的:

Vector3 pos1 = buttonPrefabs[0].transform.position;
Vector3 pos2 = buttonPrefabs[1].transform.position;
buttonPrefabs[0].transform.position = Vector3.Lerp(pos1, pos2, Time.deltaTime * 2);

的意思是,我不想把他们赶到他们的新位置,我只是想让他们使用Vector2.lerp或其他东西顺利地前往新职位。

由于父对象附加了一个水平布局组,因此我无法执行此操作。

请帮忙。

当位置由布局组控制时,您无法将它们拉到新位置。我唯一能想到的是

  • 暂时禁用布局组
  • 然后通过例如 MoveTowards 平滑地移动子对象
  • 相应地更新其子索引值以反映其新顺序
  • 再次启用布局组

更复杂的方法需要您编写自己的布局组,该布局组提供允许子对象切换位置的功能。这样,您自己的布局组仍然可以使所有其他子项保持正确位置,即使两个子项交换位置也是如此。

最新更新