Details shown in image.
the items are stored in a table like this: {Item1, Item2, etc}
Details shown in image.
There’s probably an almost invisible frame with an animating gradient on top of the UI. The reason the effect appears more on text is because the default color of said text is white, meaning it will “absorb” more of the gradient that is on top of it despite the transparency. Other UI elements on the other hand may not change that much due to being darker.
Basically there’re not multiple gradients for each piece of text, this is one huge gradient.
it look like mixing colors, but I am not sure how to set each of the textcolor3 to its specific color without it being all the same one.
Each text label doesn’t have a specific color, its a big almost invisible frame on top of white labels. The reason you think each label has its own color is because the gradient is scaled so much that it becomes impossible to notice.
what if I don’t want to use index to determine the color, because the index may not be the same every time (cuz those are auto generated), and the Y might be different, like some are higher, some are lower
or maybe change it I think
local reverse = true
local step = 0
local function t()
if step >= 1 then
reverse = not reverse
step = 0
end
local rlpg = reverse and 1 - step or step
local color = ThemeService:GetColorValue(GuiLibrary.Settings.Theme, rlpg):Lerp(Color3.new(0, 0, 0), 0.1) -- guilibrary is a custom made auto generate library for player to see, w/ multiple themes and even rainbow if possible, I don't use renderstep cuz some devices always 4fps :)
step = step + 0.005
for i, v in pairs(GuiLibrary.GradientItems) do
if v == nil then
return
end
if v:IsA("Frame") then
v.BackgroundColor3 = color
elseif v:IsA("ImageLabel") or v:IsA("ImageButton") then
v.ImageColor3 = color
elseif v:IsA("TextLabel") or v:IsA("TextButton") then
v.TextColor3 = color
elseif v:IsA("UIGradient") then
v.Color = ColorSequence.new(color)
end
end
for i, v in pairs(GuiLibrary.RainbowItems) do
if v == nil or GuiLibrary.Settings.Theme ~= "Rainbow" then
return
end
if v:IsA("Frame") then
v.BackgroundColor3 = color
elseif v:IsA("ImageLabel") or v:IsA("ImageButton") then
v.ImageColor3 = color
elseif v:IsA("TextLabel") or v:IsA("TextButton") then
v.TextColor3 = color
elseif v:IsA("UIGradient") then
v.Color = ColorSequence.new(color)
end
end
end
task.spawn(function()
repeat
t()
task.wait()
until not GuiLibrary -- this will be nil when the player leaves the game
end)
table.sort(Items, function(a: TextButton | TextLabel, b: TextButton | TextLabel)
return a.AbsolutePosition.Y < b.AbsolutePosition.Y or a.AbsolutePosition.Y == b.AbsolutePosition.Y and a.AbsolutePosition.X < b.AbsolutePosition.X
end)
TextLinearGradient.rbxm (1,5 КБ)
what if I want the gradient to loop (from top 2 bottom)
maybe my explaination is poor
what I want is just uhh
not UIgradient in each textlabel, every textlabel should have its own text color
“ArrayList (Text GUI) gradient” ← maybe you can understand that better
return math.sin(DateTime.now().UnixTimestampMillis / 600.0 + screenCoordinates.X * 0.005 + screenCoordinates.Y *
0.06) * 0.5 + 0.5
end
Themes["mixColors"] = function(color1, color2, percent)
local inverse_percent = 1.0 - percent
local redPart = (color1.R * 255) * percent + (color2.R * 255) * inverse_percent
local greenPart = (color1.G * 255) * percent + (color2.G * 255) * inverse_percent
local bluePart = (color1.B * 255) * percent + (color2.B * 255) * inverse_percent
return Color3.fromRGB(redPart, greenPart, bluePart)
end
Themes["getAccentColor"] = function(theme, screenCoordinates)
if not theme or not Themes.Themes[theme] then
return false
end
local th = Themes.Themes[theme]
local blendFactor = Themes.getBlendFactor(screenCoordinates)
if theme ~= "Rainbow" then
if #th == 1 then
return th[1]
end -- Static theme, nothing to blend
if #th == 3 then
if blendFactor <= 0.5 then
return Themes.mixColors(th[2], th[1], blendFactor * 2)
else
return Themes.mixColors(th[3], th[2], (blendFactor - 0.5) * 2)
end
end
return Themes.mixColors(th[1], th[2], Themes.getBlendFactor(screenCoordinates))
else
local rainbowstate = math.ceil((DateTime.now().UnixTimestampMillis + ((screenCoordinates.X + screenCoordinates.Y) * 10)) / 15)
rainbowstate = rainbowstate % 360
return Color3.fromHSV(rainbowstate / 360.0, 0.6, 1)
end
end
found from random rise source code. worked
(themes is something like that)
Themes["Themes"] = {
Aubergine = {q(170, 7, 107), q(97, 4, 95)},
Aqua = {q(185, 250, 255), q(79, 199, 200)},
Banana = {q(253, 236, 177), q(255, 255, 255)}} -- q is color3.fromrgb