Kojote Geschrieben 19. August 2017 Melden Share Geschrieben 19. August 2017 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 More sharing options...
HortusLongus Geschrieben 20. August 2017 Melden Share Geschrieben 20. August 2017 Wenn du bereit bist, das ein ganz klein wenig ;-) aufzubohren, findest du hier einen sicheren Weg. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Kojote Geschrieben 20. August 2017 Autor Melden Share Geschrieben 20. August 2017 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 More sharing options...
Recommended Posts
Archiviert
Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.