猫史档案馆


对话框制作教程

用户:肆秋肆秋查看:7 回复:19 评论:7 创建时间:2021-11-04T03:15:22


当你做游戏时,你有没有体验过这样的事情?

center_image

当你做了个很好的游戏,魔王索伦即将登上王座奴役世界,试图打倒魔王的勇者被迫在魔王的威压下卑躬屈膝时,玩家!这个救世主出现了!他带着圣光走来了!多么激动人心的画面啊!失败的勇者们忍不住发出欢呼!

center_image

Oh! my! god!这他喵是神么玩意儿?看看这白色的对话框,这蓝色的名字,还有左边那个人物缩影,一股廉价感扑面而来!我纵横游戏界那么多年就没见过那么逊的对话框!这种廉价感爆棚的玩意简直是玷污了你如同钻石版闪耀而完美的作品!

(此时一只美术喵擦了擦汗,啥都不敢说。)

是可忍,熟不可忍?文字印章只有一种字体我忍了,云变量只能建四个我忍了,这个忍不了!

不过人家技术喵似乎也挺忙咱骂归骂还是别催的太紧,咱先把《自定义对话框》这个项目钉在这个贴子上,等啥时候技术喵有空了做一下,咱现在先靠自己。

首先,自己画或者找网上的对话框(网上找的记得加个“如有侵权立刻删”之类的标识),我这是示例就不找什么特别精美的了。center_image

嗯,其实技术喵的抠图功能还是挺不错的,虽然仔细看还有毛边,但值得肯定()

咳,回到正题,想要制作一个对话框,我们需要什么?

首先,为了达到像普通对话框那样简单快捷只用一个积木,我们需要用到函数。center_image

那么,要怎么定义这个函数呢?

显示字体有三种方法,图片,变量,和文字印章。

图片首先不考虑,如果想要达成的话我们得给每个字都做一张图排个序号,这样才能做到,假如常用汉字有三千个,你就要做三千张图……每个字还要有代码,算是一个字两行代码,也就是六千行积木……据我所知作品里面用的是猫站官方的云空间,而云空间是由服务器提供的,服务器是要钱的……所以你做那么大体积的玩意烧官方的钱只为做一个对话框的话,官方第一个不同意啊。

第二种方法变量,变量……变量主要也是体积大,做起来麻烦的问题,因为一个好的对话框里的字不是哗啦一下全显示出来的,而是一个一个字蹦出来的,我给你演示一下变量想做到这样的效果得怎么做。

center_image

center_image

虽然效果达到了……但你说烦不烦嘛,有这耐心和时间做什么不好嘛。

变量还有几种方法,但目前我想到的中这种最简单,反正它已经被排除了我们在这里不过多赘述。

正片开始。

其实大家应该都猜到了,最后上的总是赢家,有揣摩过这方面的人一想就知道,再加上前段时间传说之下的复刻活动中官方已经列出了代码,这个是没什么悬念在的。

好啦,我们现在来讲讲吧。

由于官方讲过,我不会太详细的讲怎么做到让文字一个一个的显示,只是大概讲讲。

由于文字印章会纹印在角色的中心点上,所以我们要新建一个角色,专门印文字。

不过要注意,文字印章是画笔,画笔图层的特点是除了背景,其他所有东西都在它上面……所以它会被除了背景以外任何东西遮住。

想要解决也不难,有一个“将角色移到画笔图层下方”的积木,但是这个积木不是把画笔图层往上调,而是把角色的图层往下调,也就是说如果你的对话框是遮住了什么其他角色的话,把对话框移到画笔图层下方本来对话框遮住的地方就会跑到对话框下面……给你们看个我正在做的游戏:center_image

center_image……就,就很离谱。

想要解决,就要……

center_image

……所以这做对话框真的是逆天而行知道吗,最简单的方法都要那么多代码。

好了,吐槽完毕,放个做文字一个个显示效果的代码图。center_image

嗯……好像没什么好讲的,大家应该都懂,不过可能有那种很萌的萌新来看我的帖子,所以我还是讲一下吧。

嗯,我默认大家都懂函数,所以难点就在运算(粉色)的那两个代码上,文本的长度就比如文本是ABC那么文本的长度就是三,有几个字符就有多长。

至于文本的第文本到第文本个字符串倒是比较难理解,甚至我也不理解为什么有文本到第文本个字符串这样的代码,举个例子。

参数文本是ABC,变量文本是1,这段代码的意思就是ABC的第1到第1个字符串。

???

第一到第一个字符串是多少?是A啊。

那不说第一到第一个字符串,第一个字符串是多少?还是A啊。

所以,明明说第X个字符串就能解决的事,为什么要说成第X到第X个字符串呢?

接触到这段代码的时候我认为其中定有深意却百思不得其解,但现在想想总觉得只是某只蠢猫喝了假酒……

咳,言归正传,我们继续写教程。

由于现在这个函数只能在背景上打字,所以我们得加个代码。

center_image

如果你的对话框下面还有什么其他角色,记得也让他到画笔图层下方。

而对话框这时还远远没完成,比如,我们得先确定是谁在说话,才能决定ta说了什么。

所以,请先移动到名字框那边写好名字。

