留言

風吹過的夏天 · 2024-06-29 22:03:30

关于内置的功能中UnitFramesPlus_OptionsFrame_SYSOnBar状态条数值,可以通过更换设定CVar值的方式来实现,规避SettingPanel更新后出现的错误,代码如下,供参考:
    --系统状态条显示
    -- 创建复选框
local UnitFramesPlus_OptionsFrame_SYSOnBar = CreateFrame("CheckButton", "UnitFramesPlus_OptionsFrame_SYSOnBar", UnitFramesPlus_Global_Options, "InterfaceOptionsCheckButtonTemplate")
UnitFramesPlus_OptionsFrame_SYSOnBar:ClearAllPoints()
UnitFramesPlus_OptionsFrame_SYSOnBar:SetPoint("TOPLEFT", UnitFramesPlus_OptionsFrame_MinimapButton, "TOPLEFT", 0, -30)
UnitFramesPlus_OptionsFrame_SYSOnBar:SetHitRectInsets(0, -100, 0, 0)
UnitFramesPlus_OptionsFrame_SYSOnBarText:SetText(UFP_OP_SYS_OnBar)

-- 初始化复选框状态
UnitFramesPlus_OptionsFrame_SYSOnBar:SetScript("OnShow", function(self)
    local statusTextDisplay = GetCVar("statusTextDisplay")
    if statusTextDisplay == "BOTH" then
        self:SetChecked(true)
    else
        self:SetChecked(false)
    end
end)

-- 点击事件处理函数
UnitFramesPlus_OptionsFrame_SYSOnBar:SetScript("OnClick", function(self)
    if not InCombatLockdown() then
        -- 根据当前选中状态设置 CVAR
        if self:GetChecked() then
            SetCVar("statusTextDisplay", "BOTH")
            SetCVar("statusText", "1")
        else
            SetCVar("statusTextDisplay", "NONE")
            SetCVar("statusText", "0")
        end
    else
        print("无法在战斗中更改设置")
    end
end)

-- 显示复选框
UnitFramesPlus_OptionsFrame_SYSOnBar:Show()
 

Dololo · 2024-06-29 22:11:23

感謝分享!