경험 내 텍스트 채팅을 처리하는 서비스, 포함 managing channels , 메시지 장식, 텍스트 필터링, creating commands , 그리고 사용자 지정 채팅 인터페이스 개발 .
자세한 내용은 TextChatService 개요에 참조하십시오.
추가 사용자 정의를 위해 TextChatService에는 다음과 같은 단일 자식이 있습니다:
요약
속성
채팅 번역이 활성화되었는지 여부를 결정합니다.
전체적으로 TextChatService 활성화하거나 레거시 채팅 시스템으로 되돌릴지 여부를 결정합니다.
기본 TextChatService를 생성해야 하는지 여부를 결정합니다. TextChatCommands .
기본 TextChatService를 생성해야 하는지 여부를 결정합니다. TextChannels .
메서드
제공된 부분 또는 플레이어 캐릭터 위에 채팅 거품을 표시합니다.
사용자가 경험에서 채팅할 수 있는 권한이 있는지 여부를 결정합니다.
두 사용자가 서로 메시지를 받을지 여부를 결정합니다.
사용자가 부모 제어 설정과 같은 요소에 따라 경험에서 다른 사용자와 직접 채팅할 수 있는 권한이 있는지 여부를 결정합니다.
이벤트
TextChatService:DisplayBubble()가 호출될 때 화재가 발생합니다.
클라이언트에서 TextChannel:DisplaySystemMessage() 를 호출하거나 서버에서 유효한 TextChannel:SendAsync() 응답을 받을 때 발생합니다.
발신 클라이언트에 의해 TextChannel:SendAsync()가 호출될 때 화재가 발생합니다.
콜백
거품 채팅이 표시될 때 호출됩니다.
채팅 창에 새 메시지가 표시될 때 호출됩니다. 클라이언트에서만 구현할 수 있습니다.
TextChatService 가 들어오는 메시지를 받을 때 호출됩니다.
속성
ChatTranslationEnabled
채팅 번역이 활성화되었는지 여부를 결정합니다. true이면 시스템 메시지가 플레이어의 첫 번째 참여 시 채팅 메시지가 플레이어의 선호 언어로 번역될 수 있음을 플레이어에게 알립니다.
ChatVersion
전체적으로 TextChatService 활성화하거나 레거시 채팅 시스템으로 되돌릴지 여부를 결정합니다.이 속성을 Enum.ChatVersion.LegacyChatService로 설정하면 TextChatService을 효과적으로 비활성화할 수 있습니다.
CreateDefaultCommands
기본 TextChatService를 생성해야 하는지 여부를 결정합니다. TextChatCommands .
참여가 진실이면 다음 TextChatCommands 가 생성되고 이름이 Folder 인 TextChatCommands 내에 배치됩니다. 내부 TextChatService :
<th>기본 별칭</th><th>보조 별칭</th><th>설명</th><th>사용 예시</th></tr></thead><tbody><tr><td><b>RBX클리어명령</b></td><td>지우다</td><td>cls</td><td>로컬 사용자의 채팅 로그를 지우십시오.</td><td><code>/clk스</code></td></tr><tr><td><b>RBXConsoleCommand</b></td><td>콘솔</td><td /><td>개발자 콘솔을 엽니다.</td><td><code>/console</code> ></td></tr><tr><td><b>RBXEmoteCommand</b></td><td>감정 표현</td><td>e</td><td>아바타 감정 표현을 재생합니다.</td><td><code>/e dance</code></td></tr><tr><td><b>RBXHelpCommand</b></td><td>돕다</td><td>?</td><td>채팅 명령 목록을 표시합니다.</td><td><code>/헬프</code></td></tr><tr><td><b>RBXMuteCommand</b></td><td>음소거</td><td>m</td><td>모든 Class.TextChannel|TextChannels에서 사용자의 Class.Player.Name|Name 또는 Class.Player.DisplayName|DisplayName에 의해 음소거합니다.</td><td><code>/m 사용자명</code></td></tr><tr><td><b>RBX팀 명령</b></td><td>팀</td><td>t</td><td>팀원에게만 메시지가 표시되는 팀 채팅 모드로 들어갑니다.</td><td><code>/t</code></td></tr><tr><td><b>RBXUnmuteCommand</b></td><td>무음 해제</td><td>um</td><td>모든 Class.TextChannel|TextChannels에서 사용자의 Class.Player.Name|Name 또는 Class.Player.DisplayName|DisplayName에서 음소거를 해제합니다.</td><td><code>/um 사용자 이름</code></td></tr><tr><td><b>RBX버전명령</b></td><td>버전</td><td>v</td><td>채팅 버전을 표시합니다.</td><td><code>/버전</code></td></tr><tr><td><b>RBXWhisper명령</b></td><td>귓속말</td><td>w</td><td>다른 <code>Class.Player</code>로 위스퍼 모드에 들어갑니다.</td><td><code>/w DisplayName</code> 또는 <code>/w @Username</code></td></tr></tbody>
이름 |
---|
Note that you can edit, create, and remove TextChatCommands even if CreateDefaultCommands 가 true이면 무음 및 음성 명령이 모든 TextChannels에 적용됩니다.
CreateDefaultTextChannels
기본 TextChatService를 생성해야 하는지 여부를 결정합니다. TextChannels .참여할 경우 true, a 명명된 텍스트 채널 은 런타임에서 내부에 생성되어 아래 표에 설명된 을 포함합니다.기본 채널 각각에는 내부 바인딩된 TextChannel.OnIncomingMessage 콜백 함수에 설명된 특별 동작이 적용되어 채널을 통해 전송되는 메시지의 모양이 변경되는 메시지가 적용됩니다.콜백은 런타임에 자동으로 할당되거나 TextChannel 가 있는 경우 또는 TextChannel 가 생성될 때 할당됩니다.
<th>설명</th></tr></thead><tbody><tr><td><b>RBX일반</b></td><td><code>Class.TextChannel</code> 플레이어 메시지용.채팅 창에서 메시지는 수정되어 <code>Class.TextChatMessage.PrefixText|PrefixText</code> 가 채팅 플레이어에게 고유한 이름 색상을 제공하기 위해 <a href="/ui/rich-text">풍부한 텍스트</a> 글꼴 태그를 받습니다.<code>Class.Player.Team</code>이 존재하면 기본 이름 색상 대신 <code>Class.Team.TeamColor</code>가 사용됩니다.</td></tr><tr><td><b>RBX시스템</b></td><td><code>Class.TextChannel</code> 시스템 메시지용.채팅 창에서 메시지는 기본적으로 <code>Class.TextChatMessage.Text</code> 에 라이트 그레이 색 태그가 지정되거나 <code>Class.TextChatMessage.Metadata</code> 에 단어 <code>"오류"</code> 가 포함되어 있으면 빨간색 태그가 지정됩니다.</td></tr><tr><td><b>RBX팀[브릭 색상]</b></td><td>Class.TextChannel 팀 특정 플레이어 메시지를 위한, Class.Team.TeamColor|TeamColor 가 사용 중인 경우 클래스 내에서 Class.Teams 서비스 내에서 생성된 메시지.생성된 채널의 이름은 <b>RBXTeam</b>으로, 그 다음에 <code>Class.Team.TeamColor|TeamColor</code> 이름이 따라옵니다.예를 들어, RBXTeamCrimson 는 활성 팀의 Class.Team.TeamColor|TeamColor 속성이 "크림슨" 데이터 형식 인 경우 생성된 Class.TextChannel 클래스입니다.채팅 창에서 메시지가 수정되어 Class.TextChatMessage.PrefixText|PrefixText 가 색상으로 지정되고 [팀] 팀 채널이 모든 비- Class.Player.Neutral|Neutral 플레이어에 생성되어 팀 전용 채팅을 사용할 수 있습니다.연결된 <code>Class.Team.TeamColor|TeamColor</code> 클래스가 남아 있지 않은 팀이 없으면 채널이 제거됩니다.</td></tr><tr><td><b>RBXWhisper:[사용자1]_[사용자2]</b></td><td>Class.TextChannel 두 플레이어 사이의 속삭임 메시지를 위한, 플레이어가 다른 플레이어에게 /whisper 명령을 사용할 때 생성된,예를 들어 RBXWhisper:2276836_505306092는 Class.TextChannel으로 플레이어에게 Class.Player.UserId|UserIds 및 505306092을 가진 클래스입니다.내부 속삭임 채널에는 각각의 <code>Class.TextSource|TextSources</code> 와 관련된 두 개의 <code>Class.Player.UserId|UserIds</code> 가 있으며, 채팅 창에서 메시지는 각각의 <b>RBXGeneral</b> 및 <code>Class.TextChatMessage.PrefixText</code> 와 동일한 색상으로 표시됩니다.Whisper 채널은 플레이어가 경험을 떠날 때 제거됩니다.</td></tr></tbody>
채널 |
---|
기본 TextChannel.OnIncomingMessage 콜백을 재정의할 수 있습니다.또한 TextChannels가 참이면 편집, 생성 및 제거할 수 있으며, CreateDefaultTextChannels가 참이면 조차 가능합니다.
다른 텍스트 채널의 메시지는 ChannelTabsConfiguration를 사용하여 채팅 창의 다른 탭으로 분리할 수 있습니다.
메서드
DisplayBubble
제공된 부분 또는 플레이어 캐릭터 위에 채팅 거품을 표시하고 이 메서드에서 지정된 매개변수로 BubbleDisplayed 이벤트를 발생시킵니다.캐릭터 내부의 부품을 지정하여 플레이어가 아닌 캐릭터(NPC)의 거품을 표시할 수 있습니다(예: 머리).
이 메서드는 LocalScript에서만 사용할 수 있거나 Script에서 RunContext의 Enum.RunContext.Client과 함께 사용할 수 있습니다.
매개 변수
반환
CanUserChatAsync
사용자가 경험에서 채팅할 수 있는 권한이 있는지 여부를 결정합니다.부모 제어 설정과 같은 요소는 사용자가 메시지를 보내는 것을 방지할 수 있습니다.현재 서버에 사용자 ID가 없으면 오류가 발생합니다.이 메서드는 현재 플레이어 모두와 함께 사용할 수 있으며, 에서는 의 또는 중 하나를 사용할 수 있습니다.이 메서드는 LocalScript에서도 사용할 수 있지만 로컬 플레이어의 UserId만 사용할 수 있습니다.
매개 변수
반환
CanUsersChatAsync
두 사용자가 서로 메시지를 받을지 여부를 결정합니다.호환되지 않는 부모 제어 설정이나 차단된 상태와 같은 요소는 사용자 간의 메시지 전달을 방해할 수 있습니다 TextChannels 내부적으로 이 결과를 사용하여 사용자 간의 메시지를 전달할지 여부를 결정합니다.이 메서드는 Script 와 RunContext 의 Enum.RunContext.Server 또는 Enum.RunContext.Legacy 에서만 사용할 수 있습니다.
매개 변수
반환
CanUsersDirectChatAsync
사용자가 부모 제어 설정에 따라 다른 사용자와 직접 채팅할 수 있는 권한이 있는지 여부를 결정합니다. 사용 시기:
- 통신 라인이 사용자 발생(개발자나 게임플레이가 발생시키지 않음)
- 통신에 대한 액세스가 차단되고 제한되었습니다
직접 채팅의 예는 두 사용자 사이의 속삭임 채널입니다.
결과에 따라 경험의 특정 기능을 게이트할 수 있습니다.
직접 채팅을 위해 TextChannel를 생성할 때, 채널이 사용자 간에 메시지를 전달할지 여부를 결정할 수 있도록 TextChannel:SetDirectChatRequester()를 사용하여 requesterUserId를 설정합니다.When TextChannel.DirectChatRequester 가 null이 아닌 경우, TextChannels 내부적으로 이 결과를 사용하여 사용자 간에 메시지를 전달할지 여부를 결정합니다.
local whoCanDirectChat = TextChatService:CanUsersDirectChatAsync(requesterUserId, { userId1, userId2 })if #whoCanDirectChat > 0 then-- 요청자의 requesterUserId는 iPad1, iPad2 또는 둘 모두와 채팅을 연결할 수 있습니다else-- 요청자의 requesterUserId는 iPad1 또는 iPad2와 채팅을 지시할 수 없습니다end
이 메서드는 Script 에서만 사용할 수 있으며, RunContext 또는 Enum.RunContext.Server 의 Enum.RunContext.Legacy 와 함께 사용할 수 없습니다.
매개 변수
직접 채팅 요청을 시작할 사용자. 요청자UID가 현재 서버에 없으면 이 메서드가 오류가 발생합니다.
요청자UID가 직접 채팅하고 싶은 사용자 목록. 현재 서버에 없는 사용자는 무시됩니다.
반환
직접 채팅 요청에 참여할 수 있는 사용자 목록.사용자 중 누구도 요청자 ID와 채팅을 연결할 수 없으면 결과는 빈 배열입니다.
코드 샘플
This example checks if two users can chat, creates a new TextChannel, and adds them to it.
local TextChatService = game:GetService("TextChatService")
local directChatParticipants = TextChatService:CanUsersDirectChatAsync(userId1, { userId2 })
-- Check for eligible participants
if #directChatParticipants > 0 then
local directChannel = Instance.new("TextChannel")
directChannel.Parent = TextChatService
for _, participant in directChatParticipants do
directChannel:AddUserAsync(participant)
end
return directChannel
end
warn("Could not create TextChannel. Not enough eligible users.")
return nil
이벤트
MessageReceived
Like TextChannel.MessageReceived , 클라이언트에서 TextChannel:DisplaySystemMessage() 가 호출되거나 서버에서 유효한 TextChannel:SendAsync() 응답을 받을 때 발생합니다.이 이벤트는 클라이언트에서만 발생합니다.
서버의 속성이 바인딩되어 반환되면 클라이언트가 발사되지 않습니다.
TextChatMessage 매개변수를 사용하여 메시지의 TextSource 및 텍스트(TextChatMessage.Text)를 가져옵니다.
TextChatMessage 매개 변수는 TextChatService.OnIncomingMessage 또는 TextChannel.OnIncomingMessage에 바인딩된 모든 함수의 최종 결과입니다.
매개 변수
받은 TextChatMessage입니다.
SendingMessage
발신 클라이언트에 의해 TextChannel:SendAsync()가 호출될 때 화재가 발생합니다.서버 응답을 기다리는 동안 사용자에게 자리 표시자 메시지를 표시하도록 사용하세요 TextChannel:SendAsync() .
매개 변수
콜백
OnBubbleAdded
거품 채팅이 표시될 때 호출됩니다. 이는 클라이언트에서만 구현할 수 있습니다.
개별 거품 채팅 메시지를 사용자 지정하려면 이를 사용하십시오.이 콜백이 BubbleChatMessageProperties를 반환하면 해당 속성이 연결된 거품에 적용되어 BubbleChatConfiguration 속성을 재정의합니다. , 또는 가 부모 아래에 있으면, 해당 상대방이 정의된 에서도 재정의됩니다.
채팅 메시지가 플레이어에 의해 전송되는 경우, message.TextSource 는 해당 플레이어에 해당하고, adornee 는 nil 이 됩니다.
채팅 메시지가 를 통해 전송되면 가 제공되고 는 가 됩니다.
클라이언트에서 메시지를 보낼 때 바인딩되면 이 콜백은 메시지가 처음 로컬에서 전송되고 수신될 때와 클라이언트가 서버에서 필터링된 메시지의 결과를 받을 때 두 번 실행됩니다.
매개 변수
받는 TextChatMessage .
거품 채팅 메시지가 연결된 부분 또는 캐릭터.
반환
BubbleChatMessageProperties가 반환되면 해당 속성이 BubbleChatConfiguration 속성을 재정의합니다.
OnChatWindowAdded
채팅 창에 새 메시지가 표시될 때 호출됩니다. 클라이언트에서만 구현할 수 있습니다.
채팅 창에 나타나는 개별 메시지를 사용자 지정하려면 이를 사용하십시오.이 콜백이 ChatWindowMessageProperties를 반환하면 해당 속성이 연결된 메시지에 적용되어 ChatWindowConfiguration 속성을 재정의합니다. 에 부모로 지정된 가 있으면 에 정의된 속성 도 재정의됩니다.
클라이언트에서 메시지를 보낼 때 바인딩되면 이 콜백은 메시지가 처음 로컬에서 전송되고 수신될 때와 클라이언트가 서버에서 필터링된 메시지의 결과를 받을 때 두 번 실행됩니다.
매개 변수
받는 TextChatMessage .
반환
ChatWindowMessageProperties가 반환되면 해당 속성이 ChatWindowConfiguration 속성을 재정의합니다.
OnIncomingMessage
TextChatService 가 들어오는 메시지를 받을 때 호출됩니다. 클라이언트에서만 구현할 수 있습니다.
이것을 사용하여 TextChatMessages를 장식하십시오.이 콜백이 TextChatMessageProperties를 반환하면 해당 속성이 TextChatMessage 매개 변수와 병합되어 새로운 TextChatMessage를 생성합니다.
클라이언트에서 메시지를 보낼 때 바인딩되면 이 콜백은 메시지가 처음 로컬에서 전송되고 받을 때와 클라이언트가 서버에서 필터링된 메시지의 결과를 받을 때 두 번 실행됩니다.
이 콜백은 모든 콜백 전에 실행됩니다.
이는 소스 코드에서 한 번만 정의되어야 합니다. 여러 바인딩은 결정적이지 않은 방식으로 서로 재정의합니다.
매개 변수
받는 TextChatMessage .
반환
TextChatMessageProperties가 반환되면 해당 속성이 TextChatMessage 매개 변수와 병합되어 해당 속성을 가진 새로운 TextChatMessage가 생성됩니다. 그렇지 않으면 nil가 반환되면 TextChatMessage가 변경되지 않습니다.