2015-06-02 4 views
1

Я хотел бы реализовать простой перетаскивания с:Принесите элемент пользовательского интерфейса для переднего плана

public void OnDrag (PointerEventData eventData) 
{ 
    transform.position = eventData.position; 
} 

Проблема заключается в том, что, когда я начала перетаскивания, я хочу, чтобы привести элементов пользовательского интерфейса к передний план. делая следующее:

public void OnBeginDrag (PointerEventData eventData) 
{ 
    transform.SetParent (transform.parent); // giving the parent transform or a transform of an element on top 
} 

Это, очевидно, не общее решение. Поэтому у меня есть вопрос. Есть ли элегантный способ как сделать элемент UItopmost?

ответ

0

Я действительно нашел довольно простое решение. После установки UI Element transform на:

transform.SetParent(transform.root); 

UI Element помещается как first child из Canvas, таким образом, effectivly поставив себя на переднем плане .

2

Да, если вы используете единую систему GUI, вы можете создать какие-то слои с помощью GUI.depth.

Элементы GUI, выполненные с более низкими значениями глубины, будут отображаться поверх элементов с более высокими значениями (т. Е. Вы можете представить глубину как «расстояние» от камеры).

Вот пример:

function OnGUI() { 
    GUI.depth = 1; // You set to 1 by default 
    if(GUI.RepeatButton(Rect(0,0,100,100), "My Button")) { 
     GUI.depth = 0; // When the button is clicked, Depth is set to 0 the button is on top 
    } 
} 

Со своей стороны, я обычно использую NGUI, который является очень эффективным & оптимизированы и позволяют обрабатывать перетаскивать & падение.

Однако, если вы не используете графический интерфейс Unity (если вы используете gameObjects) и не хотите использовать плагин, вам необходимо разработать свою собственную систему. Более простой путь для достижения желаемого эффекта:

  • Прежде всего, необходимо иметь orthographic camera для перетаскивания & падения элемента. Вы должны соответствующим образом отрегулировать слой камеры.

Orthographic: камера сделает объекты равномерно, без чувства перспективы.

  • Затем OnDrag вы должны переместить объект ближе к камере. Таким образом, он окажется ближайшим.
  • Наконец, OnDrop, вы должны сбросить позицию объекта Z на то же расстояние от камеры, что и любой другой объект.
+0

Я буду думать об использовании NGUI в своем проекте, но на данный момент ваше предлагаемое решение звучит нормально. –

Смежные вопросы