2016-07-21 6 views
0

Ich möchte UI gameobject Positionen glatt interpolieren, anstelle der Standard-Fang, die von Unity LayoutGroup Klasse behandelt werden (speziell die HorizontalLayoutGroup). Das Problem besteht darin, dass ich nicht weiß, auf welche Methode oder Eigenschaft zuzugreifen oder zu überschreiben ist, die die LayoutGroup Klasse verwendet, um die UI-Objekte nach Abschluss der Layout-Berechnungen zu verschieben.Wie lerne ich die Bewegung von UI-Spielobjekten in LayoutGroup?


Ich habe alle über UnityEngine.UI und in ihrem Bitbucket Repository suchen. Wenn alles fehlschlägt, muss ich meine eigene Layout-Klasse erstellen und dabei alle robusten Layout-Funktionen von Unity verlieren.

Link-Repo Bitbucket: https://bitbucket.org/Unity-Technologies/ui/src/0155c39e05ca/UnityEngine.UI/UI/Core/Layout/?at=5.2


Ich muss nur herausfinden, welche Funktion oder Eigenschaft im UnityEngine.UI Namespace verwendet werden können Unity LayoutGroup Kind Positionierung außer Kraft zu setzen, so dass sie eine Lerp ersetzt werden kann oder ein Tween.

Antwort

2

Wenn Sie direkte Antwort bitten, hier ist die Methode von LayoutGroup Klasse:

protected void SetChildAlongAxis(RectTransform rect, int axis, float pos, float size) 
    { 
     if (rect == null) 
      return; 

     m_Tracker.Add(this, rect, 
      DrivenTransformProperties.Anchors | 
      DrivenTransformProperties.AnchoredPosition | 
      DrivenTransformProperties.SizeDelta); 

     rect.SetInsetAndSizeFromParentEdge(axis == 0 ? RectTransform.Edge.Left : RectTransform.Edge.Top, pos, size); 
    } 

, die von HorizontalOrVerticalLayoutGroup in Methode aufgerufen wird:

protected void SetChildrenAlongAxis(int axis, bool isVertical) 

ABER

I Ich würde Ihnen empfehlen, nicht mit diesem Code zu spielen, da dies die Basisklasse für alle Layouts (Raster, Horizontal und Vertikal). Ein sich änderndes Verhalten würde alle abgeleiteten Layouts beeinflussen.

Sie können entweder Erstellen Sie Ihre eigenen Layout-Gruppe

oder

Arbeit, um das Problem:

  1. leer Kind hinzufügen Element der gewünschten Größe und lassen Sie die Layout positionieren (Dies ist ein Container für Ihr tatsächliches Element).
  2. Erstellen Sie ein untergeordnetes Kind des Elements, das Sie in Schritt 1 erstellt haben (das ist Ihr tatsächliches Element, das jetzt steuerbar ist, damit Sie es positionieren, zwischen ihm und anderem twittern können).

Hoffe, dass es

+0

Danke für die aufwendige Antwort hilft. Die Unter-Kind-Methode ist eine brillante Idee, an die ich nicht gedacht habe! Ich werde ein Update nach Abschluss mit meinem Ergebnis veröffentlichen. – MyIsaak

+0

Ja, verwenden Sie unbedingt einen "Wrapper" wie Umair erklärt !! – Fattie