TextService

Hiển Thị Bản Đã Lỗi Thời

*Nội dung này được dịch bằng AI (Beta) và có thể có lỗi. Để xem trang này bằng tiếng Anh, hãy nhấp vào đây.

Không Thể Tạo
Dịch Vụ
Không Sao Chép

TextService là một dịch vụ chịu trách nhiệm nội bộ về việc xử lý hiển thị của văn bản trong trò chơi.

Lớp này có hai chức năng thành viên:

Hàm TextService:GetTextSize() cho phép những nhà phát triển có thể tính toán kích thước không gian cần thiết cho một dòng chữ cụ thể với hình dạng được quy định, trả lại kích thước khối Vector2 .

Hàm TextService:FilterStringAsync() được yêu cầu để lọc chính xác nội dung người dùng (như thông điệp trò chuyện hoặc các nhập nhập khác) trong lợi ích của người an toàn. Các nhà phát triển không sử dụng mặc định của Roblox Class.Trò chuyện

Tóm Tắt

Phương Pháp

Thuộc Tính

Phương Pháp

GetTextSize

Tính các chiều Vector2 (trong pixel) mà sẽ được lấy khi sử dụng các tham số biểu tượng và hạn chế kích thước.

Lưu ý, tham số fontSize sẽ không chấp nhận Enum.FontSize Amount. Thay vào đó, kích thước số đo tương ứng với Enum.FontSize Amount được sử dụng. Điều này không bằng v

Hàm này là một lựa chọn hữu ích cho Class.TextLabel thuộc tính TextLabel.TextBounds và Class.TextButton đối tượng. Sử dụng các thuộc tính TextLabel để tính kích thước text thường là khô

Với GetTextSize, các kích thước yêu cầu bởi một dòng chữ cụ thể trong một dòng chữ cụ thể TextLabel hoặc TextButton có thể được tính trước khi bất kỳ đối tượng nào được tạo hoặc thiết cài đặtthuộc tính text.

Những nhà phát triển được khuyến nghị thêm một pixel đệm vào kết quả để đảm bảo không có văn tắtbị cắt.

Phương thức này chỉ áp dụng cho các bộ chữ được liệt kê trong Enum.Font. Để có được quyền truy cập vào nhiều bộ chữ hơn, bạn có thể sử dụng TextService:GetTextBoundsAsync() thay vào đó.

Tham Số

string: string

Chuỗi cho kích thước văn bản để được tính.

fontSize: number

Số đại diện cho kích thước chữ được sử dụng.

font: Enum.Font

Font đã được sử dụng.

frameSize: Vector2

Cỡ TextLabel.AbsoluteSize của đối tượng văn bản để được sử dụng. Yêu cầu để tính toán cách text sẽ cuộn.


Lợi Nhuận

Kích thước của không gian cần thiết, bằng pixel, theo dòng với hình dạng được xác định.

Mẫu mã

TextService: Getting the Text Size

local TextService = game:GetService("TextService")
local function getTextBounds()
local message = "Hello World"
local size = Vector2.new(1, 1)
local bounds = TextService:GetTextSize(message, 12, "SourceSans", size)
return bounds + Vector2.new(1, 1)
end
print(getTextBounds())

FilterAndTranslateStringAsync

Sinh Lợi

Không hỗ trợ dịch trong chat lãnh thừa. Phương thức này không còn được hỗ trợ và nên được sử dụng. Tất cả các cuộc gọi đều trả về một đối tượng rỗ trống. Việc dịch các thông điệu trò chuyện chỉ khả dụng thông qua TextChatService .

Tham Số

stringToFilter: string
fromUserId: number
targetLocales: Array
Giá Trị Mặc Định: "PrivateChat"

Lợi Nhuận

FilterStringAsync

Sinh Lợi

Hàm FilterStringAsync lọc một chuỗi được nhận từ một người, bằng cách sử dụng TextService , và trả lại một TextFilterResult để có thể phân phối chính xác chuỗi đó.

Sử dụng

