Language:
Page Info
Skill Level:
Engine Version:
Share

5 - 电视机蓝图功能及测试

在这一步,我们将继续对电视机蓝图进行设置,以提供使玩家能够走近电视机将其打开或关闭以及暂停然后开始播放的功能。目标是在这一步结束时,关卡中具有多个分别显示不同内容的电视机。为了实现这一步的目标,我们将在关卡中放置多个电视机并使用 细节(Details) 面板来更改要在每个电视机上显示的内容。

步骤

  1. TV_Blueprint 中,单击主工具栏下的 事件图(Event Graph) 选项卡。

    Event_01.png

  2. 组件(Components) 窗口中,选择 箱体(Box)。在 细节(Details) 面板中,添加 组件开始重叠(On Component Begin Overlap)组件结束重叠(On Component End Overlap) 事件。

    Event_02.png

    这将生成可以用来使玩家按下按钮并影响电视机蓝图的事件

  3. 在图中,右键单击并添加 获取玩家控制器(Get Player Controller)启用输入(Enable Input)禁用输入(Disable Input) 节点,并如下图中所示进行连接。

    Event_03.png

    当玩家进入箱体的碰撞体积时,他们能够使用键盘输入影响该蓝图。离开体积后,他们就无法影响该蓝图了。

  4. 在图中右键单击并添加一个 OP 键盘事件和两个 触发器(Flip Flop) 节点。如下图中所示进行连接。

    Event_04.png

    我们将对它进行设置,使得当玩家按 O 键时可以打开或关闭电视机,当玩家按 P 键时可以暂停或继续播放。

  5. 我的蓝图(My Blueprint) 面板中,创建名为 MediaPlayerForVideo 的变量。

  6. 在新变量的 细节(Details) 面板中,将 变量类型(Variable Type) 设置为 媒体播放器对象引用(Media Player Object Reference)可编辑实例(Instance Editable),并将 默认值(Default Value) 设置为 MediaPlayer_01

    Event_05.png

    要在运行时播放视频内容,我们需要指示媒体播放器资源打开媒体源。但是,我们首先需要创建对要与之交谈的媒体播放器的引用,然后才能实现该设置,通过将新变量设置为 可编辑实例(Instance Editable),我们可以对我们要与哪个媒体播放器交谈进行定义(这样我们就能够在关卡中设置多个播放器和内容)。

  7. 按住 Ctrl 键并将 MediaPlayerForVideo 变量拖到图中,然后从它拖出引线并使用 打开源(Open Source) 函数调用。

    Event_06.png

  8. 打开源(Open Source) 节点上,将 媒体源(Media Source) 设置为 Video_01,然后右键单击它并选择 提升为变量(Promote to Variable)。将该变量命名为 SourceToOpen

    Event_07.png

    在此处,我们为“媒体源(Media Source)”创建了变量,以便能够选择不同的媒体源来播放。

    如果设置属性的值并选择 提升为变量(Promote to Variable),将自动创建变量并将设置的值指定为默认值。

  9. SourceToOpen 变量上,启用 可编辑实例(Instance Editable) 选项。

    Event_08.png

    这使我们能够为放置在关卡中的每个电视机实例设置要打开的源。

  10. 在图中,从 用于视频的媒体播放器(Media Player For Video) 节点拖出引线并使用 关闭(Close) 函数调用,然后将每个函数调用与 FlipFlop 节点相连接。

    Event_09.png

    当玩家按 O 键时,它们将打开指定的媒体源(打开电视机)。当玩家再次按 O 键时,将关闭媒体播放器(关闭电视机)。

    我们已将媒体播放器设置为 打开时播放(Play on Open)。因此,当我们打开源时,播放器将自动开始播放源内容。

  11. 对于 P 键盘事件,添加 MediaPlayerForVideo 变量,然后从它拖出引线并调用 暂停(Pause)播放(Play) 函数,然后如下图所示进行连接。

    Event_10.png

    与我们打开媒体源的方式相似,当玩家按 P 键时,它们将暂停媒体播放器,当玩家再次按 P 键时,将继续播放。

  12. 关闭 TV_Blueprint,然后在 内容浏览器 中将 TV_Blueprint 拖到关卡中,并使用变换工具按照需要调节它的大小。

    Event_11.png

    细节(Details) 面板中,你将看到我们可以更改的电视机的所有已公开属性。

    Event_12.png

    这些属性使我们能够更改与电视机关联的视频/音频,但是我们还要先创建另外一个媒体源。

  13. 内容浏览器 中的 Content/Movies 文件夹中右键单击,然后在 媒体(Media) 下,选择 流媒体源(Stream Media Source) 并将它命名为 Video_2

    Event_13.png

    除本地媒体文件以外,媒体框架还通过 流媒体源(Stream Media Source) 资源类型支持来自互联网的流式视频(受支持的 格式)。

  14. 打开 Video_2 资源,然后右键单击该样本视频流 并选择 复制链接地址,然后将链接粘贴到 流送URL(Stream URL) 字段中。

    Event_14.png

    截至版本4.18,尚不支持YouTube。请参阅媒体框架技术参考 页面来了解受支持的格式。

  15. 内容浏览器 中的 Content/Movies 文件夹中,右键单击并再创建一个 媒体播放器(Media Player) 资源。

    Event_15.png

    我们可以使用该媒体播放器在关卡中的另一个电视机上播放内容。

  16. 创建媒体播放器(Create Media Player) 窗口中,确保启用 视频输出媒体纹理资源(Video Output Media Texture Asset),然后将该媒体播放器命名为 MediaPlayer_02

    Event_16.png

    这将自动创建媒体纹理和媒体播放器资源并为它们命名。

  17. 在关卡中,创建 TV_Blueprint 的副本。在 细节(Details) 面板中,更改以下属性。

    Event_17.png

    请按以下所示进行设置:

    • 用于电视机的纹理(Texture for TV) - MediaPlayer_02_Video

    • 用于声音的媒体播放器(Media Player for Sound) - MediaPlayer_02

    • 用于视频的媒体播放器(Media Player For Video) - MediaPlayer_02

    • 要打开的源(Source to Open) - Video_2

    在此处,我们将要打开的媒体播放器、媒体纹理、媒体声音和媒体源更改为新创建的媒体框架内容和流式视频。

  18. 在主工具栏中单击 运行(Play) 按钮以在关卡中运行。

最终结果

当走近其中一个电视机并按 O 键时,将打开指定的媒体源(将其打开)。当再次按 O 键时,将关闭媒体源(将其关闭)。

也可以在每个电视机上按 P 键来暂停视频播放或继续播放。

我们完成了设置,通过现在的电视机蓝图,我们可以更改关卡中每个实例的内容以及关联的媒体框架资源。如果关卡中具有多个电视机,而且需要让每个电视机上具有不同的内容,并能相互独立地与每个电视机交互,那么这些设置非常有用。我们也学习了如何生成具有媒体纹理资源的材质并使用蓝图函数调用来控制媒体播放器和媒体源资源的播放和打开。

在下一步中,我们将提供一些与媒体框架相关的额外资源以及你可以自己动手尝试的其他元素。