Um in einer 2D Ansicht ähnliche Auflösung und Skalierung zu erhalten bei verschiedenen Bildschirmgrößen,
habe ich 4 Funktionen geschrieben wo eine nur ein Element-Pool ist
beim Ersten Initialisieren werden Arrays mit den Original Werten der Bilder gespeichert (hier Banner und Hintergrund)
und eine ID an diese verteilt.
Die Haupt Funktion sucht nach einer Änderung in der Auflösung.
Sollte eine Änderung sein, rechnet sie ein Prozent von X und Y (ich arbeite 2D) aus, und befüllt eine Variable damit,
Außerdem, werden die weiteren Funktionen ausgeführt.
zuerst, den Font Size Rechner, welcher die Schriftgröße für die derzeitige Resolution berechnet,
der Main Element Pool ist der Hub für die Anpassung der Positionen und Initialisierung der Bilder,
die Variable mit den derzeitigen 1% Werten wird hier reingepasst um mit dieser die Positionierung von Objekten Prozentual zu machen.
alles in der Szene wird hauptsächlich hier angepasst.
Auf unserem Discord ist jetzt auch ein Raum für Diskussionen im Bereich Game Development, joine gerne bei Ideen und Kritik.
func breakDownDisplayInitial(InputImage, ID):
var tempX = (InputImage.size.x / DisplayServer.window_get_size().x) * 100
var tempY = (InputImage.size.y / DisplayServer.window_get_size().y) * 100
var tempSizeX = InputImage.size.x
var tempSizeY = InputImage.size.y
SizeNumbers.resize(ID + 1)
SizeNumbers[ID] = Vector2(tempSizeX,tempSizeY)
SizesArrayProzent.resize(ID + 1)
SizesArrayProzent[ID] = Vector2(tempX, tempY)
func _checkForScreensize():
if screenSizeX != DisplayServer.window_get_size().x || screenSizeY != DisplayServer.window_get_size().y:
if screenSizeX != DisplayServer.window_get_size().x:
screenSizeX = DisplayServer.window_get_size().x
onePercentX = screenSizeX / 100
if screenSizeY != DisplayServer.window_get_size().y:
screenSizeY = DisplayServer.window_get_size().y
onePercentY = screenSizeY / 100
onePercentVector = Vector2(onePercentX, onePercentY)
_fontSizeRechner()
_MainElementePool(onePercentVector)
func _fontSizeRechner():
var tempFontSize: float = DisplayServer.window_get_size().x / REFDISPLAYWIDTH
HeaderText = HEADER * tempFontSize
VarriationHeaderText = VHEADER * tempFontSize
ContentText = CTEXT * tempFontSize
VarriationContentText = VCTEXT * tempFontSize
func _MainElementePool(onePercentXY):
$Shop_Overlay/BG.size.x = (SizesArrayProzent[1].x / 100) * DisplayServer.window_get_size().x
$Shop_Overlay/BG.size.y = (SizesArrayProzent[1].y / 100) * DisplayServer.window_get_size().y
$Shop_Overlay/BannerG.position = Vector2(onePercentXY.x * 55, onePercentXY.y * 8)
$Shop_Overlay/BannerG.size.x = (SizesArrayProzent[2].x / 100) * DisplayServer.window_get_size().x
$Shop_Overlay/BannerG.size.y = (SizesArrayProzent[2].y / 100) * DisplayServer.window_get_size().y
$Shop_Overlay/BannerG/LabelInputs.add_theme_font_size_override("font_size", HeaderText)
$"Shop_Overlay/BannerG/InputsContainer/Input 1".add_theme_font_size_override("font_size", ContentText)
$"Shop_Overlay/BannerG/InputsContainer/Input 2".add_theme_font_size_override("font_size", ContentText)
$"Shop_Overlay/BannerG/InputsContainer/Input 3".add_theme_font_size_override("font_size", ContentText)
$"Shop_Overlay/BannerG/InputsContainer/Input 4".add_theme_font_size_override("font_size", ContentText)
$"Shop_Overlay/BannerG/InputsContainer/Input 5".add_theme_font_size_override("font_size", ContentText)
$Shop_Overlay/BannerG/PreiseContainer/PreisWert.add_theme_font_size_override("font_size", ContentText)
$Shop_Overlay/BannerG/PreiseContainer/Preis.add_theme_font_size_override("font_size", VarriationHeaderText)
$Shop_Overlay/BannerM.position = Vector2(onePercentXY.x * 1, onePercentXY.y * 50)
$Shop_Overlay/BannerM.size.x = (SizesArrayProzent[3].x / 100) * DisplayServer.window_get_size().x
$Shop_Overlay/BannerM.size.y = (SizesArrayProzent[3].y / 100) * DisplayServer.window_get_size().y
$Shop_Overlay/BannerM/ItemBeschreibungContainer/Item.add_theme_font_size_override("font_size", VarriationHeaderText)
$Shop_Overlay/BannerM/ItemBeschreibungContainer/ItemRichTextLabel.add_theme_font_size_override("normal_font_size", VarriationContentText)
$Shop_Overlay/BannerS.position = Vector2(onePercentXY.x * 10, onePercentXY.y * 1)
$Shop_Overlay/BannerS.size.x = (SizesArrayProzent[4].x / 100) * DisplayServer.window_get_size().x
$Shop_Overlay/BannerS.size.y = (SizesArrayProzent[4].y / 100) * DisplayServer.window_get_size().y
$Shop_Overlay/BannerS/Shopbeschreibung.add_theme_font_size_override("font_size", VarriationHeaderText)