【问题标题】:Do not understand how to position UI rectTransform不明白如何定位 UI rectTransform
【发布时间】:2019-02-14 06:36:54
【问题描述】:

我不明白我在这里做错了什么。我正在尝试以下方法:

1) 在 UI 场景中放置 4 x 图像(卡片)

public Image aceHeartZone, aceClubZone, aceDiamondZone, aceSpadeZone;

2) 在编辑器中,ace 牌与普通牌处于相同的层次结构中:

3) 我将 AceXX 卡片中的位置复制到 Vector2 属性中

zone10 = aceHeartPos.rectTransform.localPosition;
zone20 = aceClubPos.rectTransform.localPosition;
zone30 = aceDiamondPos.rectTransform.localPosition;
zone40 = aceSpadePos.rectTransform.localPosition;

4) 在卡片上我有以下 sn-p:

_x = _prep.zone10.x;
_y = _prep.zone10.y;
myRectTransform.anchoredPosition = new Vector2(_x, _y);

5) 卡片位置不正确:

在实际卡片图像的后面是王牌卡片图像,这是我选择位置的地方

问题: 我在这里做错了什么?

【问题讨论】:

  • 取决于您的设置。两组位置都在世界空间还是屏幕空间?你确定你没有混合两个坐标系吗? --- 两个图像集的原点/根是否相同?即中心,还是同一个角落?如果根在一个角落,图像本身的大小是否相同?假设左上角是原点,您确定 ace 牌的图像没有透明边框/悬垂,这会导致普通牌以左上角偏移(在透明部分的边缘)定位吗? --- 由于您提供的信息有限,几乎不可能知道出了什么问题...
  • 请检查documentation 并仔细阅读定位 UI 元素部分。此外,如果您仔细查看您的代码,您会发现您正在尝试将 rectTransform.localPosition 分配给 rectTransform.anchoredPosition
  • 对“localPosition”与“rectTransform”的正确评论,我复制了我的测试。现在有区别了。

标签: c# unity3d unity3d-gui


【解决方案1】:

首先,谢谢大家。我必须说我觉得自己很愚蠢,因为我应该立即弄清楚这一点。问题是我确实混合了 localPosition 和 anchoredPosition!!!

我现在将除拖动代码之外的所有内容都更改为anchoredPosition,它可以工作了。

嗯,至少我学到了一些我应该立即看到的东西......

【讨论】:

    猜你喜欢
    • 2023-03-10
    • 2017-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-29
    • 1970-01-01
    • 2020-10-04
    相关资源
    最近更新 更多