Obrolan chat

*Konten ini diterjemahkan menggunakan AI (Beta) dan mungkin mengandung kesalahan. Untuk melihat halaman ini dalam bahasa Inggris, klik di sini.

Dengan sistem dalam pengalaman obrolan teks, Anda dapat mendukung obrolan gelembung chat untuk menampilkan obrolan chat yang dapat disesuaikan di atas avatar pengguna dan NPC. Obrolan gelembung dapat membuat pengalaman Anda lebih menarik secara visual dan membantu pengguna dengan mudah mengidentifikasi

Mengaktifkan Obrolan chat

Untuk mengaktifkan obrolan gelembung di pengalaman Anda:

  1. Di jendela Explorer, pilih BubbleChatConfiguration di bawah TextChatService.

  2. Di jendela Properti, periksa checkbox Enabled .

Kustomisasi Gelembung

Setelah mengaktifkan obrolan gelembung, Anda dapat menyesuaikan tampilan dan perilaku gelembung chat Anda untuk mencocokkan tema pengalaman Anda. Gunakan jendela Properti dari BubbleChatConfiguration untuk perubahan dasar seperti warna teks dan spasi, atau implementasi 2>luar biasa2> kustomisasi untuk gambar lat

Alternatifnya, Anda dapat menambahkan LocalScript di StarterPlayerScripts dengan semua pengaturan kustomisasi Anda. Ini memungkinkan mesin untuk menerapkan kustomisasi Anda selama eksekusi, menggeser pengaturan di Studio. Ini berguna untuk menambahkan efek khusus ke gelembung obrolan saat pengguna menyetel tindakan tertentu atau k

Kustomisasi Dasar

Tabel berikut menunjukkan propperti obrolan gelembung umum. Untuk daftar lengkap propperti kustomisasi, lihat BubbleChatConfiguration .

PropertiDeskripsiStandar
BackgroundColor3Warna latar dari gelembung di Color3 .[250, 250, 250]
FontFaceFont dari teks gelembung.BuilderSansMedium
TextColor3Warna teks gelembung di Color3 .[57, 59, 61]
TextSizeUkuran teks gelembung.16

Kustomisasi Lanjutan

Untuk kustomisasi lanjutan gelembung Anda, tambahkan objek UI mewakili beberapa aspek penampilan gelembung sebagai anak-anak di bawah BubbleChatConfiguration , termasuk:

  • ImageLabel untuk pengaturan gambar latar belakang.
  • UIGradient untuk pengaturan gradien latar belakang.
  • UICorner untuk bentuk sudut dari gelembung.
  • UIPadding untuk ruang pemotongan antara teks dan sudut gelembung, relatif ukuran orang tua.

Setelah menambahkan objek-objek ini, Anda dapat mengubah proporsi objek ini yang berlaku untuk gelembung obrolan untuk kustomisasi gelembung tingkat lanjut. Contoh berikut LocalScript menambahkan gambar latar belakang dan sudut tajam ke gelembung:

Kustomisasi Gelembung Lanjutan

local TextChatService = game:GetService("TextChatService")
local bubbleChatConfiguration = TextChatService.BubbleChatConfiguration
bubbleChatConfiguration.TailVisible = false
bubbleChatConfiguration.TextColor3 = Color3.fromRGB(220, 50, 50)
bubbleChatConfiguration.FontFace = Font.fromEnum(Enum.Font.LuckiestGuy)
local bubbleUICorner = bubbleChatConfiguration:FindFirstChildOfClass("UICorner")
if not bubbleUICorner then
bubbleUICorner = Instance.new("UICorner")
bubbleUICorner.Parent = bubbleChatConfiguration
end
bubbleUICorner.CornerRadius = UDim.new(0, 0)
local bubbleUIPadding = bubbleChatConfiguration:FindFirstChildOfClass("UIPadding")
if not bubbleUIPadding then
bubbleUIPadding = Instance.new("UIPadding")
bubbleUIPadding.Parent = bubbleChatConfiguration
end
bubbleUIPadding.PaddingTop = UDim.new(0, 20)
bubbleUIPadding.PaddingRight = UDim.new(0, 10)
bubbleUIPadding.PaddingBottom = UDim.new(0, 15)
bubbleUIPadding.PaddingLeft = UDim.new(0, 10)
local bubbleImageLabel = bubbleChatConfiguration:FindFirstChildOfClass("ImageLabel")
if not bubbleImageLabel then
bubbleImageLabel = Instance.new("ImageLabel")
bubbleImageLabel.Parent = bubbleChatConfiguration
end
bubbleImageLabel.Image = "rbxassetid://6733332557"
bubbleImageLabel.ScaleType = Enum.ScaleType.Slice
bubbleImageLabel.SliceCenter = Rect.new(40, 40, 320, 120)
bubbleImageLabel.SliceScale = 0.5

Tabel berikut menyoroti tersedia GuiObject dan penyempurna penggunaan anak-anak dengan proporsi kustomisasi yang valid mereka miliki:

PropertiDeskripsiStandar
ImageID aset gambar latar gelembung.
ImageColor3Warna tint dari gambar latar gelembung di Color3 .[255, 255, 255]
ImageRectOffsetOffset dari area gambar yang akan ditampilkan dari bagian atas kiri dalam pixel.(0, 0)
ImageRectSizeUkuran area gambar yang akan ditampilkan dalam pixel. Untuk menampilkan seluruh gambar, tetapkan dimensi mana pun ke 0 .(0, 0)
ScaleTypeJenis skala untuk menyesuaikan ukuran gambar saat ukurannya berbeda dari ukuran absolut gelembung.Stretch
SliceCenterPotong batas gambar jika gambar adalah gambar 9-sliced. Hanya berlaku ketika Anda menetapkan ScaleType sebagai Slice .(0, 0, 0, 0)
SliceScaleSkala persentase sudut potong jika gambar adalah gambar 9-sliced. Hanya berlaku ketika Anda menetapkan ScaleType sebagai Slice .1
TileSizeUkuran ubin gambar. Hanya berlaku ketika Anda menetapkan ScaleType sebagai Tile .(1, 0, 1, 0)

