2017-02-05 19 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 должен исправить эту проблему.