تخصيص نافذة الدردشة

*This content is translated using AI (Beta) and may contain errors. To view this page in English, click here.

نظام دردشة النص داخل اللعبة، المدعوم من TextChatService، يتيح للاعبين التواصل بسهولة والتفاعل مع بعضهم في الألعاب الحية. بالإضافة إلى دعم دردشة النص الافتراضية، يمكنك تخصيص واجهة المستخدم الأمامية.

تكوين نافذة الدردشة

تتكون نافذة الدردشة العامة من:

  • نافذة الدردشة
  • شريط الإدخال
  • علامات القناة (اختياري)
المكونات الأساسية لنافذة الدردشة النصية.

تكون علامات القناة غير مفعلة بشكل افتراضي ويمكن تبديل كل مكون بين التشغيل والإيقاف في Studio أو من خلال البرمجة:

في نافذة استكشاف، قم بتوسيع فرع TextChatService واختر ChatWindowConfiguration أو ChatInputBarConfiguration أو ChannelTabsConfiguration. ثم قم بتمكين أو تعطيل المكون في نافذة الخصائص.

عند تمكين ChannelTabsConfiguration، تظهر كل TextChannel افتراضية في علامة كما هو موضح في الجدول التالي. بالإضافة إلى ذلك، يقوم كل TextChannel مخصص بإنشاء علامة تتوافق مع خاصية Name للقناة.

القناة الافتراضيةاسم العلامة
RBXGeneralعام
RBXSystemعام (مجمع في علامة واحدة مع RBXGeneral)
RBXTeamفريق
RBXWhisperاسم المستخدم للاعب الآخر

مظهر النافذة

يمكن تعديل مظهر نافذة الدردشة العامة من خلال ChatWindowConfiguration.

مثيل ChatWindowConfiguration في تسلسل استكشاف.
الخاصيةالوصفافتراضي
BackgroundColor3لون الخلفية من نوع Color3 لنافذة الدردشة.[25, 27, 29]
BackgroundTransparencyشفافية خلفية نافذة الدردشة.0.3
Enabledما إذا كان سيتم عرض نافذة الدردشة الافتراضية. اضبط على false للإخفاء.true
FontFaceخط Font لنص نافذة الدردشة.BuilderSansMedium
TextColor3لون Color3 لنص نافذة الدردشة.[255, 255, 255]
TextSizeحجم نص نافذة الدردشة.14
TextStrokeColor3لون Color3 للحد حول نص نافذة الدردشة.[0, 0, 0]
TextStrokeTransparencyشفافية الحد حول نص نافذة الدردشة.0.5
HorizontalAlignmentالمحاذاة الأفقية لنافذة الدردشة.Left
VerticalAlignmentالمحاذاة الرأسية لنافذة الدردشة.Top
HeightScaleمقياس الارتفاع لنافذة الدردشة نسبة إلى حجم الشاشة.1
WidthScaleمقياس العرض لنافذة الدردشة نسبة إلى حجم الشاشة.1

مظهر شريط الإدخال

يمكن تعديل مظهر شريط إدخال الدردشة من خلال ChatInputBarConfiguration.

مثيل ChatInputBarConfiguration في تسلسل استكشاف.
الخاصيةالوصفافتراضي
BackgroundColor3لون الخلفية من نوع Color3 لشريط إدخال الدردشة.[25, 27, 29]
BackgroundTransparencyشفافية خلفية شريط إدخال الدردشة.0.2
FontFaceخط Font لنص إدخال الدردشة.BuilderSansMedium
PlaceholderColor3لون Color3 لنص الإدخال في أداة الإدخال.[178, 178, 178]
TextColor3لون Color3 لنص الإدخال الذي يدخله اللاعب.[255, 255, 255]
TextSizeحجم نص الإدخال في الدردشة.14
TextStrokeColor3لون Color3 للحد حول نص إدخال الدردشة.[0, 0, 0]
TextStrokeTransparencyشفافية الحد حول نص إدخال الدردشة.0.5
AutocompleteEnabledما إذا كان نظام دردشة النص يعرض خيارات الإكمال التلقائي للرموز التعبيرية والأوامر. يتم الإكمال التلقائي للرموز التعبيرية من خلال كتابة : متبوعًا بأحرف غير بيضاء، بينما يتم الإكمال التلقائي للأوامر من خلال كتابة /.true
KeyboardKeyCodeزر إضافي يمكن للاعبين الضغط عليه لتفعيل التركيز على شريط إدخال الدردشة الافتراضي.Slash

مظهر علامات القناة

يمكن تعديل مظهر علامات القناة من خلال ChannelTabsConfiguration.

