先选运行时
普通 GMod addon include mgfx/init.lua,并局部保存返回的 API;Lux 项目导入 @lux/mgfx,使用 mgfx.api.*。
local mgfx = include("mgfx/init.lua")
function PANEL:Paint(w, h)
mgfx.StartPanel(self, w, h)
mgfx.RoundedBoxEx(0, 0, w, h, {
radius = 10,
fill = Color(8, 14, 20, 170),
backdrop = {blur = 8, tint = Color(0, 8, 12, 120)},
outerGlow = {color = Color(70, 205, 255, 64), width = 12},
})
mgfx.ProgressBarEx(24, 84, w - 48, 10, 0.72, {
radius = 5,
track = Color(10, 18, 24, 190),
fill = mgfx.LinearGradient(0, 0, 1, 0, Color(30, 130, 255), Color(255, 210, 110)),
})
mgfx.EndPanel()
endimport * as mgfx from "@lux/mgfx"
fn PANEL:Paint(w, h) {
local draw = mgfx.api
draw.startPanel(self, w, h)
draw.roundedBoxEx(0, 0, w, h, {
radius = 10,
fill = Color(8, 14, 20, 170),
backdrop = {blur = 8, tint = Color(0, 8, 12, 120)},
outerGlow = {color = Color(70, 205, 255, 64), width = 12},
})
draw.progressBarEx(24, 84, w - 48, 10, 0.72, {
radius = 5,
track = Color(10, 18, 24, 190),
fill = draw.linearGradient(0, 0, 1, 0, Color(30, 130, 255), Color(255, 210, 110)),
})
draw.endPanel();
}MGFX 是 renderer,不是 UI framework。它不拥有 layout、input、focus、component lifecycle、transition state 或 hit testing。调用方每帧计算视觉状态,再把明确参数传给 Plain GLua API 表或 mgfx.api.*。
普通标签优先使用原生 GMod text 或 Text。只有需要渐变字面、描边、glow 或高质量 shadow 时才使用 TextEx。
docs-site/;修改 docs/ 后重新构建。