Title is self explanatory, how do i use the Typewritter effect in studio using Textlabel.MaxVisibleGraphemes
This should explain it:
I wouldn’t make this thread if i didn’t had read that first, i did not understand it.
you gotta change the maxvisiblegraphemes repeatedly using for loop,Example:
local TextLabel=script.Parent
for i =1,10,1 do
TextLabel.MaxVisibleGraphemes = i
end
--change that 10 value to how many characters are in your textlabel
--in a local script
--You can also do this
local Text=script.Parent.Text
local TextLength=string.len(Text)
for i =1,TextLength,1 do
TextLabel.MaxVisibleGraphemes = i
end
this script you dont have to do set the text character count like before as it automatically gets its character count
This isn’t even the new typewriter effect it’s outdated.
That’s for the former method, @OP is asking how to use MaxVisibleGraphemes. (very late I know I was writting a lot)
For @Faczki, to explain, let’s first understand a code example they used, which is probably the recommended way to go instead of getting the length of the string and using a for loop, due to how it has trouble with localized letters or emojis.
We’ll only focus on the things that are important so some parts are removed for clarity, suhc as the Richtext tag removal.
local displayText = script.Parent.Text
local index = 0
for first, last in utf8.graphemes(displayText) do
index += 1
script.Parent.MaxVisibleGraphemes = index
wait()
end
Before anything, let’s understand how MaxVisibleGraphemes
work, it’s basically a property that determines how many letters/symbols can be on a GuiObject. If it’s -1
, it means there’s no limit, if it’s set to 10
as an example, it only allows 10 symbols to be on the object at a time, even if there are more.
Now, the next thing to understand is utf8.graphemes
, it’s an iterator function, similar to how pairs
and ipairs
work. It returns 2 things, the first and last indexes, which is basically in shorter terms, the previous character index and the next character index if I’m correct, basically just used to get the current character the loop is in, the returns can be ignored if you just want a simple typewriter effect. The function expects at least one argument, the string to go through
The loop in our example is basically just going to increment index
by one, and setting the MaxVisibleGraphemes
of the GuiObject to the number in the index
variable, which effectively shows more text at a time, then it yield for a short time before repeating so the text is not written instantly
If you want the current character, in the loop, you can just add a few lines, example
local displayText = script.Parent.Text
local index = 0
for first, last in utf8.graphemes(displayText) do
local grapheme = displayText:sub(first, last)
print(grapheme)
index += 1
script.Parent.MaxVisibleGraphemes = index
wait()
end
This just prints the current grapheme
And to end it off, a grapheme is basically just a letter or a symbol taht represents speech. Please tell me if you have anymore questions!