center_image

像这样,看得懂吧?

然后捏,这边我忘加了一个功能,就是到了边缘会跳到下一行的那个功能,我加一下。

center_image

至此,关于对话框的文字效果已经完全做好了,接下来,就是让它被点击后会到下一页的效果。

想要做到这点,需要用到一个不怎么常用的代码(反正我不怎么用)

center_image

本来我习惯用重复执行+如果,大多时候可以代替保持等待,只是如果在这边也用重复执行+如果,因为重复执行是会永远执行下去的,代码的执行就会永远卡在这个函数上,重复执行直到()也不好用,这个问题的最简式还是保持等待。

我添加的代码是因为对话框平时都是隐藏的,所以在函数开始执行时让对话框显示。

而把如果鼠标点击的积木放在重复执行打字的下面,可以起到一个只有打完字,对话框被点击才会使对话框消失,这样可以一定程度上的避免有人手滑点鼠标导致没看完剧情剧情就跳了的事情。

好啦,这篇深夜教程不知道会不会沉,看见的人不妨顶一顶,让更多人摆脱廉价的对话框(结束前@一下美术喵)。


回复

上一页1 页 / 共 1下一页
肆秋肆秋

ddddd

点赞0


评论


Summer橘子喵Summer橘子喵

加油

点赞0


评论


NB

 

点赞0


评论


AAA专业睡觉王总AAA专业睡觉王总

顶顶

点赞0


评论


MC东方墨染殇雪就是秀MC东方墨染殇雪就是秀

ddd

点赞0


评论


xwstsrhxwstsrh

那段“Oh! my! god!这他喵是神么玩意儿?看看这白色的对话框,这蓝色的名字,还有左边那个人物缩影,一股廉价感扑面而来!我纵横游戏界那么多年就没见过那么逊的对话框!这种廉价感爆棚的玩意简直是玷污了你如同钻石版闪耀而完美的作品!”笑喵了

点赞0


评论


CODEZPCCODEZPC

NB

 

点赞0


评论


肆秋肆秋

咳,大家,上图代码有个缺陷,就是只能在专门印文字印章的角色中使用。 现在我要补全这个缺陷。 但是我还没想到这么补全这个缺陷。 所以我会一边写,一边整理思路。 让我们开始吧。 告诉()执行可以使这个函数不只能在印文字印章的角色(我以后会简称这个角色叫打字角色)中使用,但是“告诉()执行”里面的代码是由()中的角色执行的,不算函数模块,不能放参数。 所以我新建了两个变量作为中转站,你们应该看得懂。 本来似乎是没有问题的,但我运行的时候出现了个问题。 那就是如果我这样:两个函数放一起,它就会跳过前面的函数,只执行最后一个函数。 而初代只能在打字角色中使用的函数就不会这样的问题。 嗯,写教程有助于思考,我瞬间就意识到问题所在了,我之前可是想了半天没结果。 问题就在于“告诉()执行”跟广播一样,告诉执行就是广播的简化版,所以我的代码就是这样运行的。 假设现在有两个角色,一个是在使用函数的,一个是打字角色。 使用函数角色(简称函数):告诉()执行移到画笔下方,设置两个变量分别为两个参数,告诉打字角色执行一些操作,告诉完成,执行下一步。 它不会等打字角色执行完操作再做下一步,它只负责告诉,告诉完后它会立刻去执行自己的代码。 这就非常尴尬了。 不过知道了问题所在,剩下的就简单多了,这个问题其实不难,我以前也遇到过,就是没想起来告诉()执行有这么个喵属性。 问题解决,它执行第一个函数了。 现在放代码。 原理非常简单,就是使代码告诉成功后保持等待,等打字角色完成代码后设置变量,使它不再保持等待而执行下一个代码。 ……不过,我忘加了,在保持等待知道打字完成=1下面还要加一个设置打字完成的值为0的代码,这样的话就无论多少个函数堆在一起都可以成功执行了。 好啦,问题解决!我发现遇到较难的问题的时候写写教喵的很能助你思考,写教程不一定要问题解决了才写,可以一边想问题一边写,两边互惠互利互帮互助,问题就迎刃而解啦! 当然,要是你用了这个方法到最后还没解决问题不要把你的贴子标注为教程贴,标注为求助贴吧哈哈哈。

点赞0


评论


肆秋肆秋

……这个评论的作用是改善函数只能在印文字印章角色中使用的缺陷的,话不多说,开始。center_image

center_image

点赞0


评论


未命名用户7764821未命名用户7764821

喵d

点赞0


评论


肆秋肆秋

DDDDDD!

点赞0


评论


郑小猪郑小猪

ddd

点赞0


评论


肆秋肆秋

喵喵喵d

点赞0


评论


肆秋肆秋

顶顶顶顶顶

点赞0


评论


一缕余晖一缕余晖

你提出的方案不咋地,但不得不说你值得做我们语文课代表

点赞2


评论


调皮的乔治调皮的乔治

官方:加精!

点赞0


评论


肆秋肆秋

ddddd

点赞0


评论


肆秋肆秋

每天一顶,顶出强大()

点赞0


评论


肆秋肆秋

七天了,是时候挖坟了()

点赞0


评论