无法在运行时以正确对齐的方式在面板上实例化对象

Can't instantiate object on panel with proper alignment at runtime

我正在尝试在运行时将 sprite 渲染器从左到右绘制到面板上。我已经尝试在将面板设置为父级之前和之后设置位置,但似乎无法正常工作。对象在面板中间、屏幕中间或屏幕外的某处生成。我想我只是不理解坐标或其他东西之间的基础变化。

到目前为止,这是我的代码:

public class LoadPanel : MonoBehaviour {

    public List<GameObject> spriteRendererList = new List<GameObject>();
    public GameObject spritePanel;

    void Start () {
        Sprite[] spriteArray = Resources.LoadAll<Sprite>("sprites");
        Vector3 panelPos = spritePanel.transform.position;
        RectTransform panelRT = spritePanel.GetComponent<RectTransform>();
        float panelWidth = panelRT.rect.width;

        for (int i = 0; i < spriteArray.Length;;  i++)
        {
             Vector3 panelItemPos = new Vector3(panelPos.x + i * 5, panelPos.y, 0);
             Instantiate(spriteRendererList[i], panelItemPos, Quaternion.identity);
             spriteRendererList[i].transform.SetParent(spritePanel.transform);
             spriteRendererList[i].transform.position = panelPos + new Vector3((panelPos.x-panelWidth)/2 + i*10,0,0);
        }
}

任何人都可以帮我解决我所缺少的吗?

谢谢!

我通过使用 getWorldCorners() 函数确定面板的正确位置和 width/length 来解决这个问题。仍然不确定为什么以前的方法不起作用,但 getWorldCorners 应该可以解决这个问题。