我试图在运行时将渲染器从左到右精灵映射到面板上。我已经尝试在将面板设置为父级之前和之后设置位置,并且似乎无法使其工作。对象会在面板中间,屏幕中间或屏幕外的某处产生。我想我只是不理解坐标之间的基础变化。
到目前为止,这是我的代码:
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);
}
}
任何人都可以帮助我解决我所缺少的问题吗?
谢谢!
答案 0 :(得分:0)
我通过使用getWorldCorners()
函数来确定面板的正确位置和宽度/长度。仍然不确定为什么以前的方法不起作用,但getWorldCorners
应该解决这个问题。