2016-11-06 1 views
1

Итак, я работал над проектом для класса, в котором я находился, и столкнулся с рассолом, который я, похоже, не могу решить. Я спросил инструктора, и он был смущен, как и я.Unity 5.4.2 - Элементы пользовательского интерфейса с масштабированием и позицией

Прямо сейчас я только что пытался создать простой пользовательский интерфейс для отображения списка кнопок для выбора уровня загрузки. Во время выполнения код просто создает соответствующие кнопки и т. Д. И помещает их в объект содержимого scrollview. Достаточно просто, не так ли? Хорошо, as you can see позиция и право совершенно неправильные, 800 единиц.

The Canvas установлен на Screen Space - Overlay и Canvas скалер устанавливается в масштабе с размером экрана, который я предполагаю, что это проблема. У меня уже была проблема с тем, что положение и масштаб еще больше отключены (в зависимости от размера экрана), но «исправлены», если вручную установить положение трансформатора и локальную шкалу.

Мне, однако, не повезло найти решение этого вопроса, со всем моим поисковым движком, поэтому я был бы очень благодарен, если бы кто-то помог мне с этим и объяснил мне, в чем проблема.

Вот код, который он выполняет для каждого уровня. Это, конечно, грязно, потому что я старался изо всех сил, чтобы понять, в чем проблема.

 Level thisLevel = levelManager.levelList [i]; 
     GameObject levelButton = (GameObject)Instantiate (menuManager.levelButtonContainerObject); 

     levelButton.transform.SetParent (menuManager.mainMenuLevelContainer.transform, false); 
     levelButton.transform.position = Vector3.zero; 
     levelButton.transform.localPosition = Vector3.zero; 
     levelButton.transform.localScale = Vector2.one; 

     RectTransform levelButtonRect = levelButton.GetComponent<RectTransform>(); 
//   levelButtonRect.position = ApplyCanvasScale (new Vector3 (0f, -50 + (-100 * i), 0f)); 
     levelButtonRect.position = new Vector3(0f, -50 + (-100 * i), 0f); 
//   levelButtonRect.position = Vector3.zero; 
     levelButtonRect.sizeDelta = new Vector2 (0f, 100f); 
     Debug.Log ("Position " + levelButtonRect.position + ", Scale " + levelButtonRect.sizeDelta); 
+0

я, возможно, ответил преждевременно. Являются ли кнопки родительскими для VerticalLayoutGroup? –

+0

Как вы привязываете объект ui? это центр или растянутый или ...? – Bijan

ответ

0

Попробуйте добавить их там, где вы устанавливаете позицию и масштаб:

levelButton.transform.offsetMin = Vector2.zero 
levelButton.transform.offsetMax = Vector2.zero 
Смежные вопросы