我正在寻找有关如何在游戏应用程序中绘制可换肤“按钮”的想法。如果我为按钮背景使用固定的精灵非矢量图像,那么我无法轻松调整按钮的大小。如果我编写代码来绘制一个可调整大小的按钮(就像绘制 Windows 按钮一样),那么程序员就必须参与进来——这会使蒙皮变得困难。另一种选择是将按钮分成 9 个较小的图像 (3x3) 并将它们全部拉伸——有点像圆角在 HTML 中完成。
还有另一种“更简单”的方法吗?最好的方法是什么?
如果你真的想做到这一点,做到这一点的方法是使用纹理坐标。就像您在 HTML 中使用表格制作可拉伸的按钮/面板设计一样,您只需定义角、顶部可拉伸区域、底部可拉伸区域、侧面可拉伸区域以及中间的 UV 坐标。
有关在 XNA 引擎中实现的示例(尽管它是一个闭源引擎),请参见: http ://www.flatredball.com/frb/docs/index.php?title=SpriteFrame_Tutorial
是的。我正在做一个编辑器。它是一种用于 XNA 的类似 XAML 的语言(或类似 OpenLaszlo,如果您愿意的话)。所以按钮可以由编辑器调整大小。按钮也可以通过样式表调整大小。
我想你是对的,在实际设计中,按钮很可能都是相同的大小。但即使在窗口的应用程序中,有时您也需要使按钮更宽以容纳文本。
着色器应该是可能的。您可能必须进行纹素查找,但它会减少复杂 UI 中三角形的数量。