2017-02-05 9 views
0

렌더러를 런타임에 패널에 왼쪽에서 오른쪽으로 스프라이트 처리하려고합니다. 나는 부모로서 패널을 설정하기 전후에 위치를 설정하려고 시도했으나 작동하지 않는 것처럼 보였다. 객체가 패널 중간, 화면 중간 또는 화면 외부에 나타납니다. 나는 좌표들 사이의 기지의 변화를 이해하지 못하고 있다고 생각합니다.런타임에 적절한 정렬로 패널에서 객체를 인스턴스화 할 수 없습니다.

여기 내 코드는 지금까지 있습니다 :

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

패널의 적절한 위치와 너비/길이를 결정하기 위해 getWorldCorners() 함수를 사용하여이 문제를 해결했습니다. 이전 접근 방식이 작동하지 않는 이유는 아직 확실하지 않지만 getWorldCorners에서이 문제를 해결해야합니다.