【问题标题】:RectTransform won't positionRectTransform 不会定位
【发布时间】:2023-03-10 06:13:01
【问题描述】:

我正在尝试移动一个 RectTransform,它是在单击 UI 对象时触发的。当我在 Update、LateUpdate 或 Animation 中设置位置时,RectTransform 会按预期移动。当我尝试设置位置/锚定位置/等时。在 OnClick 回调中,什么也没有发生(当我查询时变量没有改变)。

我有以下游戏板层次结构:

屏幕空间覆盖模式下的画布(全尺寸)

  • 容器:RectTransform 对象
    • MoveObj:带有 RectTransforms 和画布渲染器的游戏对象

容器矩形:

MoveObj 矩形:

我正在尝试将 MoveObj 移动到根画布的中心,同时将容器保持为父级。我试过设置位置、localPosition、anchoredPosition,但它们什么也没做。设置该属性后,当我查询它时,值没有改变。

    public void OnPointerClick(PointerEventData eventData)
    {
        Debug.Log($"{this.gameObject.name} - OnPointerClick - state:{this._state}");
        (transform as RectTransform).position = offsetMaxTarget; // :(
        (transform as RectTransform).localPosition = offsetMaxTarget; // :(
        (transform as RectTransform).offsetMin = offsetMinTarget; // :(
        (transform as RectTransform).offsetMax = offsetMaxTarget; // :(
        (transform as RectTransform).anchoredPosition = targetPosition; // :(
    }

SetInsetAndSizeFromParentEdge 确实改变了矩形的大小,但根本不移动位置。

(transform as RectTransform).SetInsetAndSizeFromParentEdge(RectTransform.Edge.Bottom, 450.0f, 150.0f);

MoveObj 是从预制件中实例化的:

GameObject newMoveObj = Instantiate(MoveObjPrefab, 
    new Vector3(Container.transform.position.x, Container.transform.position.y, 2), 
    Quaternion.identity, 
    Container.transform);
newMoveObj.transform.localPosition = new Vector3(0, 0, 2);

如果我使用 Animator,并为 anchoredPosition 和 position 属性设置动画,对象会完全按照我的意愿移动。

我在代码中设置的唯一生效的属性是,如果我设置了枢轴,它确实会移动。现在一切都很好,但是我发现的大多数信息都说移动位置至少应该做一些事情,而动画的成功让我认为这是正确的方法。在我发疯之前,为什么定位在事件处理程序中设置不正确,但在更新中有效?

【问题讨论】:

  • 是移动到错误的位置还是根本不移动
  • 根本不动。
  • 这很奇怪。您使用的是哪个版本的 Unity,因为这听起来像是核心引擎错误。
  • 版本 2017.2.
  • 嗯。我正在使用相同的版本,但我没有这个问题。

标签: c# unity3d unity-ui


【解决方案1】:

我找到了解决方案,虽然我不明白。

动画始终处于空闲状态,没有动作,因为我从未设置触发器。下一个状态确实有运动,改变了位置。我从动画图中删除了所有状态,现在可以通过所有常规方式设置位置。

我很困惑为什么没有运动的状态仍会将位置重置为其默认值,但是......我猜是继续前进。

【讨论】:

    猜你喜欢
    • 2019-02-14
    • 2017-10-26
    • 1970-01-01
    • 2021-08-13
    • 1970-01-01
    • 1970-01-01
    • 2017-11-14
    • 2015-08-27
    相关资源
    最近更新 更多