Kustomisasi Per Bubble

Anda dapat secara individual menyesuaikan dan mengubah perilaku gelembung obrolan berdasarkan kondisi spesifik yang menggeser pengaturan umum Anda. Misalnya, Anda dapat menggunakan gelembung obrolan untuk menunjukkan status kesehatan kritis, dan menerapkan efek khusus untuk pesan dengan kata kunci pra-definisi.

Untuk menetapkan kustomisasi per-bubble, tambahkan LocalScript pengguna sisi menggunakan BubbleChatMessageProperties, yang menggeser propperti

Berikut adalah proporsi kustomisasi dasar yang tersedia untuk kustomisasi gelembung:

PropertiDeskripsiStandar
BackgroundColor3Warna latar dari gelembung di Color3 .(250, 250, 250)
BackgroundTransparencyTransparansi latar belakang gelembung.0.1
FontFaceFont dari teks gelembung.BuilderSansMedium
TextColor3Warna teks gelembung di Color3 .[57, 59, 61]
TextSizeUkuran teks gelembung.16

Contoh berikut menambahkan tampilan khusus ke gelembung obrolan pengguna VIP dengan memeriksa apakah pengirim pesan obrolan memiliki属性 IsVIP :

Gelembung VIP

local TextChatService = game:GetService("TextChatService")
local Players = game:GetService("Players")
-- Penangani acara untuk ketika gelembung obrolan baru ditambahkan ke pengalaman
TextChatService.OnBubbleAdded = function(message: TextChatMessage, adornee: Instance)
-- Periksa apakah pesan chat memiliki TextSource (penyedia) yang terkait
if message.TextSource then
-- Buat instansi BubbleChatMessageProperties baru untuk menyesuaikan gelembung obrolan
local bubbleProperties = Instance.new("BubbleChatMessageProperties")
-- Dapatkan pengguna yang mengirim pesan chat berdasarkan UserId mereka
local player = Players:GetPlayerByUserId(message.TextSource.UserId)
if player:GetAttribute("IsVIP") then
-- Jika pemain adalah VIP, kostumkan propinsi gelembung obrolan
bubbleProperties.TextColor3 = Color3.fromHex("#F5CD30")
bubbleProperties.BackgroundColor3 = Color3.fromRGB(25, 27, 29)
bubbleProperties.FontFace = Font.fromEnum(Enum.Font.PermanentMarker)
end
return bubbleProperties
end
end

Semua opsi kustomisasi lanjutan tersedia untuk kustomisasi gelembung per-bubble. Mirip dengan kustomisasi lanjutan untuk gelembung umum, tambahkan instans yang ingin Anda kostumisasi sebagai anak-anak dari BubbleChatMessageProperties . Contoh berikut menambahkan efek gradasi khusus bersama dengan beberapa propeti yang ingin

Gelembung Kesehatan Rendah

local TextChatService = game:GetService("TextChatService")
local Players = game:GetService("Players")
-- Penangani acara untuk ketika gelembung obrolan baru ditambahkan ke pengalaman
TextChatService.OnBubbleAdded = function(message: TextChatMessage, adornee: Instance)
-- Periksa apakah pesan chat memiliki TextSource (penyedia) yang terkait
if message.TextSource then
-- Dapatkan pengguna yang mengirim pesan chat dengan menggunakan UserId mereka
local player = Players:GetPlayerByUserId(message.TextSource.UserId)
-- Temukan manusia di karakter pengguna
local humanoid = player.Character:FindFirstChildWhichIsA("Humanoid")
if humanoid and humanoid.Health < 25 then
-- Buat instansi BubbleChatMessageProperties baru untuk menyesuaikan gelembung obrolan
local bubbleProperties :BubbleChatMessageProperties = Instance.new("BubbleChatMessageProperties")
-- Sesuaikan karakteristik gelembung obrolan untuk kondisi kesehatan rendah
bubbleProperties.BackgroundColor3 = Color3.fromRGB(245, 245, 245)
bubbleProperties.TextColor3 = Color3.fromRGB(234, 51, 96)
bubbleProperties.TextSize = 20
bubbleProperties.FontFace = Font.fromEnum(Enum.Font.DenkOne)
-- Tambahkan UIGradient sebagai anak untuk menyesuaikan gradien
local uiGradient : UIGradient = Instance.new("UIGradient")
uiGradient.Color = ColorSequence.new(Color3.fromRGB(110, 4, 0), Color3.fromRGB(0, 0, 0))
uiGradient.Parent = bubbleProperties
uiGradient.Rotation = 90
return bubbleProperties
end
end
end

Gelembung NPC

Anda dapat menampilkan gelembung obrolan untuk karakter non-player (NPC) dengan menelepon TextChatService:DisplayBubble(), dengan karakter NPC dan pesan sebagai parameter. gelembung ini dapat disesuaikan menggunakan TextChatService.OnBubbleAdded kembali panggilan seperti gelembung obrolan lainnya.

TextChatService:DisplayBubble() hanya bekerja pada skrip pihak klien, jadi pastikan untuk menggunakan Class


local TextChatService = game:GetService("TextChatService")
local prompt = workspace.SomeNPC.ProximityPrompt
local head = prompt.Parent:WaitForChild("Head")
prompt.Triggered:Connect(function()
TextChatService:DisplayBubble(head, "Hello world!")
end)