I want my textbutton’s text to be underlined when player hovers over the textbutton. I want the text to be un-underlined when player’s mouse leaves the button.
I’ve so far made this but it doesn’t work.
for i, v in pairs (topbarFrame:GetChildren()) do
if v:IsA("TextButton") then
v.MouseEnter:Connect(function()
-- local modifiedText =
v.Text = "<u>"..v.Text.."<u>"
end)
v.MouseLeave:Connect(function()
v.Text = tostring(v.Text)
end)
end
end
The format is like this (you forgot the backslash at the end):
<u>Content</u>
Also, tostring
doesn’t remove the tags for you. If your text is always the same, store the string in a variable, and add the tags right then and there in the MouseEnter
event:
local text = "Hello!"
--in the MouseEnter
v.Text = '<u>' .. text .. '</u>'
--in the MouseLeave
v.Text = text
But if your text changes, you can use string patterns and gsub
to dynamically filter out tags:
--gsub replaces all occurrences of the string with the given repl string
--in the MouseLeave
v.Text = v.Text:gsub('</?.>', '') --replace <x> or </x> with empty string
If you don’t understand patterns, I suggest you look at the string pattern reference. But basically:
- captures
<
first using <
- captures 1 or less of
/
(since the max is 1 for closing tags, 0 for starting) using /?
- captures all characters using
.
(since it can be u
, font color = blah
, font family = blah
, or anything really)
- captures
>
last using >
3 Likes