0%

UE4学习笔记—三维空间跑马灯字幕效果实现(纯蓝图)

初学UE4,笔者做了个练枪训练场的demo(Github地址)。在项目中,玩家完成目标后需要进行提示,而简单的静态文本提示过于死板,遂本人想到了实现三维空间中的跑马灯效果文本,其炫目的效果能带给玩家较大的满足感(并没有)。

经过一番面向搜索引擎编程,发现网上罕有现成的思路,大多都是在二维HUD中实现的效果。那就自己造轮子呗。

基本思路

整个逻辑其实很简单,就两个关键点:

  1. 实现文本超出一定范围后被“截断的效果”
  2. 实现文本的产生、移动和销毁。

实现

文本材质

首先将默认文本材质拷贝一份。

将蓝图如下修改:

基本逻辑就是外部设定一个包围盒,文本超出包围盒的部分设为透明。

BP_ScrollText Actor类

Component

新建Actor蓝图类,首先添加Box和Arrow两个Component。此处的Box指定文本滚动的范围,Arrow指定文本滚动的方向。

为了不影响场景的其他部分,新建了一个碰撞通道ScrollTextChannel。Box按如下进行碰撞设置。

Variables

创建这么几个变量。

其中TextObjects的类型为Text Render Actor引用数组,Text Material类型为Dynamic Material Instance,TextType类型为Text Render Actor的类型引用,BaseColor的类型为Color。

Events

初始时更新材质。

逐帧检查当前有效性,并产生、移动和销毁文本。

提供给外部设置文本的接口。

Functions

下面就是一些具体的实现逻辑。

Text Render Actor子类

对于上述的ScrollText蓝图类,我们需要创建自己的Text Render Actor子类,并赋给ScrollText,才能工作。

我们首先创建对应类型,并添加一个Box

修改文本,并且设置Box为容纳文本的合适大小。

这里的Box的Collision也要一样设置。

使用与效果

将ScrollText类实例化到场景,如下设置默认变量。

为了实现双排滚动的效果,这里实例化了两个ScrollText类,并且将Arrow调整为不同方向。

最终效果: