<<InsideUE4>>笔记-创新互联
文件主要目录:
创新互联是一家专注于成都网站设计、成都网站建设与策划设计,肥乡网站建设哪家好?创新互联做网站,专注于网站建设10年,网设计领域的专业建站公司;建站业务涵盖:肥乡等地区。肥乡做网站价格咨询:18982081108- Binaries:存放编译生成的结果二进制文件。gitignore
- Config:配置文件。
- Content:平常最常用到的,所有资源和蓝图等都放在该目录里。
- DerivedDataCache:“DDC”,存储着引擎针对平台特化后的资源版本。gitignore
- Intermediate:中间文件,存在一些临时生成的文件。gitignore
- Saved:存储自动保存的文件,其他配置文件,日志文件,引擎崩溃日志,硬件信息,烘培信息数据等。gitignore
- Source:代码文件
命名约定:
- 模板类以T作为前缀,比如TArray、TMap、TSet
- UOject派生类都以U为前缀
- AActor派生类都以A为前缀
- SWidget派生类都以S为前缀
- 抽象接口以I为前缀
- 枚举以E开头
- bool变量以b为前缀,如bPendingDestruction
- typedef的以原型名前缀为准,如typedef TArray FArrayOfMyTypes
编译系统:
- UnrealBuildTool(UBT,C#):UE4的自定义工具,来编译UE4的逐个模块并处理依赖等。
- UnrealHeaderTool(UHT,C++):UE4的C++代码解析生成工具。我们在代码里写的那些宏UCLASS等和#include"*.generated.h"都为UHT提供了信息来生成相应的C++反射代码。
Actor和Component
- Actor继承自UObject,特性有Replication、Spawn、Tick
- Component组件,具有不同的能力,Components组成Actor,使其有各自的能力
Level和World
- Level相当于是Actors的容器,通过ALevelScriptActor来编写逻辑管理Level中的Actors
- World可以通过Sublevel的方式,将不同的Level拼接起来,有Persistent,Streaming两种加载方式
WorldContext
- World的种类Game、Editor、PIE、Preview、Inactive(问题1:World类型的None?)
- FWorldContext用来保存切换过程信息和目标World上下文信息。所以一般切换的时候,比如OpenLevel,也都需要传FWorldContext的参数
- GameInstance保存着当前WorldContext和其他整个游戏的信息
Pawn
- 从Actor中派生出APawn,并定义了三块基本的模板方法接口
- 可被Controller控制
- PhysicsCollision表示
- MovementInput的基本响应接口
- 木偶相当于就是Pawn,而提线的是Controller
- DefaultPawn、SpectatorPawn、Character(人形Pawn)
Controller
- MVC对于游戏
- “显示”指的是游戏的UI,是屏幕上显示的3D画面,或是手柄上的输入和震动,也可以是VR头盔的镜片和定位,是与玩家直接交互的载体;
- “数据”指的是Mesh,Material,Actor,Level等各种元素组织起来的内存数据表示;
- “算法”可以是各种渲染算法,物理模拟,AI寻路,本文咱们就先暂时特指游戏开发者们编写的游戏业务逻辑。
- 控制游戏中的Actor
- PlayerState玩家的游玩数据
PlayerController和AIController
- PlayerController:接收输入,然后在PlayerController内部根据情况去处理不同的Pawn。允许出现多个PlayerController。
- PlayerController的重要模块:
- Camera的管理
- Input系统
- UPlayer关联
- Level的切换
- Voice方便网络中语音聊天的控制函数
- AIController:AI也算一个Player,不接收控制,自行决策
- AIController的重要模块;
- Navigation用于智能导航寻路
- AI组件
- Task系统
GameMode和GameState
- 游戏玩法叫做GameMode,功能上实现了许多接口,主要分为以下几大块:
- Class登记,GameMode里登记了游戏里基本需要的类型信息,在需要的时候通过UClass的反射可以自动Spawn出相应的对象来添加进关卡中。GameMode就是比Controller更高一级的领导。
- 游戏内实体的Spawn
- 游戏的进度
- Level的切换
- 多人游戏的步调同步
- GameState保存当前游戏的状态数据
UPlayer
- 继承自UOject,每个Player分配一个PlayerController
- ULocalPlayer:本地玩家,从Player派生下来的类
- UNetConnection:一个网络连接也可以是一个Player
GameInstance
- GameInstance里面的逻辑
- World、Level的切换
- 动态添加或删除Players
- 控制UI各种切换逻辑
- 全局的配置
- 游戏额外的第三方逻辑
- UGameInstance里接口的大概有4类
- 引擎的初始化加载
- Player的创建
- GameMode的重载修改
- OnlineSession的管理
- SaveGame存档
SubSystems
- Subsystems是一套可以定义自动实例化和释放的类的框架
- Subsystem对象依存属于的5类Outer对象
- UEngine* GEngine
- UEditorEngine* GEditor
- UGameInstance* GameInstance
- UWorld* World
- ULocalPlayer* LocalPlayer
- 生命 周期5类:预定义好的5个可由此派生的父类
- UEngineSubsystem
- UEditorSubsystem
- UGameInstanceSubsystem
- UWorldSubsystem
- ULocalPlayerSubsystem
- 优点
- 自动实例化
- 托管生命周期
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
网站栏目:<<InsideUE4>>笔记-创新互联
新闻来源:http://azwzsj.com/article/dhpgcp.html