游戏框架
CouriourC Lv4

玩家设备(电脑、游戏机等)-开始游戏

游戏实例-进入游戏关卡(默认地图)

这是整个游戏的进程,也就是游戏运行的上下文,一般做一些初始化的功能, 在以下可以选择关联游戏实例。

基本功能

整个游戏的初始,整个游戏销毁的时候,整个游戏出现错误的时候,

进入关卡

加载地图

找到游戏模式 -加载游戏信息

游戏模式一般定义游戏规则
若没有设置游戏模式,会进入默认游戏模式

游戏模式设置

每次打开新的地图,会重新加载对应的游戏模式。在联机的情况下,只有主机(服务器才有游戏模式),其他玩家可以从游戏模式中获取其他的游戏状态,用于复现状态

初始化玩家控制器

玩家设备都是与玩家控制器关联的
在游戏模式中设置玩家控制器相关的信息

蓝图基础

通过使用蓝图,设计人员几乎可以创作任何游戏元素的原型,以及实现或修改这些元素。

  • Games(游戏)创建游戏规则,调整游戏条件等。
  • Players (玩家)使用不同的网格物体、材质或角色自定义来创建变种
  • Cameras (相机)创建新相机视角的原型或者在游戏运行过程中动态地改变相机。
  • Input(输入)修改玩家操作,或允许玩家向道具传入输入
  • Items (道具)武器、法术、掉落物、触发器等。
  • Environments (环境)创建随机的装置或者程序化地生成道具。

蓝图类型

关卡蓝图(Level Blueprint)
关卡蓝图是一种特殊类型的蓝图,是作用于整个关卡的全局事件图表。关卡事件或者关卡中的 Actor 的特定实例,用于激活以函数调用或者流程控制操作的形式呈现的动作序列。

类蓝图 (Blueprint Class)
类蓝图是一种允许内容创建者轻松地基于现有游戏性类添加功能的资源。它是在编辑器中可视化地创建的,不需要书写代码,会被作为类保存在包中。

仅包含数据的蓝图(Data-Only Blueprint)

仅包含数据的蓝图是指仅包含代码(以节点图表的形式)、变量及从父类继承的组件的类的蓝图。仅包含数据的蓝图允许你调整及修改继承的属性,但是不能添加新元素。从本质上讲,这些蓝图是原型的替代物,设计人员可以使用它们来调整属性或者设置具有变种的项目。可以通过添加代码、变量或者组件来将它转换成完整的类蓝图。

蓝图接口(Blueprint Interface)

蓝图接口是一个函数或多个函数的集合,它相当于C++中的一个纯虚基类,仅有函数名称,没有实现,该接口可以添加到其它蓝图中。使用具有该接口的蓝图,都一定会具备这些函数。在每个添加了接口的蓝图中,都可以提供接口的这些函数功能。从本质上讲这各一般编程中的接口概念一样,允许通过一个公共接口来共享及访问多种不同类型的对象。简单地讲,蓝图接口允许不同的类蓝图间彼此共享及发送数据。

蓝图接口的创建和其他类似,可以通过编辑器中的内容创建器进行创建,但它们有一些局限性,因为它们不能

  • 添加新变量
  • 编辑图表
  • 添加组件

蓝图宏库(Blueprint Macro Library)

蓝图宏库是一个存放了一组宏的容器,或者是可以像节点那样放置到其他蓝图中的自包含图表。这些蓝图宏库非常节约时间,因为它们存放了常用的节点序列、及针对执行和数据变换的输入和输出。

宏会在所有引用它们的图表间共享,但是如果它们在编译过程中是合并的节点,那么它们会自动地展开为图表。这意味着蓝图宏库不需要进行编译,但是对宏所做的修改,仅当重新编译了包含引用该图表的蓝图时,这些修改才会反应在图表中。

蓝图通信

UE4学习心得:蓝图间信息通信的几种方法 - 白露期霜 - 博客园

蓝图通信可以理解为不同蓝图间的信息传递和共享

  • 直接蓝图
    直接引用节点,选中场景中的 Actor 或者蓝图,然后进行引用(或者使用变量,效果一样),只有需要通信的类都在关卡中有实例时才可以使用,注意是实例对象,而非类

  • 首先在 Editor 中创建 2 个 Actor 蓝图类,分别命名为 TargetActor 和 ControllerActor,双击打开 TargetActor 编辑器,将组件窗口中的 DefaultSceneRoot 替换成 Cube,并设置成 Movable,编译后保存退出,然后打开 ControllerActor,将组件窗口中的 DefaultSceneRoot 替换成 Sphere,新建变量 Actor,类型为 Actor 引用,将其设为公共变量。返回关卡编辑器中,将 2 个 Actor 拖放进场景中,点击 ControllerActor,在 Details 面板中可以看到 Default 选项将 Actor 设为 TargetActor 或者点击右侧的针状标记,然后选中场景中的 TargetActor,返回 ControllerActor 编辑器中,添加一个 Event Tick 事件,运行关卡后可以看到 TargetActor 在不断地上升,说明在 ControllerActor 蓝图类中的逻辑成功地运行了,两个蓝图类之间完成了信息交互。

  • 蓝图投射
    通过类的投掷(Cast)结合GetAllActorOfClass这个蓝图节点,就可以完成类似于直接蓝图的效果进行通讯。

  • 事件调度器
    创建事件节点,调用事件,完成绑定以及调用

  • 蓝图接口
    这种实现方式相对有些复杂,但是某种程度上最不受限制

 评论