Jump to content
Unity Insider Forum

RectTransform


Kojote

Recommended Posts

Grüße, ich mal wieder!^^

Ich bin gerade dabei mein Menü zu erstellen und möchte dem Benutzer die Möglichkeit geben, die Position des Menüs zu bestimmen.

Nun wollte ich über RectTransform die Position ändern.

Einmal Ankerpunkt links mitte, einmal rechts mitte.

if (value.GetComponent<Toggle>().isOn == true) { 
            canvas.GetComponent<RectTransform>().anchorMin = new Vector2(0, 0.5f);
            canvas.GetComponent<RectTransform>().anchorMax = new Vector2(0, 0.5f);
            canvas.GetComponent<RectTransform>().position = new Vector3(690, 0, 0);
        } else {           
            canvas.GetComponent<RectTransform>().anchorMin = new Vector2(1, 0.5f);
            canvas.GetComponent<RectTransform>().anchorMax = new Vector2(1, 0.5f);
            canvas.GetComponent<RectTransform>().position = new Vector3(-690, 0, 0);
        }

Jedoch kommt bei mir das Canvas irgendwo raus, nur nicht da wo es hin soll. Es springt bei dieser Einstellung in die untere linke Ecke.

Was mache ich falsch?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Das verstädniss zu den einzelnen Punkten und Einstellungsmöglichkeiten habe ich schon. Jedoch fehlt mir das Wissen, wie ich diese gesa,ten Komponenten per C# Script anschreibe. Ansonsten ein echt schönes Tutorial, werd ich mir auf jeden Fall speichern!

Also ich habs nun hin bekommen, frage ist ob dies so richtig ist und vor allem wieso das funktioniert.^^"

public void LinkshaenderModus(GameObject value) {
        if (value.GetComponent<Toggle>().isOn == true) {
            RectTransform rectCanvas = Canvas.GetComponent<RectTransform>();
            rectCanvas.anchorMin = new Vector2(0, 0.5f);
            rectCanvas.anchorMax = new Vector2(0, 0.5f);
            rectCanvas.localPosition = new Vector3(-270, 0, 0);

            RectTransform recttastenfeldCanvas = tastenfeldCanvas.GetComponent<RectTransform>();
            recttastenfeldCanvas.anchorMin = new Vector2(1, 0);
            recttastenfeldCanvas.anchorMax = new Vector2(1, 0);
            recttastenfeldCanvas.localPosition = new Vector3(700, -600, 0);


        } else {
            RectTransform rectCanvas = canvas.GetComponent<RectTransform>();
            rectCanvas.anchorMin = new Vector2(1, 0.5f);
            rectCanvas.anchorMax = new Vector2(1, 0.5f);
            rectCanvas.localPosition = new Vector3(270, 0, 0);

            RectTransform recttastenfeldCanvas = tastenfeldCanvas.GetComponent<RectTransform>();
            recttastenfeldCanvas.anchorMin = new Vector2(0, 0);
            recttastenfeldCanvas.anchorMax = new Vector2(0, 0);
            recttastenfeldCanvas.localPosition = new Vector3(-700, -600, 0);
        }
    }

So, gehen wir mal von "recttastenfeldCanvas" aus. Das Tastenfeld befindet sich unten rechts, auch Anchor hat diesen Punkt. Die Position ist X = -260, Y = 0, Z = 0.

Wenn ich nun das Tastenfeld genau auf die andere Seite bekommen will, warum muss ich mit 700 und -600 rechnen?

Im Endeffekt, wenn das Tastenfeld links ist, hat er die Position X = +260, Y = 0, Z = 0. Also genau das was er auch haben sollte. Warum muss ich dann andere Vectoren eintragen, als die die ich eigentlich haben will oder mache ich hier etwas verkehrt?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...