<<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,并定义了三块基本的模板方法接口
  1. 可被Controller控制
  2. PhysicsCollision表示
  3. MovementInput的基本响应接口
  • 木偶相当于就是Pawn,而提线的是Controller
  • DefaultPawn、SpectatorPawn、Character(人形Pawn)

Controller

  • MVC对于游戏
  1. “显示”指的是游戏的UI,是屏幕上显示的3D画面,或是手柄上的输入和震动,也可以是VR头盔的镜片和定位,是与玩家直接交互的载体;
  2. “数据”指的是Mesh,Material,Actor,Level等各种元素组织起来的内存数据表示;
  3. “算法”可以是各种渲染算法,物理模拟,AI寻路,本文咱们就先暂时特指游戏开发者们编写的游戏业务逻辑。
  • 控制游戏中的Actor
  • PlayerState玩家的游玩数据

PlayerController和AIController

  • PlayerController:接收输入,然后在PlayerController内部根据情况去处理不同的Pawn。允许出现多个PlayerController。
  • PlayerController的重要模块:
  1. Camera的管理
  2. Input系统
  3. UPlayer关联
  4. Level的切换
  5. Voice方便网络中语音聊天的控制函数
  • AIController:AI也算一个Player,不接收控制,自行决策
  • AIController的重要模块;
  1. Navigation用于智能导航寻路
  2. AI组件
  3. Task系统

GameMode和GameState

  • 游戏玩法叫做GameMode,功能上实现了许多接口,主要分为以下几大块:
  1. Class登记,GameMode里登记了游戏里基本需要的类型信息,在需要的时候通过UClass的反射可以自动Spawn出相应的对象来添加进关卡中。GameMode就是比Controller更高一级的领导。
  2. 游戏内实体的Spawn
  3. 游戏的进度
  4. Level的切换
  5. 多人游戏的步调同步
  • GameState保存当前游戏的状态数据

UPlayer

  • 继承自UOject,每个Player分配一个PlayerController
  • ULocalPlayer:本地玩家,从Player派生下来的类
  • UNetConnection:一个网络连接也可以是一个Player

GameInstance

  • GameInstance里面的逻辑
  1. World、Level的切换
  2. 动态添加或删除Players
  3. 控制UI各种切换逻辑
  4. 全局的配置
  5. 游戏额外的第三方逻辑
  • UGameInstance里接口的大概有4类
  1. 引擎的初始化加载
  2. Player的创建
  3. GameMode的重载修改
  4. OnlineSession的管理
  • SaveGame存档

SubSystems

  • Subsystems是一套可以定义自动实例化和释放的类的框架
  • Subsystem对象依存属于的5类Outer对象
  1. UEngine* GEngine
  2. UEditorEngine* GEditor
  3. UGameInstance* GameInstance
  4. UWorld* World
  5. ULocalPlayer* LocalPlayer
  • 生命 周期5类:预定义好的5个可由此派生的父类
  1. UEngineSubsystem
  2. UEditorSubsystem
  3. UGameInstanceSubsystem
  4. UWorldSubsystem
  5. ULocalPlayerSubsystem
  • 优点
  1. 自动实例化
  2. 托管生命周期

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


网站名称:<<InsideUE4>>笔记-创新互联
文章转载:http://scyanting.com/article/dhpgcp.html