Hey ich habe mal eine Frage bezüglich der Skalierung der GUI Elemente.
Nutze bisweilen immer eine Berechnung durch die Bildschirmbreite und - höhe (Screen.width, Screen.height)....
Bin durch das Forum hier und im Inet auf die Matrix4x4 GUI.matrix gestoßen und fand den Ansatz echt gut (hätte man auch selber drauf kommen können )
Wie dem auch sei, ich gebe also meine native Auflösung an, 1920 x 1080.
Paar Hintergrundinfos. Die Anwendung soll nur im Vollbildmodus sein und benutze ein Hintergrundbild und sonst Buttons, die aus 16x16 Grafiken hochskaliert werden.
Bei Auflösungen, die kleiner sind als 1920 x 1080, zB 1280 x 720 skaliert er mir das alles oben links in die Ecke. Es ergibt sich eine Ratio von 0.667. Der Rest ist Hintergrundfarbe. Wenn ich das Hintergrundbild vor der Matrixskalierung zeichnen lasse, passen die Buttonspositionen nicht mehr dazu. Wähle ich als native Auflösung 1280 x 720 so ist der Effekt gespiegelt. Ratio ist dann 1,667. Man sieht nicht mehr alles.
Codetechnisch sieht das ungefähr so aus (schematisch)
private OnGUI() {
this.scale.x = Screen.width / ORIGIN_WIDTH;
this.scale.y = Screen.height / ORIGIN_HEIGHT;
GUI.matrix = Matrix4x4.TRS(Vector3.zero, Quaternion.identity, this.scale);
//GUISTUFF zB Buttons und und und
}
Was kann ich da machen?
Edit: Muss ich die Größen über GUI.matrix.multiplyVector neu berechnen?
Edit2: Habe es nun gelöst, lag daran, dass ich meine Werte für die späteren GUIElemente vorher noch durch Screen.height und Screen.width bezogen habe und darauf wiederum die Matrixtransformation angewendet habe.
LG, Tenshi