【游戏客户端】实现剧情对话效果

【游戏客户端】实现剧情对话效果

      之前的博客中,我和大家分享了如何做:

  • 商业化的充值活动 :【商业化充值活动博客】
  • 抽卡系统:【抽奖,抽卡系统博客】
  • 装备系统:【装备系统博客】
  • 红点系统:【红点系统博客】
  • 商店&拍卖系统:【商店&拍卖系统】
  • UI环绕特效:【UI环绕特效】
  • 实现刮刮乐效果:【实现刮刮乐效果】
  • 实现卡牌翻转效果:【实现卡牌反转效果】

      今天和大家分享一下如何制作剧情对话效果,游戏中常见的对话方式有两种。

(一)常见的剧情对话

(1)第一种是直出型的:

      这样的实现起来比较快而且便捷,所有文案一下子就出现了

(2)第二种是渐出型的:

      这种实现方式就像我们码字一样,一个个蹦出来,虽然它效率和实现上没有第一种那么好。但是从沉浸感来说,无疑第二种更会让我们专注于文案内容。今天就讲讲第二种的实现

(二)渐出型的剧情对话实现方式

      这种效果看起来很牛掰,但是其实实现原理也很简单:

(1)分割字符串

      一般来说剧情的对话文案都是由策划配表,或者是自己在代码写死的。但是无论是哪一种,我们第一步要做的都是分割字符串,目的就是让文字“一个个”的出现

      至于如何分割,在Lua5.3之前我们可以选择string.byte来读取首字节的大小,然后根据UTF-8的编码规则,拿到这个“字”的字节长度,然后再去递归切割。之前我有文章记录这个过程

   【分割中英文字符串】

      在lua5.3之后我们可以

      来读取每个字符的unicode编码来直接判断长度从而进行分割

(2)设置计时器逐帧加上字符

      分割完之后剩下的事情就简单了,只需要设置一个schedule来逐帧把刚才读取到的文案做一个字符串拼接,然后setText进去就行了

(3)更炫酷的效果

      当我以为大功告成的时候,好家伙被我发现一个更炫酷的效果,这个“获得贵重品”居然还带滚出来的,这种做法的话应该就不能用一个文字的控件去实现了,而是应该在我们遍历分割字符串的时候,每分割出一个文案就生成一个文本控件

      全部生成完之后,用一个spwan把滚动RotateTo,和移动MoveTo给同时进行,然后不同的文案执行的时间不同(具体的时间通过控件的宽度和MoveTo的速度决定),就可以实现上面的效果了

好啦今天就到这里
点赞,关注!!!

你可能感兴趣的:(cocos2dx实战项目,cocos2dx原理,剧情对话,客户端,游戏)