Browse Source

GamePlay讲座的记录

usuiforhe 4 năm trước cách đây
mục cha
commit
55f4c2c8cc
3 tập tin đã thay đổi với 178 bổ sung1 xóa
  1. BIN
      img/UE_Asset118.png
  2. BIN
      img/UE_Asset119.png
  3. 178 1
      虚幻.md

BIN
img/UE_Asset118.png


BIN
img/UE_Asset119.png


+ 178 - 1
虚幻.md

@@ -1,7 +1,7 @@
 <!--
  * @Author: lc
  * @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
  * @Description: 虚幻学习
  * @FilePath: D:\Projects\markdown\虚幻.md
@@ -1076,8 +1076,185 @@ K-DOP是包围体的一种,是K离散导向多面体(K discrete oriented polyt
 
 ![TimeLine](img/UE_Asset100.png)
 
+[GamePlay框架官方讲解](https://www.bilibili.com/video/BV1ED4y1D7Sf)
+
 在游戏运行中,即使我们没有向关卡(场景)中添加一些东西,在运行的时候虚幻引擎也会自动添加一些东西在场景中。这些就是为了完成虚幻的一套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类
+
+----
+
+![](img/UE_Asset118.png)
+
+| 位置 | 功能 |
+| --- | --- |
+| 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. 谁复制了
+
+![联机职责](img/UE_Asset119.png)
+
+----
+
 ## 简述
 
 框架(Framework)——指其约束性(框),也指其支撑性(架)。是一个基本概念上的结构,用于去解决或处理复杂的问题