Phương thức này nên được gọi một lần mỗi lần một người gửi một thông tin nhắn. Đừng lưu kết quả của hàm này và sử dụng chúng cho các thông điệp riêng biệt. Nếu một người gửi cùng một thông đi

Tuy nhiên, khuyến nghị bạn giữ các kết quả này để hiển thị cùng một thông điệp cho người dùng tham gia vào máy chủ sau đó. Ví dụ: nó có thể được sử dụng để an toàn và hiệu quả thực hiện một máy chủ chat log luôn sử dụng lọc ít hạn chế nhấ

Tham số bắt buộc Enum.TextFilterContext sẽ không ảnh hưởng đến kết quả lọc của truy vấn. Giá trị này sẽ được sử dụng để cải thiện việc lọc văn bản của Roblox.

Văn bản riêng công cộnglà bất kỳ thứ gì được xem chỉ bởi một số người chơi cụ thể, chứ không phải bất kỳ người chơi nào. Ví dụ, nếu trò chuyện được xem bởi một người chơi duy nhất, hoặc bởi một nhóm người chơi được chọn

Ghi chú:

  • Phương thức này luôn được tạo ra để tạo một cuộc gọi lọc văn bản
  • Phương pháp này có thể ném nếu có một lỗi dịch vụ không thể được giải quyết. Nếu chức năng này ném một lỗi xin vui lòng không thử lại yêu cầu; phương pháp này thực hiện các thuật tự động tái thử bên trong. Nếu phương pháp này thất bại không hiển thị chữ về bất kỳ người dùng n
  • Phương thức này hiện đã throw if fromUserId không online trên máy chủ hiện tại. Chúng tôi dự định hỗ trợ người dùng nếu đang ngoại tuyến hoặc ở một máy chủ khác trong tương lai.

Tham Số

stringToFilter: string

Văn bản để lọc.

fromUserId: number

ID người chơi lọc văn bản.

Những gì context đã lọc tin nhắn sẽ được sử dụng.

Giá Trị Mặc Định: "PrivateChat"

Lợi Nhuận

Mẫu mã

Pet Name Filter Example

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local TextService = game:GetService("TextService")
local Players = game:GetService("Players")
local Remotes = Instance.new("Folder")
Remotes.Name = "PetNamingRemotes"
Remotes.Parent = ReplicatedStorage
local UserNamedPet = Instance.new("RemoteEvent")
UserNamedPet.Name = "UserNamedPet"
UserNamedPet.Parent = Remotes
local SendPetName = Instance.new("RemoteEvent")
SendPetName.Name = "SendPetName"
SendPetName.Parent = Remotes
local RequestAllPetNames = Instance.new("RemoteFunction")
RequestAllPetNames.Name = "RequestAllPetNames"
RequestAllPetNames.Parent = Remotes
local filterResults = {}
local function broadcastPetName(userId)
local filterResult = filterResults[userId]
if filterResult then
for _, player in pairs(Players:GetPlayers()) do
if player then
-- spawn a new thread so as to not yield the update
task.spawn(function()
-- grab the filtered string for this user
local toUserId = player.UserId
local filteredString = filterResult:GetNonChatStringForUserAsync(toUserId)
filteredString = filteredString or ""
SendPetName:FireClient(player, userId, filteredString)
end)
end
end
end
end
UserNamedPet.OnServerEvent:Connect(function(player, petName)
local fromUserId = player.UserId
-- pcall to catch errors
local success, result = pcall(function()
return TextService:FilterStringAsync(petName, fromUserId)
end)
if success then
filterResults[fromUserId] = result
broadcastPetName(fromUserId)
else
print("Could not filter pet name")
end
end)
RequestAllPetNames.OnServerInvoke = function(player)
local toUserId = player.UserId
local petNames = {}
-- go through filter results and filter the pet name to be sent
for fromUserId, filterResult in pairs(filterResults) do
local filteredString = filterResult:GetNonChatStringForUserAsync(toUserId)
filteredString = filteredString or ""
-- need to convert userId to string so it can't be sent via a remote function
petNames[tostring(fromUserId)] = filteredString
end
return petNames
end
Players.PlayerRemoving:Connect(function(oldPlayer)
local userId = oldPlayer.UserId
filterResults[userId] = nil
end)