مثيل ChannelTabsConfiguration في تسلسل استكشاف.
الخاصيةالوصفافتراضي
BackgroundColor3لون الخلفية من نوع Color3 لعلامات القناة.[25, 27, 29]
BackgroundTransparencyشفافية خلفية علامات القناة.0
HoverBackgroundColor3لون الخلفية من نوع Color3 للعلامات عند التحويم فوقها.[125, 125, 125]
FontFaceخط Font للنص في علامات القناة.BuilderSansBold
TextColor3لون Color3 للنص في علامة غير محددة.[175, 175, 175]
SelectedTabTextColor3لون Color3 للنص في علامة محددة.[255, 255, 255]
TextSizeحجم النص في علامات القناة.18
TextStrokeColor3لون Color3 للحد حول النص في علامات القناة.[0, 0, 0]
TextStrokeTransparencyشفافية الحد حول النص في علامات القناة.1

تخصيص الرسائل

يمكنك تخصيص مظهر نصوص الرسائل وأجزاء الرسائل باستخدام ChatWindowMessageProperties واستدعاءات TextChatService.OnChatWindowAdded دون الحاجة إلى تجاوز واجهة المستخدم الحالية. تتيح لك خيارات التخصيص تعديل مظهر رسائل الدردشة لتتناسب مع موضوع لعبتك، ويمكنك أيضًا تصنيف أو تمييز الرسائل من مجموعات مستخدمين مختلفة من خلال تلوين الأجزاء أو إضافة علامات الدردشة.

تلوين أسماء المستخدمين

عند إرسال مستخدم رسالة دردشة، يتم عرض DisplayName كجزء من رسالة الدردشة. بشكل افتراضي، يتم تلوين اسم كل مستخدم وفقًا لـ Player.TeamColor ولكن يمكنك تغيير ألوان أسماء الدردشة باستخدام ChatWindowMessageProperties وOnChatWindowAdded. يقوم LocalScript في StarterPlayerScripts بتعيين لون محدد مسبقًا لكل مستخدم، يختار عشوائيًا من جدول من ألوان RGB.

اسم مستخدم ملون في نافذة الدردشة.
LocalScript - ألوان أسماء المستخدمين العشوائية

