|
@@ -1,7 +1,7 @@
|
|
|
<!--
|
|
<!--
|
|
|
* @Author: lc
|
|
* @Author: lc
|
|
|
* @Date: 2021-09-03 21:41:18
|
|
* @Date: 2021-09-03 21:41:18
|
|
|
- * @LastEditTime: 2021-09-18 20:01:45
|
|
|
|
|
|
|
+ * @LastEditTime: 2021-09-20 14:27:20
|
|
|
* @LastEditors: Please set LastEditors
|
|
* @LastEditors: Please set LastEditors
|
|
|
* @Description: 虚幻学习
|
|
* @Description: 虚幻学习
|
|
|
* @FilePath: D:\Projects\markdown\虚幻.md
|
|
* @FilePath: D:\Projects\markdown\虚幻.md
|
|
@@ -1076,8 +1076,185 @@ K-DOP是包围体的一种,是K离散导向多面体(K discrete oriented polyt
|
|
|
|
|
|
|
|

|
|

|
|
|
|
|
|
|
|
|
|
+[GamePlay框架官方讲解](https://www.bilibili.com/video/BV1ED4y1D7Sf)
|
|
|
|
|
+
|
|
|
在游戏运行中,即使我们没有向关卡(场景)中添加一些东西,在运行的时候虚幻引擎也会自动添加一些东西在场景中。这些就是为了完成虚幻的一套GamePlay框架
|
|
在游戏运行中,即使我们没有向关卡(场景)中添加一些东西,在运行的时候虚幻引擎也会自动添加一些东西在场景中。这些就是为了完成虚幻的一套GamePlay框架
|
|
|
|
|
|
|
|
|
|
+- **UBoject**
|
|
|
|
|
+
|
|
|
|
|
+包括GC(垃圾回收)、MetaData、Relection(反射)、Ediable、Class Default Object
|
|
|
|
|
+
|
|
|
|
|
+----
|
|
|
|
|
+
|
|
|
|
|
+- **Actor**
|
|
|
|
|
+
|
|
|
|
|
+演员/个体
|
|
|
|
|
+
|
|
|
|
|
+1. 组成世界的单位个体
|
|
|
|
|
+2. 可互相嵌套
|
|
|
|
|
+3. 组件的容器
|
|
|
|
|
+4. Spawn & Tick
|
|
|
|
|
+5. 网络通信的通道
|
|
|
|
|
+6. 派生出各种不同职责的Actor
|
|
|
|
|
+
|
|
|
|
|
+> 不是所有的Actor都看得见,有些只是做逻辑处理并不做显示功能
|
|
|
|
|
+
|
|
|
|
|
+----
|
|
|
|
|
+
|
|
|
|
|
+- **Component**
|
|
|
|
|
+
|
|
|
|
|
+组件
|
|
|
|
|
+
|
|
|
|
|
+1. 组件是一种能力
|
|
|
|
|
+2. 为Actor提供能力
|
|
|
|
|
+3. 能力一般与业务逻辑无关
|
|
|
|
|
+4. 能力是跨游戏的
|
|
|
|
|
+
|
|
|
|
|
+----
|
|
|
|
|
+
|
|
|
|
|
+- **ALevelScriptActor**
|
|
|
|
|
+
|
|
|
|
|
+关卡蓝图
|
|
|
|
|
+
|
|
|
|
|
+1. 一个特殊的默认脚本Actor:ALevelScriptActor
|
|
|
|
|
+2. 正经项目-大部分情况都不适合
|
|
|
|
|
+3. 适合Demo,新手村
|
|
|
|
|
+4. 适合一些关卡本身的触发机械互动
|
|
|
|
|
+
|
|
|
|
|
+> 一些时候关卡蓝图甚至是空的,关卡蓝图一般做快速验证比较合适
|
|
|
|
|
+> 多逻辑状态可以分为多个Actor去写
|
|
|
|
|
+
|
|
|
|
|
+----
|
|
|
|
|
+
|
|
|
|
|
+- **APawn**
|
|
|
|
|
+
|
|
|
|
|
+1. 可配控制
|
|
|
|
|
+2. 逻辑足够复杂MVC
|
|
|
|
|
+3. 肉体功能
|
|
|
|
|
+4. 人形角色
|
|
|
|
|
+
|
|
|
|
|
+> 逻辑简单、静止不动等简单对象使用普通Actor
|
|
|
|
|
+> 建议将显示(View)、控制(Controller)和模型(Mode)分开处理
|
|
|
|
|
+
|
|
|
|
|
+----
|
|
|
|
|
+
|
|
|
|
|
+- **AController**
|
|
|
|
|
+
|
|
|
|
|
+1. 用来控制别的Actor的Actor
|
|
|
|
|
+2. 灵魂
|
|
|
|
|
+
|
|
|
|
|
+- **APlayerState**
|
|
|
|
|
+
|
|
|
|
|
+1. 肉体状态
|
|
|
|
|
+2. 抽离开是为了联机复制
|
|
|
|
|
+
|
|
|
|
|
+----
|
|
|
|
|
+
|
|
|
|
|
+- **APlayerController**
|
|
|
|
|
+
|
|
|
|
|
+1. 主角灵魂
|
|
|
|
|
+2. 和玩家沟通的渠道
|
|
|
|
|
+
|
|
|
|
|
+> 键盘鼠标的输入事件先给PlayerController,再扩散到其他的Actor中
|
|
|
|
|
+> 大多数逻辑
|
|
|
|
|
+
|
|
|
|
|
+- **AAIController**
|
|
|
|
|
+
|
|
|
|
|
+1. AI灵魂
|
|
|
|
|
+2. 行为树功能强大
|
|
|
|
|
+3. 黑板共享数据
|
|
|
|
|
+4. AI感知
|
|
|
|
|
+5. EQS环境查询
|
|
|
|
|
+
|
|
|
|
|
+----
|
|
|
|
|
+
|
|
|
|
|
+- **ULevel关卡**
|
|
|
|
|
+
|
|
|
|
|
+1. Actor的集合
|
|
|
|
|
+2. World里的板块
|
|
|
|
|
+3. 对应umap
|
|
|
|
|
+
|
|
|
|
|
+----
|
|
|
|
|
+
|
|
|
|
|
+- **UWorld**
|
|
|
|
|
+
|
|
|
|
|
+1. Level的集合
|
|
|
|
|
+2. 运行时的真正的Actor集合
|
|
|
|
|
+3. “关卡”的真正单位
|
|
|
|
|
+4. 场景的真正表示对象
|
|
|
|
|
+
|
|
|
|
|
+----
|
|
|
|
|
+
|
|
|
|
|
+- **AGameMode**
|
|
|
|
|
+
|
|
|
|
|
+1. 世界规则
|
|
|
|
|
+2. 最权威
|
|
|
|
|
+
|
|
|
|
|
+----
|
|
|
|
|
+
|
|
|
|
|
+- **AGameState**
|
|
|
|
|
+
|
|
|
|
|
+1. 世界状态
|
|
|
|
|
+2. 通知到各端
|
|
|
|
|
+
|
|
|
|
|
+----
|
|
|
|
|
+
|
|
|
|
|
+- **UGameInstane**
|
|
|
|
|
+
|
|
|
|
|
+1. 整场游戏的全局实例
|
|
|
|
|
+2. World的外围管理对象
|
|
|
|
|
+3. 跨关卡的逻辑
|
|
|
|
|
+
|
|
|
|
|
+----
|
|
|
|
|
+
|
|
|
|
|
+- **USaveGame**
|
|
|
|
|
+
|
|
|
|
|
+1. 游戏存档
|
|
|
|
|
+
|
|
|
|
|
+----
|
|
|
|
|
+
|
|
|
|
|
+- **USubSystem**
|
|
|
|
|
+
|
|
|
|
|
+1. 业务逻辑的组件
|
|
|
|
|
+2. 5个生命周期粒度控制
|
|
|
|
|
+3. 自动生成对象
|
|
|
|
|
+4. 托管生命周期
|
|
|
|
|
+5. 替代Manager类
|
|
|
|
|
+
|
|
|
|
|
+----
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+| 位置 | 功能 |
|
|
|
|
|
+| --- | --- |
|
|
|
|
|
+| Component | 功能、能力 |
|
|
|
|
|
+| Actor | 个体本身的逻辑 |
|
|
|
|
|
+| APawn-APlayerController-APlayerState | 主角肉体-灵魂-状态 |
|
|
|
|
|
+| APawn-AAIController-APlayerState | AI肉体-灵魂-状态 |
|
|
|
|
|
+| AAIController-BehaviorTree-Blackboard | AI灵魂-行为树-数据 |
|
|
|
|
|
+| AGameMode-AGametate | 游戏规则-游戏状态 |
|
|
|
|
|
+| UGameInstance-USaveSame | 全局游戏实例-游戏存档 |
|
|
|
|
|
+| USubsystem | 游戏逻辑组件 |
|
|
|
|
|
+
|
|
|
|
|
+- 输入事件的处理
|
|
|
|
|
+
|
|
|
|
|
+1. 考虑联机扩展
|
|
|
|
|
+2. APlayerController最优先
|
|
|
|
|
+3. APawn其次
|
|
|
|
|
+4. AActor EnableInput
|
|
|
|
|
+5. 关卡蓝图只做测试功能
|
|
|
|
|
+
|
|
|
|
|
+----
|
|
|
|
|
+
|
|
|
|
|
+- 联机职责
|
|
|
|
|
+
|
|
|
|
|
+1. 设在哪里
|
|
|
|
|
+2. 谁复制了
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+----
|
|
|
|
|
+
|
|
|
## 简述
|
|
## 简述
|
|
|
|
|
|
|
|
框架(Framework)——指其约束性(框),也指其支撑性(架)。是一个基本概念上的结构,用于去解决或处理复杂的问题
|
|
框架(Framework)——指其约束性(框),也指其支撑性(架)。是一个基本概念上的结构,用于去解决或处理复杂的问题
|