anfangs bestand das Problem, das einige der Elemente des Games nicht richtig Skaliert oder Positioniert wurden, wenn die Resolution in den Optionen verändert wurde.
Diesen Problem wurde erst mit Funktionen in jeder Szene die Skalierung benötigten behoben, und Später auf ein einzelnes Tool weiterentwickelt, welches in jeder Szene importiert wird und so auf überall bearbeitet werden kann, wenn etwas verändert wird.
Das wurde in Angriff genommen als die Funktion welche die derzeitige Größe des Fensters übergibt, auf jeder einzelnen Szene einzeln verändert wurden musste.
Das Modul wird einfach in der jeweiligen Szene mit eingebunden und macht schon 90% der Arbeit, es muss nur noch eine Lokale Funktion erstellt werden, die die Daten aus dem BildschirmSkalierer übernimmt und weiterverarbeitet.
In den Szenen des Games heist die Funktion immer _MainElementePool(onePercentXY), hier muss zuerst der Vektor für ein Prozent des Bildschirms übergeben werden, dies geschieht momentan noch im _process:
BildschirmSkalierer übernimmt einige Aufgaben, aber die hier gezeigte ist erstmal die Prozentuale Positionierung auf dem Bildschirm von der Linken Oberen Ecke aus.
Hiermit kann die Position von Objekten auf dem Bildschirm kontrolliert und je nach bedarf verändert werden.
Zum Beispiel wenn der Spieler etwas klickt, das die Position einen Items oder Images in den Bildschirm teleportiert wird.
So können UI Elemente schon vor Benutzung geladen werden, und erst bei Benutzung in den Viewport gebracht werden. das nimmt diesen „blink“ raus der manchmal zu sehen ist wenn etwas erst bei gebrauch geladen wird.
Nachteil hierfür wäre, das die Images schon im Speicher hiterlegt sind.
Also nicht übertreiben.
hier wird der onePercentVektor befüllt mit einem Prozent der Bildschirmgröße für X und Y
func checkForScreensize():
#if screenSizeX != DisplayServer.window_get_size().x || screenSizeY != DisplayServer.window_get_size().y:
if screenSizeX != DisplayGroesse.x || screenSizeY != DisplayGroesse.y:
if screenSizeX != DisplayGroesse.x:
screenSizeX = DisplayGroesse.x
onePercentX = screenSizeX / 100
if screenSizeY != DisplayGroesse.y:
screenSizeY = DisplayGroesse.y
onePercentY = screenSizeY / 100
onePercentVector = Vector2(onePercentX, onePercentY)
_fontSizeRechner()
#_MainElementePool(onePercentVector)
return onePercentVector
zeigt gerne was ihr für Games erstellt, oder schreibt wenn ihr selbst einen Blog über solche Thematik habt.
Oder schaut mir dabei zu wie ich versuche Probleme zu lösen auf Twitch.