GetFamilyInfoAsync

Sinh Lợi

Trả lại một bảng chứa tên và mặt của một gia tài chữ.

Bảng trả về được cấu trúc như thế này:


type FaceInfo = {
Name: string, -- Ví dụ: "Regular", "Book", "Italic", "Thin Italic"
Weight: Enum.FontWeight,
Style: Enum.FontStyle, -- Italic hoặc Normal
}
type FamilyInfo = {
Name: string, -- Ví dụ: "Source Sans Pro", "Grenze Gotisch"
Faces: {FaceInfo} -- Luôn luôn có ít nhất 1 nhưng có thể lên đến 18.
}

Nếu gia tài chữ đã được tải bởi một cuộc gọi trước đó để GetFamilyInfoAsync , ContentProvider:PreloadAsync() , hoặc một đối tượng chữ với bộ độ TextLabel.FontFace đã được thiết cài đặt, thì phương thức sẽ không trả kết quả.

Lỗi

Phương thức này có thể bị lỗi vì lỗi mạng. Bạn luôn nên bọc nó trong một pcall để xử lý lỗi.

Thả một lỗi trong các tình huống này:

  • Gia đình đã qua là một chuỗi trống.
  • Tải gia đình không thành công.
  • ID tài sản không hợp lệ hoặc điều hướng tới một tài sản không tồn tại.

Tham Số

assetId: ContentId

ID tài sản của gia tài để tìm kiếm.


Lợi Nhuận

Thông tin về gia tài chữ.

Mẫu mã

TextService: Getting font family information

local TextService = game:GetService("TextService")
local familyToCheck = "rbxasset://fonts/families/Arial.json"
-- This is a yield function which may take up to a few seconds to download the font.
local info = TextService:GetFamilyInfoAsync(familyToCheck)
print("Name of the font:", info.Name)
print("Faces:")
for _, face in info.Faces do
print("--------")
print("Name:", face.Name)
print("Weight:", face.Weight.Name)
print("Style:", face.Style.Name)
end

GetTextBoundsAsync

Sinh Lợi

Phương pháp này tương tự như TextService:GetTextSize() , nhưng sử dụng Font đối tượng thay vì Enum.Font, có quyền truy cập vào nhiều bản chữ hơn.

Được sử dụng để đo kích thước một số văn bản được cung cấp một set of properties like the chuỗi, size, và font.

Đây là một hàm trả kết quả vì một số bộ chữ cần phải được tải để đo lường chúng. Nếu bộ chữ đã được tải, thì nó sẽ không trả kết quả. ContentProvider:PreloadAsync() có thể được sử dụng để đảm bảo một bộ chữ được tải.

Lỗi

Phương thức này có thể bị lỗi vì lỗi mạng. Bạn luôn nên bọc nó trong một pcall để xử lý lỗi.

Thả một lỗi trong các tình huống này:

  • The GetTextBoundsParams.Font has a blank family.
  • The params argument was nil.
  • Gia đình chữ hoặc khuôn mặt chữ không thể tải xuống.

Tham Số

Một tham chiếu đến một GetTextBoundsParams đối tượng.


Lợi Nhuận

Kích thước của văn bản như một Vector2 .

Mẫu mã

TextService: Measuring text size

local TextService = game:GetService("TextService")
local params = Instance.new("GetTextBoundsParams")
params.Text = "hello world!"
params.Font = Font.new("rbxasset://fonts/families/GrenzeGotisch.json", Enum.FontWeight.Thin)
params.Size = 20
params.Width = 200
local size = TextService:GetTextBoundsAsync(params)
print("The size of the text is:", size)

GetTextSizeOffsetAsync

Sinh Lợi

Tham Số

fontSize: number
font: Enum.Font

Lợi Nhuận

Sự Kiện