UnityはUIの幅、高さ、設定サイズを取得し、レイアウトグループからUIを複製すると、問題のサイズが失われます

幅と高さを取得する

rectTransform = GetComponent<RectTransform>();
float width =recttransform.rect.width
float height = rectTransform .rect.height;

幅と高さの設定は、アンカーポイントにのみポイントとして適用されます

rectTransform .sizeDelta = new Vector2(width,height);

親オブジェクトがレイアウトツールを使用している場合、複製された子オブジェクト(gameobjectcloneまたはtransformcloneを使用しているかどうか)は独自のサイズを失い、幅と高さは00になりますが、rectTransformを使用して複製された場合、元の幅と高さが記録されます。 rectTransform
などで

    public void BeginDragStoryEvent(RectTransform trans)
    {
    
    
        //创建克隆体,作为容器的子物体
        cloneTrans = Instantiate(trans, 父物体); //这个克隆体来自一个gridLayoutGroup,将失去自己的尺寸
        //设置位置和尺寸
        cloneTrans.localPosition = Vector3.zero; //localPosition是指父子物体的轴点的相对位置
        cloneTrans.sizeDelta = new Vector2(trans.rect.width, trans.rect.height);
    }

おすすめ

転載: blog.csdn.net/weixin_44568736/article/details/122242492