这个系列教程一共有 3 个章节,这是其中的第二篇,推荐完整阅读全部三篇的内容哦。
第一篇 - 匹配系统
第三篇 - 同步系统
开始之前,你需要……
在正式开始学习之前,你需要做好一些准备~
这篇教程中,我们主要会用到两个扩展模块,分别是 Gandi Simple MMO v1.0.3 和 Gandi 数据助手 v1.1。
数据助手中,我们使用到的主要是处理 JSON 的语句。
如果你还不知道怎么使用 JSON,也不用担心哦,教程中的用法并不会很复杂。不过还是建议你去找教程学习一下 JSON,以后一定会用的上哦~
用户界面与全局积木
在案例作品中,消息系统主要和匹配房间中的聊天板有关。
和匹配系统一样,我已经把实现消息系统的算法做成了一系列的全局积木,放在消息模块中了,也附上了详细的注释,你可以直接将这个角色,加载到自己的程序中,使用其中的全局积木哦。
记得去案例作品中下载哦。
这篇教程会完全基于匹配模块中的全局积木来讲解,你可以不用理解这些全局积木是如何编写的。当然,如果你感兴趣的话,也可以读读代码。
案例作品
在案例作品中,消息系统主要用来制作匹配房间中的聊天板。
聊天板中主要实现了 3 个功能:
- 房间中的玩家发送聊天信息;
- 显示系统消息提示,例如玩家进入或离开房间的消息;
- 程序自动给帮玩家发送一些特殊的消息,例如准备开始游戏的倒计时消息。
接下来,一起来看看这些功能是如何实现的吧~
基础功能:将一段长文字分行显示
通常情况下,我们会在一个固定区域中显示消息内容,比如说案例作品中的聊天板:
不过,玩家在发送消息时,并不会按照显示长度来发消息,如果一段文字过长,就会超出显示范围。因此我们需要处理一下玩家发的消息内容,切割成合适的长度。
你可以使用消息模块中的这个语句来设计单行文字的渲染宽度。
你可以在输入框中填写一个数字,你可以根据自己程序界面中的显示范围来设置数值。如果不设置,默认的长度是 999。
使用这个语句设置好长度后,消息模块中的其他语句都会自动按照设置好的长度分割消息内容。
在案例作品中,我们将单行文字的渲染宽度设置成了 130。
功能一:房间中的玩家发送聊天信息
使用下面的全局积木可以唤起输入框,并且在输入完成后发送一条消息到聊天板中。
所有的消息内容会在处理后,被储存在消息列表中。
列表中的每一条内容都是一个 JSON,格式是这样的:
{
"type":"聊天",
"content":"准备好了",
"color":"#00ff34"
}
其中的属性对应的内容是:
属性 | 描述 |
type | 消息的类型 |
content | 消息的内容,已经按照设置的渲染宽度切割好了 |
color | 消息的显示颜色,是颜色对应的 HEX 码 |
利用这条数据,你可以使用艺术字扩展模块,显示出正确的效果:
使用发送聊天内容的全局积木,会将发送者的个人信息和聊天内容分开加入消息列表,将个人信息设置为灰色,将消息设置为黑色,用艺术字显示出来的效果是这样的:
在案例作品中,点击聊天板中的发送按钮,会广播一条消息,所以实现发送消息的代码是这样的:
功能二:显示系统消息提示
在案例程序中,会有三种提示消息,玩家自己进入房间、其他玩家进入房间和其他玩家离开房间。
实现这三种系统消息提示的代码都已经内置在消息模块中了,你不需要做任何操作。
如果你还想添加其他的系统消息,可以参考这段代码:
这里用到的全局积木可以给消息列表中添加一条数据,以上这段代码添加的数据是这样的:
{
"type":"通知",
"content":"已进入房间",
"color":"#ff9900"
}
如果内容超过了渲染宽度,同样会被自动切割哦。
功能三:发送特殊消息
除了发送普通消息,你还可以在程序中,让玩家发送一些颜色不同的特殊消息。
比如在案例作品中的玩家准备消息,就是用绿色显示的。
想要实现这样的效果可以使用全局积木:
属性 | 描述 |
消息内容 | 消息的内容,会自动按照设置的渲染宽度切割 |
消息类型 | 消息的类型,可以任意使用 |
消息颜色 | 消息的显示颜色,是颜色对应的 HEX 码 |
你可以在造型编辑器的取色工具中获得颜色的 Hex 码。
注意事项
这篇教程中,主要介绍了如何利用消息模块来发送消息,并且把所有消息存在消息列表中,需要你自己编写显示出来的代码哦。
在案例作品中,你可以在用户界面中看看我是怎么做的。如果需要教程的话,可以在创造者学院文章的评论区里告诉我。
对于教程或者全局积木有任何问题,也可以在评论区告诉我。
创作者学院文章: