GridLayout 或 RectTransform 问题

GridLayout or RectTransform Issues

现在我正在 unity3d 中开发一款纸牌游戏,我正在尝试将网格布局组用于敌人的手牌。如果一切都是预先确定的,这就可以正常工作,但是当我尝试将卡片动态添加到组中时,卡片的位置和大小会发生变化。 它应该是这样的:

实际情况如下: (屏幕中央的棕色小木板就是木板)

我有代码尝试将大小和位置缩放到应有的大小,但它似乎不起作用。

public void AddCardToOppositeHand(Card card)
    {
        GameObject cardUI = Instantiate(UtilFuncs.GetAssetHolder().card);
        cardUI.GetComponent<CardVisible>().LoadCard(card, false);
        cardUI.transform.SetParent(gameObject.transform, true);

        cardUI.GetComponent<RectTransform>().localScale = new Vector3(0.5f, 0.5f, 1);
        cardUI.GetComponent<RectTransform>().position = Vector3.zero;

        Pair<Card, GameObject> pair = new Pair<Card, GameObject>(card, cardUI);
        AddToDictionary(pair);
    }

有人有什么想法吗?我完全不知道如何解决这个问题,在此先感谢您的帮助。

经过一些工作,我发现之后循环遍历 "hand" 的子项并应用缩放和变换似乎可以做到这一点,而不是在对象本身上。不知道为什么,但这里还是给你们的代码。

public void AddCardToOppositeHand(Card card)
    {
        GameObject cardUI = Instantiate(UtilFuncs.GetAssetHolder().card);
        cardUI.GetComponent<CardVisible>().LoadCard(card, true);
        cardUI.transform.SetParent(gameObject.transform, true);

        Pair<Card, GameObject> pair = new Pair<Card, GameObject>(card, cardUI);
        AddToDictionary(pair);

        reSizeHand();
    }

    public void reSizeHand()
    {
        for (int i = 0; i < transform.childCount; i++)
        {
            transform.GetChild(i).GetComponent<RectTransform>().localScale = new Vector3(0.5f, 0.5f, 1);
            transform.GetChild(i).GetComponent<RectTransform>().localPosition = new Vector3(transform.GetChild(i).GetComponent<RectTransform>().localPosition.x, transform.GetChild(i).GetComponent<RectTransform>().localPosition.y, 0);
        }
    }