创造你的世界
聊天
自定义发送和接收聊天消息
11min
您可以通过导入 ZEPETO.Chat 包来自定义您发送和接收的聊天消息。
❗️ 注意
- 此功能在实现了多人元素的世界中可用。
👍 参考要点
- 您可以在编辑器环境中发送/接收聊天。
- 只有通过处理程序创建的用户聊天消息可以发送/接收(快速聊天、系统消息无法接收)
TypeScript
1class ZepetoChat extends System.Object {
2 public static get Instance(): ZepetoChatImplementation;
3 public static get OnReceivedMessage(): UnityEngine_Events.UnityEvent$1<IMessage>;
4 public constructor();
5 public static Send($message: string): void;
6}
- ZepetoChat。您可以使用 Send() 将特定消息发送到聊天窗口。
- 您可以使用 ZepetoChat.OnReceivedMessage.AddListener() 来确定接收哪个事件的消息。
按下按钮1和2以发送指定消息。 在输入框中创建自定义消息以发送该消息。
示例设置
TypeScript
1import { ZepetoScriptBehaviour } from 'ZEPETO.Script';
2import { Button, InputField, Text } from 'UnityEngine.UI';
3import { ZepetoChat, MessageType, UserMessage } from 'ZEPETO.Chat';
4import { Color } from 'UnityEngine';
5
6
7export default class CustomChat extends ZepetoScriptBehaviour {
8
9 public custom1ChatBtn: Button;
10 public custom2ChatBtn: Button;
11 public sendChatBtn: Button;
12 public resultText: Text;
13 public inputChatbox: InputField;
14
15 Start() {
16 // 当按钮被点击时
17 this.custom1ChatBtn.onClick.AddListener(() => {
18 // 更改文本颜色
19 this.resultText.color = Color.magenta;
20 // 发送消息
21 ZepetoChat.Send("1");
22 });
23 this.custom2ChatBtn.onClick.AddListener(() => {
24 this.resultText.color = Color.blue;
25 ZepetoChat.Send("2");
26 });
27 this.sendChatBtn.onClick.AddListener(() => {
28 this.resultText.color = Color.black;
29 const inputMsg = this.inputChatbox.text;
30 ZepetoChat.Send(inputMsg);
31 });
32
33 // 接收消息
34 ZepetoChat.OnReceivedMessage.AddListener(msg => {
35 const userMsg = msg as UserMessage;
36 this.resultText.text = `[用户 - ${userMsg.userName}] - ${userMsg.message}`;
37 });
38 }
39}
示例执行结果
- 在一个实现了多人元素的世界中可用的功能。
- 您可以在移动测试中检查。
- 声明
TypeScript
1public static SetActiveChatUI($value: boolean): void;
- 示例代码
- 按下特定按钮以切换聊天按钮的启用/禁用状态
TypeScript
1import { ZepetoScriptBehaviour } from 'ZEPETO.Script';
2import { Button } from 'UnityEngine.UI';
3import { ZepetoChat, MessageType, UserMessage } from 'ZEPETO.Chat';
4
5export default class ChatController extends ZepetoScriptBehaviour {
6
7 public chatUIBtn: Button;
8 private isChatUIActive : boolean = true;
9
10 Start() {
11 // 当按钮被点击时
12 this.chatUIBtn.onClick.AddListener(() => {
13 // 发送消息
14 if (this.isChatUIActive) {
15 ZepetoChat.SetActiveChatUI(false);
16 this.isChatUIActive = false;
17 console.log("聊天 UI 已禁用");
18 }
19 else {
20 ZepetoChat.SetActiveChatUI(true);
21 this.isChatUIActive = true;
22 console.log("聊天 UI 已启用");
23 }
24 });
25 }
26}
- 在一个实现了多人元素的世界中可用的功能。
- 您可以在移动测试中检查。
- 声明
TypeScript
1public isFiltered: boolean;
- 示例代码
- 确定接收到的聊天消息是否为过滤消息,并在屏幕上打印出来。
TypeScript
1import { ZepetoScriptBehaviour } from 'ZEPETO.Script';
2import { Text } from 'UnityEngine.UI';
3import { ZepetoChat, MessageType, UserMessage } from 'ZEPETO.Chat';
4
5export default class ChatController extends ZepetoScriptBehaviour {
6
7 public filterResultText: Text;
8
9 Start() {
10 // 接收消息
11 ZepetoChat.OnReceivedMessage.AddListener(msg => {
12 const userMsg = msg as UserMessage;
13 if (userMsg.isFiltered) {
14 this.filterResultText.text = `此消息已被过滤 : ${userMsg.message}`;
15 } else {
16 this.filterResultText.text = `此消息未被过滤 : ${userMsg.message}`;
17 }
18 });
19 }
20}