TextBox
*Konten ini diterjemahkan menggunakan AI (Beta) dan mungkin mengandung kesalahan. Untuk melihat halaman ini dalam bahasa Inggris, klik di sini.
Sebuah Kotak Teks memungkinkan pemain untuk memberikan masukan teks. Ini berperilaku mirip dengan TextButton, kecuali bahwa satu Kotak Teks dapat ditetapkan fokus dengan mengklik, mengetuk atau pemilihan gamepad. Saat dalam fokus, pemain dapat menggunakan keyboard untuk mengubah properti Class.Toolbar.Text|Text
- Jika tidak ada teks, PlaceholderText akan muncul. Ini berguna mengingatkan pemain tentang jenis atau format data yang mereka masukkan.
- Secara default, properti ClearTextOnFocus diaktifkan dan menjamin tidak ada teks yang ada saat TextBox fokus. Ini mungkin tidak diinginkan untuk teks yang harus diubah oleh pemain.
- Properti MultiLine memungkinkan pemain untuk memasukkan beberapa baris teks dengan karakter baris baru ( \n ).
The ContextActionService menghormati TextBox keybinds dan akan secara otomatis mencegah acara tekan tombol yang terjadi dengan ContextActionService:BindAction() . UserInputService.InputBegan dan acara terkait akan tetap berfungsi saat sebuah TextBox berada dalam fokus.
Negara Fokus
Mungkin mendeteksi dan mengubah status fokus TextBox:
- Anda dapat menggunakan CaptureFocus ketika muncul dialog sehingga pemain tidak perlu mengklik TextBox ketika tersedia; Anda dapat menggunakan ContextActionService:BindAction() untuk menyambungkan kunci tertentu untuk fokus TextBox menggunakan fungsi ini. Ketika
- Anda dapat mendeteksi apakah kotak teks tertentu berada dalam fokus dengan menggunakan IsFocused. Alternatifnya, UserInputService:GetFocusedTextBox() dapat digunakan untuk memeriksa apakah kotak teks apa pun berada dalam fokus.
- Ketika pemain telah selesai memasukkan teks, acara FocusLost muncul, menunjukkan apakah pengguna menekan Enter untuk mengirimkan teks bersama dengan InputObject yang menyebabkan kerugian fokus. Saat m
- Jika beberapa masalah penting lainnya muncul selama gameplay, Anda dapat ReleaseFocus dari TextBox sehingga masukan keyboard pemain kembali ke game Anda.
Edit Teks
Sebuah TextBox mendukung pemilihan teks melalui properti CursorPosition dan SelectionStart nya. Menggunakan GetPropertyChangedSignal, Anda dapat mendeteksi ketika sebuah pilihan berubah. Selain itu, mungkin bagi pemain untuk men
Peringatan Text Filtering Permainan yang memudahkan komunikasi antara pemain ke pemain menggunakan teks, seperti kotak obrolan atau nama panggilan, harus dengan benar menyaring teks menggunakan TextService:FilterStringAsync() atau Chat:FilterStringAsync(). Jika ini tidak dilakukan dengan benar, permainan Anda mungkin menerima actionmoder
Contoh Kode
-- Place this code in a LocalScript inside a TextBox
local textBox = script.Parent
local secretWord = "roblox"
local colorNormal = Color3.new(1, 1, 1) -- white
local colorWrong = Color3.new(1, 0, 0) -- red
local colorCorrect = Color3.new(0, 1, 0) -- green
-- Initialize the state of the textBox
textBox.ClearTextOnFocus = true
textBox.Text = ""
textBox.Font = Enum.Font.Code
textBox.PlaceholderText = "What is the secret word?"
textBox.BackgroundColor3 = colorNormal
local function onFocused()
textBox.BackgroundColor3 = colorNormal
end
local function onFocusLost(enterPressed, _inputObject)
if enterPressed then
local guess = textBox.Text
if guess == secretWord then
textBox.Text = "ACCESS GRANTED"
textBox.BackgroundColor3 = colorCorrect
else
textBox.Text = "ACCESS DENIED"
textBox.BackgroundColor3 = colorWrong
end
else
-- The player stopped editing without pressing Enter
textBox.Text = ""
textBox.BackgroundColor3 = colorNormal
end
end
textBox.FocusLost:Connect(onFocusLost)
textBox.Focused:Connect(onFocused)
Rangkuman
Properti
Menentukan apakah mengklik TextBox akan menghapus prop性 TextBox.Text nya.
MengukurOffsetTextCursor dalam bytes, atau -1 jika tidak ada cursor.
Mengubah huruf yang digunakan untuk menyajikan teks.
Mengubah huruf yang digunakan untuk menyajikan teks.
Mengubah spasi antar baris teks di TextBox.
Jumlah maksimum grafem yang dapat tampilkanTextBox
Setel ke benar, teks di dalam TextBox dapat pindah ke beberapa baris. Ini juga mengaktifkan pemain untuk menggunakan tombol enter untuk pindah ke baris baru.
Tetapkan warna teks yang digunakan saat tidak ada teks yang dimasukkan ke TextBox belum.
Tetapkan teks yang ditampilkan saat tidak ada teks yang dimasukkan ke TextBox belum.
Menentukan apakah TextBox menyajikan string TextBox.Text dengan pengaturan teks yang kaya.
Mendeterminas posisi awal pemilihan teks, atau -1 jika tidak ada teks yang dipilih.
Jika diaktifkan, masukkan bawaan ke platform digunakan alih-alih keyboard bawaan Roblox.
Mengesokkan string yang di render oleh elemen UI.
Ukuran teks elemen UI dalamOffset.
Mengubah warna teks yang di render.
Menentukan apakah pengguna dapat mengubah Text .
Apakah teks cocok dalam kondisi TextBox.
Mengubah apakah teks diubah untuk menyesuaikan objek GUI yang menyajikannya.
Tentukan tinggi baris teks dalamOffset.
Mendeterminas warna teksnya (outline).
Mendeterminas transparansi garis teks (outline).
Mengukur transparansi teks yang di render.
Mengontrol pemotongan teks yang ditampilkan di TextBox ini.
Menentukan apakah tulisan teks bungkus menjadi beberapa baris dalam ruang elemen GUI , mengurangi teks berlebihan.
Mendeterminas alineasi vertikal teks yang di render.
Mendeterminas alineasi vertikal teks yang di render.
Mengukur apakah elemen UI ini menyinkronkan input.
Menentukan titik asal dari GuiObject , relatif ke ukurannya yang relatif.
Mengukur apakah resizing terjadi berdasarkan konten anak.
Menentukan warna latar belakang GuiObject .
Mengukur transparansi latar belakang dan batas Class.GuiObject .
Mengubah warna batas GuiObject .
Menentukan cara apa GuiObject batas diletakkan relatif terhadap dimensinya.
Mengukur lebar pixel dari batas GuiObject .
Menentukan apakah turunan GuiObjects di luar batas-batas elemen GUI orang tua harus rendah.
Menentukan apakah mouse pemain diaktif ditekan di GuiObject atau tidak.
Mengesok apakah GuiButton dapat diinteraksikan dengan atau tidak, atau apakah GuiState dari GuiObject berubah atau tidak.
Mengontrol urutan sortiran GuiObject saat digunakan dengan UIGridStyleLayout.
Tetapkan GuiObject yang akan dipilih saat penyeleksi gamepad di geser ke bawah.
Tetapkan GuiObject yang akan dipilih ketika pemilih gamepad di pindahkan ke kiri.
Tetapkan GuiObject yang akan dipilih ketika pemilih gamepad ditempatkan ke kanan.
Tetapkan GuiObject yang akan dipilih saat pemilih gamepad digerakkan ke atas.
Mengukur posisi pixel dan skala dari GuiObject .
Mengukur jumlah derajat di mana GuiObject berputar.
Tentukan apakah GUI dapat dipilih oleh gamepad.
Menggeser ornamen pilihan default yang digunakan untuk gamepad.
Urutan dari GuiObjects yang dipilih oleh pemilihan UI gamepad.
Mengukur ukuran pixel dan skala Class.GuiObject .
Tetapkan Size sumbu yang akan diperhitungkan berdasarkan ukuran GuiObject .
Propinsi bercampur dari BackgroundTransparency dan TextTransparency .
Menentukan apakah GuiObject dan nenek moyangnya akan di render.
Mengesepakati urutan di mana GuiObject menyajikan relatif terhadap yang lain.
Menggambarkan posisi layar sebenarnya dari elemen UI, dalam pixel.
Menggambarkan rotasi layar sebenarnya dari elemen UI, dalam derajat.
Menggambarkan ukuran layar sebenarnya dari elemen UI, dalam pixel.
Ketika diatur ke benar, lokalisasi akan diterapkan ke GuiBase2d dan pendahulunya.
Sebuah referensi ke Class.LocalizationTable untuk digunakan untuk menerapkan lokalisasi otomatis ke GuiBase2d dan pendahulunya.
Mengubah perilaku pemilihan gamepad ke arah bawah.
Mengubah perilaku pemilihan gamepad di arah kiri.
Mengubah perilaku pemilihan gamepad ke arah yang benar.
Mengubah perilaku pemilihan gamepad ke arah atas.
Memungkinkan kustomisasi gerakan pemilihan gamepad.
Metode
Menggeser klien untuk fokus pada TextBox.
Mengembalikan benar jika kotak teks fokus, atau false jika tidak.
Mengakses klien untuk menurunkan TextBox.
- TweenPosition(endPosition : UDim2,easingDirection : Enum.EasingDirection,easingStyle : Enum.EasingStyle,time : number,override : bool,callback : function):bool
Dengan mudah pindahkan GUI ke Datatype.UDim2 baru.
- TweenSize(endSize : UDim2,easingDirection : Enum.EasingDirection,easingStyle : Enum.EasingStyle,time : number,override : bool,callback : function):bool
Mendeteksi ukuran GUI secara halus ke ukuran baru UDim2 .
- TweenSizeAndPosition(endSize : UDim2,endPosition : UDim2,easingDirection : Enum.EasingDirection,easingStyle : Enum.EasingStyle,time : number,override : bool,callback : function):bool
Dengan mudah pindahkan GUI ke ukuran dan posisi baru.
Acara
Berapi-api saat klien membiarkan fokus mereka meninggalkan TextBox .
Dibakar saat TextBox mendapatkan fokus.
Diaktifkan saat seorang pengguna mulai berinteraksi melalui perangkat Human-Computer Interface (Tombol pemutar, sentuh mulai, tombol keyboard, dll).
Diaktifkan ketika pengguna mengubah cara mereka berinteraksi melalui perangkat Human-Computer Interface (Tombol pengguna, sentuh dimulai, tombol keyboard, dll).
Diaktifkan saat seorang pengguna berhenti berinteraksi melalui perangkat Human-Computer Interface (Tombol pemutar, sentuh dimulai, tombol keyboard, dll).
Mengaktifkan saat pengguna menggerakkan mouse mereka ke elemen GUI.
Mengaktifkan saat pengguna menyesuaikan mouse mereka keluar dari elemen GUI.
Mengaktifkan setiap kali seorang pengguna menggerakkan mouse mereka saat berada di dalam elemen GUI.
Tembak ketika pengguna menggulir roda mouse mereka kembali saat mouse berada di atas elemen GUI.
Menembak ketika seorang pengguna menggulir roda mouse mereka ke depan ketika mouse berada di atas elemen GUI.
Diaktifkan saat GuiObject fokus dengan Gamepad selektor.
Diaktifkan saat Gamepad selektor berhenti fokus pada GuiObject.
Berdasarkan ketika pemain memulai, lanjutkan dan berhenti menggunakan elemen UI.
- TouchPan(touchPositions : Array,totalTranslation : Vector2,velocity : Vector2,state : Enum.UserInputState):RBXScriptSignal
Dibakar saat pemain menyeret jari mereka di elemen UI.
- TouchPinch(touchPositions : Array,scale : number,velocity : number,state : Enum.UserInputState):RBXScriptSignal
Menembak ketika pemain melakukan gerakan gesek atau tarikan menggunakan dua jari pada elemen UI.
- TouchRotate(touchPositions : Array,rotation : number,velocity : number,state : Enum.UserInputState):RBXScriptSignal
Dibakar saat pemain melakukan gerakan rotasi menggunakan dua jari di elemen UI.
Dibakar saat pemain melakukan gerakan geser di elemen UI.
Dibakar saat pemain melakukan gerakan gesek pada elemen UI.
- SelectionChanged(amISelected : bool,previousSelection : GuiObject,newSelection : GuiObject):RBXScriptSignal
Dibakar saat pemilihan gamepad bergerak ke, pergi, atau berganti di dalam GuiBase2d atau GuiObjek Descendant apa pun.
Properti
ContentText
CursorPosition
Posisi CursorPosition menentukanOffset teks cursor dalam bytes, atau -1 jika TextBox saat ini tidak di편집. Sebuah nilai 1 mewakili awal, posisi sebelum bintang pertama dalam Text property. Saat digunakan bersama dengan property SelectionStart, kemungkinan
Harus dicatat bahwa unit dari properti ini adalah bytes dan bahwa banyak karakter unicode seperti emoji lebih dari 1 byte . kejadian, jika seorang pemain mengetik ke TextBox "Halo 👋" – "Halo" segera setelah tanda tangan bertangan – posisi kurungan akan menjadi 10, bukan 7, karena emoji menggunakan 4
Contoh Kode
local textBox = script.Parent
local function showSelection()
if textBox.CursorPosition == -1 or textBox.SelectionStart == -1 then
print("No selection")
else
local selectedText = string.sub(
textBox.Text,
math.min(textBox.CursorPosition, textBox.SelectionStart),
math.max(textBox.CursorPosition, textBox.SelectionStart)
)
print('The selection is:"', selectedText, '"')
end
end
textBox:GetPropertyChangedSignal("CursorPosition"):Connect(showSelection)
textBox:GetPropertyChangedSignal("SelectionStart"):Connect(showSelection)
Font
PropietasFont memilih salah satu dari beberapa prasetel fonts dengan mana elemen UI akan menyajikan teksnya. Beberapa huruf memiliki warna bold, italic dan/atau varian cahaya (karena tidak ada propietas font atau gaya font).
Dengan pengecualian font "Legacy", setiap font akan menghasilkan teks dengan tinggi baris yang sama dengan propinsi TextBox.TextSize. Font "Kode" adalah font monospace tunggal. Ini memiliki propinsi yang unik bahwa setiap karakter memiliki persentase lebar dan tinggi yang sama dari 1:2. Lebar setiap karakter adalah sek
Properti ini dipertahankan dalam sinkronisasi dengan properti TextBox.FontFace. Saat menetapkanFont,FontFace akan diatur menjadi Font.fromEnum(value) .
Contoh Kode
local textLabel = script.Parent
while true do
-- Iterate over all the different fonts
for _, font in pairs(Enum.Font:GetEnumItems()) do
textLabel.Font = font
textLabel.Text = font.Name
task.wait(1)
end
end
local frame = script.Parent
-- Create a TextLabel displaying each font
for _, font in pairs(Enum.Font:GetEnumItems()) do
local textLabel = Instance.new("TextLabel")
textLabel.Name = font.Name
-- Set the text properties
textLabel.Text = font.Name
textLabel.Font = font
-- Some rendering properties
textLabel.TextSize = 24
textLabel.TextXAlignment = Enum.TextXAlignment.Left
-- Size the frame equal to the height of the text
textLabel.Size = UDim2.new(1, 0, 0, textLabel.TextSize)
-- Add to the parent frame
textLabel.Parent = frame
end
-- Layout the frames in a list (if they aren't already)
if not frame:FindFirstChildOfClass("UIListLayout") then
local uiListLayout = Instance.new("UIListLayout")
uiListLayout.Parent = frame
end
FontFace
Propiedad FontFace mirip dengan propiedad Font, tetapi memungkinkan pengaturan huruf yang tidak ada dalam daftarFont.
Properti ini di-sync dengan properti TextBox.Font. Saat menetapkan FontFace,Font ditetapkan ke nilai枚值 yang sesuai, atau ke Enum.Font.Unknown jika tidak ada pertandingan.
LineHeight
Mengontrol tinggi baris, sebagai beberapa dari ukuran huruf, dengan menyesuaikan jarak antar baris teks di TextBox .Nilai yang valid berkisar dari 1,0 hingga 3,0, berdasarkan default menjadi 1,0.
MaxVisibleGraphemes
Properti ini mengontrol jumlah maksimum grafem (atau unit teks) yang ditunjukkan di TextBox, terlepas dari apakah itu menunjukkan TextBox.PlaceholderText atau TextBox.Text.
Mengubah propinsi tidak mengubah posisi atau ukuran grafem yang terlihat - layout akan dihitung seolah-olah semua grafem terlihat.
Mengatur property ke -1 menonaktifkan batas dan menunjukkan seluruh TextBox.Text .
MultiLine
Setel ke benar, teks di dalam TextBox dapat pindah ke beberapa baris. Ini juga mengaktifkan pemain untuk menggunakan tombol enter untuk pindah ke baris baru.
OpenTypeFeatures
OpenTypeFeaturesError
PlaceholderColor3
Tetapkan warna teks yang digunakan saat tidak ada teks yang dimasukkan ke TextBox belum.
PlaceholderText
Tetapkan teks yang ditampilkan saat tidak ada teks yang dimasukkan ke TextBox belum.
RichText
Properti ini menentukan apakah TextBox menyajikan string TextBox.Text menggunakan format teks yang kaya. Teks kaya menggunakan tag markup sederhana untuk menyebarkan bagian string dalam huruf besar, huruf mundur, warna spesifik, dan banyak lagi.
Untuk menggunakan teks kaya, cukup masukkan tag formatasi dalam TextBox.Text string.
Catat bahwa ketika TextBox memiliki property ini dan kotak mendapatkan fokus, pengguna akan dapat mengedit dan berinteraksi dengan string XML lengkap, termasuk semua tag formasi. Saat fokus hilang, teks akan secara otomatis memproses dan mengekspor tag sebagai teks kaya.
SelectionStart
Mengidentifikasi posisi awal pemilihan teks, atau -1 jika TextBox tidak memiliki rentang teks yang dipilih. Jika nilainya adalah -1 atau setara dengan CursorPosition, maka tidak ada rentang teks yang dipilih. Properti ini menggunakan logika posisi yang sama dengan CursorPosition. SelectionStart akan lebih bes
Contoh Kode
local textBox = script.Parent
local function showSelection()
if textBox.CursorPosition == -1 or textBox.SelectionStart == -1 then
print("No selection")
else
local selectedText = string.sub(
textBox.Text,
math.min(textBox.CursorPosition, textBox.SelectionStart),
math.max(textBox.CursorPosition, textBox.SelectionStart)
)
print('The selection is:"', selectedText, '"')
end
end
textBox:GetPropertyChangedSignal("CursorPosition"):Connect(showSelection)
textBox:GetPropertyChangedSignal("SelectionStart"):Connect(showSelection)
ShowNativeInput
Jika diaktifkan, masukkan bawaan ke platform digunakan alih-alih keyboard bawaan Roblox.
Text
Propietas Teks menentukan konten yang di render oleh elemen UI. Properti visual dari string yang di render ke layar di determinasi oleh TextBox.TextColor3, Class.Toolbar
Mungkin untuk menyajikan emoji (misalnya, 😃) dan simbol lainnya. Simbol khusus ini tidak terpengaruh oleh TextBox.TextColor3 property. Ini dapat ditempelkan ke dalam Script dan LocalScript objek, serta di bagian 2> property window2>.
Properti ini dapat berisi karakter baris baru, namun, tidak mungkin untuk mengetik karakter baris baru di jendela Propinsi. Demikian pula, property ini dapat berisi karakter tab, tetapi akan rendah sebagai ruang kosong.
Contoh Kode
local TweenService = game:GetService("TweenService")
local textLabel = script.Parent
local content = {
"Welcome to my game!",
"Be sure to have fun!",
"Please give suggestions!",
"Be nice to other players!",
"Don't grief other players!",
"Check out the shop!",
"Tip: Don't die!",
}
local tweenInfo = TweenInfo.new(1, Enum.EasingStyle.Sine, Enum.EasingDirection.InOut)
local RNG = Random.new()
local fadeIn = TweenService:Create(textLabel, tweenInfo, {
TextTransparency = 0,
})
local fadeOut = TweenService:Create(textLabel, tweenInfo, {
TextTransparency = 1,
})
local lastIndex
while true do
-- Step 0: Fade out before doing anything
fadeOut:Play()
task.wait(tweenInfo.Time)
-- Step 1: pick content that wasn't the last displayed
local index
repeat
index = RNG:NextInteger(1, #content)
until lastIndex ~= index
-- Make sure we don't show the same thing next time
lastIndex = index
-- Step 2: show the content
textLabel.Text = content[index]
fadeIn:Play()
task.wait(tweenInfo.Time + 1)
end
local textLabel = script.Parent
textLabel.Text = "Kaboom!"
while true do
for size = 5, 100, 5 do
textLabel.TextSize = size
textLabel.TextTransparency = size / 100
task.wait()
end
task.wait(1)
end
local frame = script.Parent
-- Create a TextLabel displaying each font
for _, font in pairs(Enum.Font:GetEnumItems()) do
local textLabel = Instance.new("TextLabel")
textLabel.Name = font.Name
-- Set the text properties
textLabel.Text = font.Name
textLabel.Font = font
-- Some rendering properties
textLabel.TextSize = 24
textLabel.TextXAlignment = Enum.TextXAlignment.Left
-- Size the frame equal to the height of the text
textLabel.Size = UDim2.new(1, 0, 0, textLabel.TextSize)
-- Add to the parent frame
textLabel.Parent = frame
end
-- Layout the frames in a list (if they aren't already)
if not frame:FindFirstChildOfClass("UIListLayout") then
local uiListLayout = Instance.new("UIListLayout")
uiListLayout.Parent = frame
end
local textLabel = script.Parent
-- This text wrapping demo is best shown on a 200x50 px rectangle
textLabel.Size = UDim2.new(0, 200, 0, 50)
-- Some content to spell out
local content = "Here's a long string of words that will "
.. "eventually exceed the UI element's width "
.. "and form line breaks. Useful for paragraphs "
.. "that are really long."
-- A function that will spell text out two characters at a time
local function spellTheText()
-- Iterate from 1 to the length of our content
for i = 1, content:len() do
-- Get a substring of our content: 1 to i
textLabel.Text = content:sub(1, i)
-- Color the text if it doesn't fit in our box
if textLabel.TextFits then
textLabel.TextColor3 = Color3.new(0, 0, 0) -- Black
else
textLabel.TextColor3 = Color3.new(1, 0, 0) -- Red
end
-- Wait a brief moment on even lengths
if i % 2 == 0 then
task.wait()
end
end
end
while true do
-- Spell the text with scale/wrap off
textLabel.TextWrapped = false
textLabel.TextScaled = false
spellTheText()
task.wait(1)
-- Spell the text with wrap on
textLabel.TextWrapped = true
textLabel.TextScaled = false
spellTheText()
task.wait(1)
-- Spell the text with text scaling on
-- Note: Text turns red (TextFits = false) once text has to be
-- scaled down in order to fit within the UI element.
textLabel.TextScaled = true
-- Note: TextWrapped is enabled implicitly when TextScaled = true
--textLabel.TextWrapped = true
spellTheText()
task.wait(1)
end
local textLabel = script.Parent
local moods = {
["happy"] = "😃",
["sad"] = "😢",
["neutral"] = "😐",
["tired"] = "😫",
}
while true do
for mood, face in pairs(moods) do
textLabel.Text = "I am feeling " .. mood .. "! " .. face
task.wait(1)
end
end
TextBounds
Propiedad baca-hanya TextBounds mencerminkan ukuran teks yang dihasilkan dalamOffset. Dengan kata lain, jika Anda mencoba untuk menyesuaikan teks ke dalam Rectangle, propiedad ini akan mencerminkan dimensi minimum Rectangle yang Anda butuhkan untuk menyesuaikan teks.
Menggunakan TextService:GetTextSize() , Anda dapat memprediksi apa TextBounds akan berada di TextLabel yang diberikan string, TextBox.Font , TextBox.TextSize dan ukuran frame.
Contoh Kode
local textBox = script.Parent
-- The smallest the TextBox will go
local minWidth, minHeight = 10, 10
-- Set alignment so our text doesn't wobble a bit while we type
textBox.TextXAlignment = Enum.TextXAlignment.Left
textBox.TextYAlignment = Enum.TextYAlignment.Top
local function updateSize()
textBox.Size = UDim2.new(0, math.max(minWidth, textBox.TextBounds.X), 0, math.max(minHeight, textBox.TextBounds.Y))
end
textBox:GetPropertyChangedSignal("TextBounds"):Connect(updateSize)
TextColor3
Item ini mengidentifikasi warna dari semua teks yang di render oleh elemen GUI. Item ini bersama dengan TextBox.Font , TextBox.TextSize dan 1> Class.Toolbar.TextTransparency1> akan menentukan propeti visual teks. Teks di render setel
Sangat penting agar teks dibaca dengan mudah oleh pemain! Pastikan untuk memilih warna dengan sedikit-tidak ada saturasi, seperti putih, abu-abu, atau hitam. Pastikan warna teks Anda kontras dengan TextBox.BackgroundColor3 dari elemen UI. Jika elemen memiliki latar belakang transparan, cobalah
Contoh Kode
local textBox = script.Parent
local function hasVowels(str)
return str:lower():find("[aeiou]")
end
local function onTextChanged()
local text = textBox.Text
-- Check for vowels
if hasVowels(text) then
textBox.TextColor3 = Color3.new(0, 0, 0) -- Black
else
textBox.TextColor3 = Color3.new(1, 0, 0) -- Red
end
end
textBox:GetPropertyChangedSignal("Text"):Connect(onTextChanged)
-- Place this code in a LocalScript inside a TextBox
local textBox = script.Parent
local secretWord = "roblox"
local colorNormal = Color3.new(1, 1, 1) -- white
local colorWrong = Color3.new(1, 0, 0) -- red
local colorCorrect = Color3.new(0, 1, 0) -- green
-- Initialize the state of the textBox
textBox.ClearTextOnFocus = true
textBox.Text = ""
textBox.Font = Enum.Font.Code
textBox.PlaceholderText = "What is the secret word?"
textBox.BackgroundColor3 = colorNormal
local function onFocused()
textBox.BackgroundColor3 = colorNormal
end
local function onFocusLost(enterPressed, _inputObject)
if enterPressed then
local guess = textBox.Text
if guess == secretWord then
textBox.Text = "ACCESS GRANTED"
textBox.BackgroundColor3 = colorCorrect
else
textBox.Text = "ACCESS DENIED"
textBox.BackgroundColor3 = colorWrong
end
else
-- The player stopped editing without pressing Enter
textBox.Text = ""
textBox.BackgroundColor3 = colorNormal
end
end
textBox.FocusLost:Connect(onFocusLost)
textBox.Focused:Connect(onFocused)
-- Place this code in a LocalScript within a TextLabel/TextButton
local textLabel = script.Parent
-- Some colors we'll use with TextColor3
local colorNormal = Color3.new(0, 0, 0) -- black
local colorSoon = Color3.new(1, 0.5, 0.5) -- red
local colorDone = Color3.new(0.5, 1, 0.5) -- green
-- Loop infinitely
while true do
-- Count backwards from 10 to 1
for i = 10, 1, -1 do
-- Set the text
textLabel.Text = "Time: " .. i
-- Set the color based on how much time is left
if i > 3 then
textLabel.TextColor3 = colorNormal
else
textLabel.TextColor3 = colorSoon
end
task.wait(1)
end
textLabel.Text = "GO!"
textLabel.TextColor3 = colorDone
task.wait(2)
end
local ReplicatedStorage = game:GetService("ReplicatedStorage")
-- Place a StringValue called "GameState" in the ReplicatedStorage
local vGameState = ReplicatedStorage:WaitForChild("GameState")
-- Place this code in a TextLabel
local textLabel = script.Parent
-- Some colors we'll use with TextColor3
local colorNormal = Color3.new(0, 0, 0) -- black
local colorCountdown = Color3.new(1, 0.5, 0) -- orange
local colorRound = Color3.new(0.25, 0.25, 1) -- blue
-- We'll run this function to update the TextLabel as the state of the
-- game changes.
local function update()
-- Update the text
textLabel.Text = "State: " .. vGameState.Value
-- Set the color of the text based on the current game state
if vGameState.Value == "Countdown" then
textLabel.TextColor3 = colorCountdown
elseif vGameState.Value == "Round" then
textLabel.TextColor3 = colorRound
else
textLabel.TextColor3 = colorNormal
end
end
-- Pattern: update once when we start and also when vGameState changes
-- We should always see the most updated GameState.
update()
vGameState.Changed:Connect(update)
TextDirection
TextEditable
TextEditable menentukan apakah pengguna dapat mengubah Text melalui input. Direkomendasikan untuk menonaktifkan ClearTextOnFocus saat property ini dinonaktifkan, sehingga Teks dapat dihapus saat fokus. Errors: Error: Class.Toolbar.Text|Text
TextScaled
Alih-alih menggunakan TextScaled, kami merekomendasikan Anda menggunakan AutomaticSize, metode baru untuk menyesuaikan UI secara dinamis yang akan memberi Anda hasil visual terbaik.
Propiedad TextScaled menentukan apakah teks diubah sehingga mengisi seluruh ruang UI. Saat ini, TextBox.TextSize diabaikan dan TextBox.TextWrapped diaktifkan secara otomatis. Propiedad ini berguna untuk menyempurnakan UI elemen dalam BillboardGuis .
Ketika elemen ini digunakan untuk UI ruang layar, dapat diinginkan untuk menggunakan UITextSizeConstraint untuk mengebat ruang teks yang mungkin.
TextScaled dan AutomaticSize
Direkomendasikan agar pengembang menghindari penggunaan TextScaled dan menyesuaikan UI untuk mengambil keuntungan dari property AutomaticSize. Berikut adalah perbedaan utama antara kedua property ini:
- TextScaled menyesuaikan konten (teks) untuk menampung UI. Tanpa pertimbangan yang cermat, beberapa teks mungkin menjadi tidak terbaca jika diubah terlalu kecil.
- AutomaticSize mengubah ukuran UI untuk menampungkan konten.
Dengan AutomaticSize, Anda dapat menyesuaikan UI Anda untuk menampilkan konten (teks) sambil menjaga ukuran huruf yang konsisten. Untuk informasi lebih lanjut tentang cara menggunakan ukuran huruf otomatis, lihat artikel UI Otomatis.
Kami menyarankan agar Anda tidak menerapkan kedua TextScaled dan AutomaticSize pada objek UI yang sama. Jika Anda menerapkan kedua属性 ini:
- Ukuran Otomatis menentukan jumlah maksimum ruang yang tersedia yang dapat digunakan oleh GuiObject (dalam kasus ini, teks)
- TextScaled menggunakan ruang yang tersedia ditentukan oleh AutomaticSize, untuk menyesuaikan ukuran huruf agar sesuai dengan ruang yang tersedia, yang akan diperluas hingga ukuran huruf maksimum (100), jika tidak ada batas ukuran
- Hasil akhir akan menjadi: teks menyertakan 100 ukuran huruf dan objek UI akan diperluas untuk menyesuaikan teks tersebut
Menggunakan kedua Ukuran Otomatis dan TextScaled pada saat yang sama dapat menyebabkan perbedaan skalierung yang signifikan daripada ketika Ukuran Otomatis dinonaktifkan.
Contoh Kode
local textLabel = script.Parent
-- This text wrapping demo is best shown on a 200x50 px rectangle
textLabel.Size = UDim2.new(0, 200, 0, 50)
-- Some content to spell out
local content = "Here's a long string of words that will "
.. "eventually exceed the UI element's width "
.. "and form line breaks. Useful for paragraphs "
.. "that are really long."
-- A function that will spell text out two characters at a time
local function spellTheText()
-- Iterate from 1 to the length of our content
for i = 1, content:len() do
-- Get a substring of our content: 1 to i
textLabel.Text = content:sub(1, i)
-- Color the text if it doesn't fit in our box
if textLabel.TextFits then
textLabel.TextColor3 = Color3.new(0, 0, 0) -- Black
else
textLabel.TextColor3 = Color3.new(1, 0, 0) -- Red
end
-- Wait a brief moment on even lengths
if i % 2 == 0 then
task.wait()
end
end
end
while true do
-- Spell the text with scale/wrap off
textLabel.TextWrapped = false
textLabel.TextScaled = false
spellTheText()
task.wait(1)
-- Spell the text with wrap on
textLabel.TextWrapped = true
textLabel.TextScaled = false
spellTheText()
task.wait(1)
-- Spell the text with text scaling on
-- Note: Text turns red (TextFits = false) once text has to be
-- scaled down in order to fit within the UI element.
textLabel.TextScaled = true
-- Note: TextWrapped is enabled implicitly when TextScaled = true
--textLabel.TextWrapped = true
spellTheText()
task.wait(1)
end
TextSize
Propinsi TextSize menentukan ketinggian dalamOffset dari satu baris teks yang dibuat. Unit adalah dalamOffset, bukan poin (yang digunakan dalam kebanyakan program pengeditan dokumen). "Legacy" font tidak menyimpan propinsi ini.
Contoh Kode
local textLabel = script.Parent
textLabel.Text = "Kaboom!"
while true do
for size = 5, 100, 5 do
textLabel.TextSize = size
textLabel.TextTransparency = size / 100
task.wait()
end
task.wait(1)
end
TextStrokeColor3
Propiedad TextStrokeColor3 menetapkan warna stroke, atau kontur, dari teks yang di render. Propiedad ini dan TextBox.TextStrokeTransparency menentukan propinsi visual dari stroke teks.
Teks terkirim rendah dari teks normal dan hanya 4 render dari teks yang sama dalam +/- 1 pixelOffsets dalam setiap arah. Teks terkirim rendah bekerja secara independen dan identik dengan TextBox.TextColor3 dan TextBox.TextTransparency .
Contoh Kode
local textLabel = script.Parent
-- How fast the highlight ought to blink
local freq = 2
-- Set to yellow highlight color
textLabel.TextStrokeColor3 = Color3.new(1, 1, 0)
while true do
-- math.sin oscillates from -1 to 1, so we change the range to 0 to 1:
local transparency = math.sin(workspace.DistributedGameTime * math.pi * freq) * 0.5 + 0.5
textLabel.TextStrokeTransparency = transparency
task.wait()
end
TextStrokeTransparency
Propinsi TextStrokeTransparency menetapkan transparansi stroke, atau kontur, dari teks yang di render. Propinsi ini dan TextBox.TextStrokeColor3 menentukan propinsi visual dari stroke teks.
Teks tercetak di render sebelum teks normal dan hanya 4 render dari teks yang sama dalam +/- 1 pixel offsets dalam setiap arah. Teks tercetak ter
Contoh Kode
local textLabel = script.Parent
-- How fast the highlight ought to blink
local freq = 2
-- Set to yellow highlight color
textLabel.TextStrokeColor3 = Color3.new(1, 1, 0)
while true do
-- math.sin oscillates from -1 to 1, so we change the range to 0 to 1:
local transparency = math.sin(workspace.DistributedGameTime * math.pi * freq) * 0.5 + 0.5
textLabel.TextStrokeTransparency = transparency
task.wait()
end
TextTransparency
Propiedad TextColor3 menentukan transparansi semua teks yang di render oleh elemen UI. Propiedad ini bersama dengan TextBox.Font , TextBox.TextSize dan TextBox.TextColor3 akan menentukan proporsi visual teks. Teks di render setelah garis besar ( 1> Class.Toolbar.TextStrokeTransparency</
Menghilangkan teks dalam menggunakan for-loop numerik adalah cara yang fantastis untuk menarik perhatian pemain ke teks yang muncul di layar.
-- Count backwards from 1 to 0, decrementing by 0.1for i = 1, 0, -0.1 dotextLabel.TextTransparency = itask.wait(0.1)end
Contoh Kode
local TweenService = game:GetService("TweenService")
local textLabel = script.Parent
local content = {
"Welcome to my game!",
"Be sure to have fun!",
"Please give suggestions!",
"Be nice to other players!",
"Don't grief other players!",
"Check out the shop!",
"Tip: Don't die!",
}
local tweenInfo = TweenInfo.new(1, Enum.EasingStyle.Sine, Enum.EasingDirection.InOut)
local RNG = Random.new()
local fadeIn = TweenService:Create(textLabel, tweenInfo, {
TextTransparency = 0,
})
local fadeOut = TweenService:Create(textLabel, tweenInfo, {
TextTransparency = 1,
})
local lastIndex
while true do
-- Step 0: Fade out before doing anything
fadeOut:Play()
task.wait(tweenInfo.Time)
-- Step 1: pick content that wasn't the last displayed
local index
repeat
index = RNG:NextInteger(1, #content)
until lastIndex ~= index
-- Make sure we don't show the same thing next time
lastIndex = index
-- Step 2: show the content
textLabel.Text = content[index]
fadeIn:Play()
task.wait(tweenInfo.Time + 1)
end
local textLabel = script.Parent
textLabel.Text = "Kaboom!"
while true do
for size = 5, 100, 5 do
textLabel.TextSize = size
textLabel.TextTransparency = size / 100
task.wait()
end
task.wait(1)
end
TextWrapped
Ketika diaktifkan, properti ini akan menampilkan teks di beberapa baris dalam ruang <a href="/reference/engine/databases">Class.Toolbar|Gui</a> sehingga <a href="/reference/engine/databases">Class.Toolbar.TextBounds</a> tidak akan pernah melebihi <a href="/reference/engine/databases">Class.GuiBase2d.AbsoluteSize</a> dari elemen GUI.
Ini dicapai dengan memecahkan baris panjang teks menjadi beberapa baris. Pemecahan garis putus akan mem preferensikan ruang putih; jika kata panjang yang tidak dipecahkan melebihi lebar elemen, kata itu akan dibagi menjadi beberapa baris.
Jika penghancuran baris lainnya menyebabkan ketinggian vertikal teks (komponen Y dari TextBox.TextBounds ) untuk melebihi ketinggian vertikal elemen (komponen Y dari GuiBase2d.AbsoluteSize), maka baris itu tidak akan rendah sama semua.
Contoh Kode
local textLabel = script.Parent
-- This text wrapping demo is best shown on a 200x50 px rectangle
textLabel.Size = UDim2.new(0, 200, 0, 50)
-- Some content to spell out
local content = "Here's a long string of words that will "
.. "eventually exceed the UI element's width "
.. "and form line breaks. Useful for paragraphs "
.. "that are really long."
-- A function that will spell text out two characters at a time
local function spellTheText()
-- Iterate from 1 to the length of our content
for i = 1, content:len() do
-- Get a substring of our content: 1 to i
textLabel.Text = content:sub(1, i)
-- Color the text if it doesn't fit in our box
if textLabel.TextFits then
textLabel.TextColor3 = Color3.new(0, 0, 0) -- Black
else
textLabel.TextColor3 = Color3.new(1, 0, 0) -- Red
end
-- Wait a brief moment on even lengths
if i % 2 == 0 then
task.wait()
end
end
end
while true do
-- Spell the text with scale/wrap off
textLabel.TextWrapped = false
textLabel.TextScaled = false
spellTheText()
task.wait(1)
-- Spell the text with wrap on
textLabel.TextWrapped = true
textLabel.TextScaled = false
spellTheText()
task.wait(1)
-- Spell the text with text scaling on
-- Note: Text turns red (TextFits = false) once text has to be
-- scaled down in order to fit within the UI element.
textLabel.TextScaled = true
-- Note: TextWrapped is enabled implicitly when TextScaled = true
--textLabel.TextWrapped = true
spellTheText()
task.wait(1)
end
TextXAlignment
TextXAlignment menentukan alineasi vertikal (X-axis) teks yang di render dalam ruang UI. Fungsionerannya sama dengan property teks alineasi kiri, kanan dan pusat (tidak ada opsi justifikasi). Untuk Left dan Right, teks di render sehingga batas teks kiri/kanan hanya menyentuh sudut UI. Untuk Center, setiap baris teks diatur di pusat UI element.
Elemen ini digunakan bersama dengan TextBox.TextYAlignment untuk menentukan persyaratan tata letak teks di kedua sumbu. Elemen ini tidak akan mengubah elemen baca hanya TextBox.TextBounds dan TextBox.TextFits .
Contoh Kode
-- Paste this in a LocalScript within a TextLabel/TextButton/TextBox
local textLabel = script.Parent
local function setAlignment(xAlign, yAlign)
textLabel.TextXAlignment = xAlign
textLabel.TextYAlignment = yAlign
textLabel.Text = xAlign.Name .. " + " .. yAlign.Name
end
while true do
-- Iterate over both TextXAlignment and TextYAlignment enum items
for _, yAlign in pairs(Enum.TextYAlignment:GetEnumItems()) do
for _, xAlign in pairs(Enum.TextXAlignment:GetEnumItems()) do
setAlignment(xAlign, yAlign)
task.wait(1)
end
end
end
TextYAlignment
TextYAlignment menentukan alineasi vertikal (Y-axis) teks yang rendah dalam ruang UI. Untuk Top dan Bottom, teks di render sehingga batas-batas teks atas/bawah hanya menyentuh sudut UI. Untuk Center, teks di render sehingga ada ruang yang sama dari batas atas/bawah teks ke atas ruang elemen dan batas bawah teks ke bawah ruang elemen.
Elemen ini digunakan bersama dengan TextBox.TextXAlignment untuk menentukan persyaratan tata letak teks di kedua sumbu. Elemen ini tidak akan mengubah elemen baca hanya TextBox.TextBounds dan TextBox.TextFits .
Contoh Kode
-- Paste this in a LocalScript within a TextLabel/TextButton/TextBox
local textLabel = script.Parent
local function setAlignment(xAlign, yAlign)
textLabel.TextXAlignment = xAlign
textLabel.TextYAlignment = yAlign
textLabel.Text = xAlign.Name .. " + " .. yAlign.Name
end
while true do
-- Iterate over both TextXAlignment and TextYAlignment enum items
for _, yAlign in pairs(Enum.TextYAlignment:GetEnumItems()) do
for _, xAlign in pairs(Enum.TextXAlignment:GetEnumItems()) do
setAlignment(xAlign, yAlign)
task.wait(1)
end
end
end
Metode
CaptureFocus
Menggeser klien untuk fokus pada TextBox.
Memberikan nilai
Contoh Kode
local ContextActionService = game:GetService("ContextActionService")
local ACTION_NAME = "FocusTheTextBox"
local textBox = script.Parent
local function handleAction(actionName, inputState, _inputObject)
if actionName == ACTION_NAME and inputState == Enum.UserInputState.End then
textBox:CaptureFocus()
end
end
ContextActionService:BindAction(ACTION_NAME, handleAction, false, Enum.KeyCode.Q)
ReleaseFocus
Mengakses klien untuk menurunkan TextBox. Para parameter submitted memungkinkan Anda untuk mengatasi parameter enterPressed dalam acara TextBox.FocusLost.
Item ini harus digunakan dengan LocalScript untuk bekerja seperti yang diharapkan dalam mode online.
Kode yang ditunjukkan di bawah ini akan memaksa klien untuk tidak fokus 'Texture' 5 detik setelah dipilih:
local TextBox = script.Parent
TextBox.Focused:Connect(function()
wait(5)
TextBox:ReleaseFocus()
end)
Harap perhatikan bahwa contoh di atas mengasumsikan bahwa itu adalah di LocalScript, sebagai anak dari TextBox.
Parameter
Memberikan nilai
Contoh Kode
local textBox = script.Parent
local function onFocused()
task.wait(5)
textBox:ReleaseFocus()
end
textBox.Focused:Connect(onFocused)
Acara
FocusLost
Tembak ketika klien membiarkan fokus mereka meninggalkan TextBox - biasanya ketika klien mengklik/mengetuk di luar TextBox. Ini juga menembak jika TextBox mengharuskan fokus pada pengguna.
Dapat digunakan bersamaan dengan TextBox.Focused untuk melacak ketika TextBox mendapatkan dan kehilangan fokus.
Lihat juga UserInputService.TextBoxFocused dan UserInputService.TextBoxFocusReleased untuk fungsi serupa yang menggunakan layanan UserInputService.
Acara ini hanya akan diaktifkan ketika digunakan dalam LocalScript .
Parameter
Boolean yang menunjukkan apakah klien menekan Enter untuk kehilangan fokus ( benar ) atau tidak ( palsu ).
Sebuah instansi InputObject yang menunjukkan jenis input yang menyebabkan TextBox kehilangan fokus.
Contoh Kode
local gui = script.Parent
local textBox = gui.TextBox
local function focusLost(enterPressed)
if enterPressed then
print("Focus was lost because enter was pressed!")
else
print("Focus was lost without enter being pressed")
end
end
textBox.FocusLost:Connect(focusLost)
local textBox = script.Parent
local function onFocusLost(enterPressed, inputThatCausedFocusLost)
if enterPressed then
print("Player pressed Enter")
else
print("Player pressed", inputThatCausedFocusLost.KeyCode)
end
end
textBox.FocusLost:Connect(onFocusLost)
Focused
Dibakar saat TextBox mendapatkan fokus - biasanya saat klien mengklik/mengetuk TextBox untuk memulai entri teks. Ini juga menyebabkan jika TextBox mengharuskan fokus pada pengguna.
Dapat digunakan bersama dengan TextBox.FocusLost untuk melacak ketika TextBox mendapatkan dan kehilangan fokus.
Lihat juga UserInputService.TextBoxFocused dan UserInputService.TextBoxFocusReleased untuk fungsi serupa yang menggunakan layanan UserInputService.
Acara ini hanya akan diaktifkan ketika digunakan dalam LocalScript .
Contoh Kode
local textBox = script.Parent
local function onFocused()
print("Focused")
end
textBox.Focused:Connect(onFocused)