改进的小红点系统

根据一般的需求思路,几个小红点一般都会影响整个模块外面的总小红点。
说一下计算外面小红点的两种思路:

#原思路

每次里面有小红点变更的时候,都去刷新一下总小红点。
优点: 爽
缺点: 如果你有一百个子小红点,就很蛋疼了,其他小红点也都要全部计算一遍

#改进的思路

建立一个n长度的布尔类型数组,代表着n个子小红点的是否点亮。
在子小红点更新的时候,把对应的位置为设置成的亮度,然后触发总小红点的更新。总小红点的计算现在不会像思路一那样需要全部计算一次了。

使用lua写一下伪代码吧。(lua中建立数组无需声明长度)

-- 红点管理器代码
RTMgr.RED_DOT_TYPE_A
RTMgr.RED_DOT_TYPE_B
RTMgr.RED_DOT_TYPE_C

local CHILD_RED_DOT_COUNT = 3

RTMgr.RedDotData = {}

function RTMgr.OnLogin()
    for i = 1, CHILD_RED_DOT_COUNT do
        RTMgr.RedDotData[i] = false
    end
end

function RTMgr.IsOutsideRTLight()
    for _, light in ipairs(RTMgr.RedDotData) do
        if light then
            return true
        end
    end
    return false
end

function RTMgr.SetChildRT(lightType, light)
    RTMgr.RedDotData[lightType] = light
end
-- 各处子红点更新代码
function xxx.CheckRT()
    local light = xxxHelper.GetXXXLight(params)
    RTMgr.SetChildRT(RTMgr.RED_DOT_TYPE_A, light)
end

猜你喜欢

转载自blog.csdn.net/hhh132/article/details/80882352
今日推荐