Hey! So, in Roblox, most of the time, your UIStrokes appear too big on mobile devices. I’ll explain how you can fix that!
For this tutorial you will need:
• UserInputService - service
• TouchEnabled - boolean
• A UIStroke - instance
• StrokeThickness - number
• First things first, insert a local script into your ScreenGui
• Next, we get UserInputService:
local UserInputService = game:GetService("UserInputService")
• To progress, we need to get a boolean called “TouchEnabled” if many of you are familiar with it.
local TouchEnabled = UserInputService.TouchEnabled
We need to get our UIStroke
local myTextLabel = script.Parent
local myUIStroke = TextLabel.UIStroke
We also need to create a number. Not to be confused with an IntValue.
The difference between a number and an intvalue is very simple:
-- IntValues
local myIntValue = Instance.new("IntValue")
myIntValue.Name = "myIntValue"
myIntValue.Value = 5 -- IntValues, as the name suggests, can only be whole numbers
-- myIntValue.Value = 2.5 (this will print out an error)
print(myIntValue.Value) -- This'll print out 5
-- Numbers
local a = 1.5
local b = 4
local myNumberValue = Instance.new("NumberValue")
myNumberValue.Name = "myNumberValue"
myNumberValue.Value = a + b -- This won't print out an error, because NumberValues can be both whole values and decimals
-- Use both specifically for different types of scenarios
Now, here’s the best part! Let’s use an if statement, time to check if the user is on a mobile device
if TouchEnabled then -- We check if the player is on a mobile device (this is also the same as saying if true then or if false then, because "TouchEnabled" is a boolean, and it depends on what device someone is playing on
end
-- Here is an example expanding on the explanation above
local boolean = false
if boolean then -- This won't print anything out because the conditions have not been met
print("Did it work?") -- That means that this also won't run! In the same way, if a PC or Console player joins the game, this will also not run
end
-- Let's move on!
We will use a property from the UIStroke called “Thickness” which determines how thick the stroke is.
if TouchEnabled then
UIStroke.Thickness = StrokeThickness -- This is a number.
end
Alrighty! Let’s put everything together!
local Player = game.Players.LocalPlayer
local PlayerGui = Player.PlayerGui
local ScreenGui = PlayerGui.ScreenGui
local UserInputService = game:GetService("UserInputService")
local TouchEnabled = UserInputService.TouchEnabled
local TextLabel = script.Parent
local UIStroke = TextLabel.UIStroke
local StrokeThickness = 1.5 -- Feel free to tinker around with this until it meets your likings
-- you can put whole number or decimal if you want
strokeThickness = 1
if TouchEnabled then
UIStroke.Thickness = StrokeThickness
end
-- If you don't want to set every single UIStroke's thickness in your game by repeating this, you can simply loop through all the descendants of the ScreenGui, and if they are a UIStroke, then change their thickness to your variable's value
for index, value in pairs(ScreenGui:GetDescendants()) do
if value:IsA("UIStroke") then -- This basically detects if the value is a UIStroke or whatever class you put in there
value.Thickness = StrokeThickness -- This should autofill for you, because now the script sees that it could be of the class you requested for
end
end
And that is it! That is how you solve your UIStrokes appearing too big on mobile devices for your experiences!
Rate this tutorial!
- 1 (Needs improvement)
- 2 (Okay)
- 3 (Good)
- 4 (Amazing)
0 voters
Note: This tutorial is outdated. It has been update here