local TextChatService = game:GetService("TextChatService")
local chatWindowConfiguration = TextChatService.ChatWindowConfiguration
local nameColors = {
Color3.fromRGB(255, 0, 0),
Color3.fromRGB(0, 255, 0),
Color3.fromRGB(0, 0, 255),
Color3.fromRGB(255, 255, 0),
}
TextChatService.OnChatWindowAdded = function(message: TextChatMessage)
local properties = chatWindowConfiguration:DeriveNewMessageProperties()
local textSource = message.TextSource
if textSource then
local index: number = (textSource.UserId % #nameColors) + 1
local randomColor: Color3 = nameColors[index]
properties.PrefixTextProperties = chatWindowConfiguration:DeriveNewMessageProperties()
properties.PrefixTextProperties.TextColor3 = randomColor
end
return properties
end

يمكنك أيضًا تطبيق تدرجات الألوان والشفافية لتلوين أجزاء الرسالة باستخدام UIGradient.

اسم مستخدم بتدرج في نافذة الدردشة.
تدرجات ألوان أسماء المستخدمين

local TextChatService = game:GetService("TextChatService")
local chatWindowConfiguration = TextChatService.ChatWindowConfiguration
local gradient = Instance.new("UIGradient")
gradient.Color = ColorSequence.new{
ColorSequenceKeypoint.new(0, Color3.fromRGB(255, 0, 0)),
ColorSequenceKeypoint.new(0.5, Color3.fromRGB(255, 255, 0)),
ColorSequenceKeypoint.new(1, Color3.fromRGB(255, 0, 255))
}
TextChatService.OnChatWindowAdded = function(message: TextChatMessage)
local properties = chatWindowConfiguration:DeriveNewMessageProperties()
local textSource = message.TextSource
if textSource then
properties.PrefixTextProperties = chatWindowConfiguration:DeriveNewMessageProperties()
gradient:Clone().Parent = properties.PrefixTextProperties
end
return properties
end

تخصيص النص الغني

يمكن استخدام علامات لون الخط النص الغني لتنسيق رسائل الدردشة، وهذا مفيد إذا كنت ترغب في تطبيق التنسيق على أجزاء دقيقة جدًا من الرسالة. يجب ملاحظة أن النص الغني لا يدعم التدرجات، ولكن عينة الكود التالية توضح كيفية نقل اسم المستخدم (المخزن في TextChatMessage.PrefixText) إلى نص الرسالة ثم تطبيق علامات نصية غنية فقط على الجزء الخاص بالاسم.

تخصيص النص الغني لاسم المستخدم في نافذة الدردشة.
تخصيص النص الغني

local TextChatService = game:GetService("TextChatService")
local Players = game:GetService("Players")
local chatWindowConfiguration = TextChatService.ChatWindowConfiguration
local gradient = Instance.new("UIGradient")
gradient.Color = ColorSequence.new{
ColorSequenceKeypoint.new(0, Color3.fromRGB(255, 0, 0)),
ColorSequenceKeypoint.new(0.5, Color3.fromRGB(255, 255, 0)),
ColorSequenceKeypoint.new(1, Color3.fromRGB(255, 0, 255))
}
TextChatService.OnChatWindowAdded = function(message: TextChatMessage)
local properties = chatWindowConfiguration:DeriveNewMessageProperties()
if message.TextSource then
properties.PrefixText = "[VIP]"
properties.Text = string.format("<font color='#00ffff'>%s</font>", message.PrefixText) .. " " .. message.Text
properties.PrefixTextProperties = chatWindowConfiguration:DeriveNewMessageProperties()
gradient:Clone().Parent = properties.PrefixTextProperties
end
return properties
end

الرسائل من مصادر غير اللاعبين

عندما يكون TextChatService.CreateDefaultTextChannels هو true، واحدة من القنوات النصية الافتراضية هي قناة RBXSystem. تقوم السكربتات الخاصة بالدردشة الافتراضية تلقائيًا بعرض الرسائل النظامية في هذه القناة. يمكنك تخصيص مظهر هذه الرسائل باستخدام استدعاء TextChannel.OnIncomingMessage.

قد ترغب في تخصيص أو تعديل الرسائل النظامية التي يتم إصدارها تلقائيًا بواسطة نظام الدردشة. بما أن الرسائل النظامية الافتراضية محلية للغات المستخدمين، يجب عليك الإشارة إليها بواسطة TextChatMessage.Metadata في استدعاءات دردشة النص إذا كنت ترغب في تخصيص مظهرها. على سبيل المثال، يمكنك استخدام Metadata لتحديد الرسائل النظامية أو رسائل الخطأ أو الرسائل من أنظمة معينة في لعبتك.

النظام

لإرسال رسالة نظام إلى اللاعب المحلي، مثل "خطاب" من نظام إعلان عام، قم باستدعاء DisplaySystemMessage() من القناة الافتراضية RBXGeneral مع بادئة قبل اسم عرض اللاعب.

برنامج نصي للعميل

local Players = game:GetService("Players")
local TextChatService = game:GetService("TextChatService")
local player = Players.LocalPlayer
local generalChannel: TextChannel = TextChatService:WaitForChild("TextChannels").RBXGeneral
local PREFIX = "[دليل] مرحبًا "
-- أرسل "رسالة النظام" إلى اللاعب مع إضافة اسم عرضهم
generalChannel:DisplaySystemMessage(PREFIX .. player.DisplayName)
صورة تظهر رسالة نظام أساسية في نافذة الدردشة.

NPC/كائن

يمكنك أيضًا تزيين حوارات غير اللاعبين وإضافة فقاعات دردشة لتظهر كما لو كانت الرسائل قادمة من NPC أو كائن داخل العالم ثلاثي الأبعاد.

برنامج نصي للعميل

local TextChatService = game:GetService("TextChatService")
local Workspace = game:GetService("Workspace")
local generalChannel: TextChannel = TextChatService:WaitForChild("TextChannels").RBXGeneral
TextChatService.OnIncomingMessage = function(textChatMessage: TextChatMessage)
local properties = Instance.new("TextChatMessageProperties")
-- تحقق من الرسائل النظامية التي تحتوي على بيانات وصفية
if not textChatMessage.TextSource and textChatMessage.Metadata ~= "" then
-- أضف بادئة لجعل الرسالة تبدو كما لو كانت قد أرسلت بواسطة لاعب
properties.PrefixText = string.format("<font color='#%s'>%s: </font>", "#50C999", textChatMessage.Metadata)
-- أضف فقاعات دردشة
TextChatService:DisplayBubble(Workspace.Statue, textChatMessage.Text)
end
return properties
end
local message = "مرحبًا! سأكون مرشدك."
local speakerName = "فارس قديم"
generalChannel:DisplaySystemMessage(message, speakerName)
صورة توضح تمثال فارس يتحدث برسالة دردشة إلى نافذة الدردشة، مع وجود فقاعة دردشة فوق رأسه.
©2026 شركة Roblox Corporation. تُعد منصّة Roblox، وشعار Roblox وشعار "توسيع حدود المخيلة"، من ضمن علاماتنا التجارية المسجّلة وغير المسجّلة في الولايات المتحدة وبلدان أخرى.