2008-08-10 11 views
0

Ich bin auf der Suche nach Ideen, wie man eine skinable "Taste" in einer Spielanwendung zeichnen kann. Wenn ich ein festes Sprite-Nicht-Vektor-Bild für den Hintergrund der Schaltfläche verwende, kann ich die Schaltfläche nicht einfach skalieren. Wenn ich Code schreibe, um einen veränderbaren Button zu zeichnen (wie Windows-Buttons gezeichnet werden), dann muss sich der Programmierer einmischen - und das macht das Enthäuten schwierig. Eine andere Möglichkeit besteht darin, die Schaltfläche in 9 kleinere Bilder (3x3) zu zerlegen und sie alle zu strecken - ähnlich wie abgerundete Ecken in HTML.Wie zeichne skinable "Knöpfe" am besten in einem Videospiel?

Gibt es einen anderen "leichteren" Weg? Was ist der beste Ansatz?

Antwort

2

Wenn Sie dies wirklich erreichen möchten, müssen Sie die Texturkoordinaten verwenden. Ähnlich wie Sie ein dehnbares Button-/Panel-Design in HTML mit einem Tisch machen würden, definieren Sie einfach die UV-Koordinaten für die Ecken, den oberen dehnbaren Bereich, den unteren dehnbaren Bereich, die seitlichen dehnbaren Bereiche und dann die Mitte.

Ein Beispiel dieses Wesens in einer XNA-Engine implementiert (obwohl es ist ein Closed-Source-Motor), siehe dazu: http://www.flatredball.com/frb/docs/index.php?title=SpriteFrame_Tutorial

0

Ja. Ich arbeite an einem Editor. Es ist eine XAML-ähnliche Sprache (oder OpenLaszlo-like, wenn Sie bevorzugen) für XNA. So können die Buttons vom Editor in der Größe verändert werden. Die Schaltflächen können auch in der Größe eines Stylesheets angepasst werden.

Ich denke, Sie haben recht, dass es wahrscheinlich ist, dass die Tasten alle die gleiche Größe in einem echten Design haben. Aber selbst in der App eines Fensters müssen Sie manchmal einen Knopf breiter machen, um Text aufzunehmen.

0

Es mit Shadern möglich sein sollte. Sie würden wahrscheinlich Texel-Lookups durchführen müssen, aber es würde die Anzahl der Dreiecke in einer komplexen Benutzeroberfläche reduzieren.