C++ 术语

类型

int8 / uint8 :8位有符号/无符号整数

int16/ uint16 :16位有符号/无符号整数

int32/ uint32 :32位有符号/无符号整数

int64/  uint64 :64位有符号/无符号整数

字符串:String Handling

auto关键字不会自动为您指定指针/引用,需要自己添加

容器:

TArray:类似于std :: vector

TMap

TSet

更多容器参考Containers

迭代器:TObjectIterator


UE4类

类的前缀:

从Actor派生的类以A为前缀(例如,AController)

从Object派生的类以U为前缀(例如,UComponent)

枚举前缀为E(例如,EFortificationType)

接口类通常以I为前缀(例如,IAbilitySystemInterface)

模板类以T为前缀(例如,TArray)

从SWidget(Slate UI)派生的类以S为前缀(例如,SButton)

其他所有内容都以字母F为前缀(例如,FVector)


宏:

带参数的宏定义可以看做是函数 

UCLASS():用于告诉Unreal为类生成反射数据。 该类必须派生自UObject。

说明符:Class Specifiers

UCLASS([specifier, specifier, ...], [meta(key=value, key=value, key, key, ...)])

USTRUCT():用于告诉Unreal为结构生成反射数据。

说明符:Struct Specifiers

UPROPERTY():修饰UCLASS或USTRUCT的成员变量。

说明符:Property Specifiers

UPROPERTY([specifier, specifier, ...], [meta(key=value, key=value, ...)])Type VariableName;

eg:

UFUNCTION():允许将UCLASS或USTRUCT的类方法用作UFUNCTION。

Function Specifiers:参考文档            

UFUNCTION([specifier, specifier, ...], [meta(key=value, key=value, ...)])

ReturnType FunctionName([Parameter, Parameter, ...])

UENUM():用于告诉Unreal为枚举生成反射数据。

GENERATED_BODY():

在反射的类或结构中需要GENERATED_UCLASS_BODY()/ GENERATED_USTRUCT_BODY()宏,将附加函数和typedef注入到类体中。


Unreal Property System:

反射是程序在运行时检查自身的能力。

 C++本身并不支持任何形式的反射

变量在动态生成时需要使用宏才支持垃圾收集

Actor通常不会被垃圾收集,需要调用Destroy()

USTRUCT从FGCObject派生并覆盖其AddReferencedObjects函数才能垃圾收集


基础类:

默认情况下,UObjects和AActors都有基本的内存管理,包括垃圾收集。

大多数游戏玩法开发不涉及直接从UObjects派生,而是从AActor和UActorComponent派生。

每个Actor或UObject对象都是一个类的单个实例。每个Actor实例都获得其自己的组件唯一实例。


•UObject

虚幻引擎中的基础构建块称为UObject。 这个类与UClass一起提供了引擎中许多最重要的基本服务:

1.垃圾收集

2.属性的可配置值

3.对属性和方法的网络支持


•AActor

包含Component对象的容器。例如,汽车上的轮子,方向盘,汽车车身,车灯等都将被视为组件,而汽车本身就是演员。

Actor可以访问并使用Component提供的功能。

AActor是所有Actors的基类。 AActor派生自UObject。

在将AActor放置在某个级别之前,该AActor必须至少包含一个USceneComponent,其中包含该AActor的平移,旋转和比例。

1.可放置在世界中的物体

2.充当层次结构的组件容器

3.网络中可以复制的基本类型

Pawn:Pawn不被假定为人形。

在多个Pawn切换可以参考Possessing Pawns in Blueprint

Character:是一个人形风格的Pawn。(Pawn的派生类)比Pawn多了1个CharacterMovementComponent,CapsuleComponent和SkeletalMeshComponent

UWorld :: SpawnActor()专门用于产生AActor,自动调用BeginPlay和Tick

Destroy()会调用EndPlay

BeginPlay - 当对象首次进入游戏存在时调用

Tick - 每帧调用一次以便随着时间的推移完成工作

EndPlay - 当对象离开游戏区域时调用


•UActorComponent

必须是AActor的父级,组件只能附加到一个父组件或Actor,但它可能有许多子组件附加到自身,形成一个树。

UActorComponents有自己的行为,通常负责在许多类型的AActors之间共享的功能。

actor中的子组件相对于其父组件或Actor具有位置,旋转和缩放。

1.提供可视网格

2.粒子效应

3.相机视角

4.物理互动

5.运动逻辑


•UStruct

不必从任何特定类扩展为使用UStruct。 您只需要使用USTRUCT()标记结构。

UStructs不是垃圾收集的。 如果创建它们的动态实例,则必须自己管理它们的生命周期。


Game Mode和Game State管理游戏运行的相关信息。

Game Instance:用于存储程序运行时需要持久保存的信息。 不会在关卡加载之后被删除。


Game Mode负责制定游戏规则,例如玩家人数,进入游戏的方式,暂停游戏,level的转换。

AGameModeBase——》AGameMode(查看文档)

游戏模式只存在于服务器上,因此本地客户端无法访问模式实例。如果玩家需要与当前游戏模式相关的更新信息,则该信息可以存储在AGameStateBaseActor 保持同步(RPC)。

在蓝图中设置游戏模式

1.创建GameMode蓝图并为其设置(类)默认值

2.为游戏分配默认游戏模式

编辑——》项目设置——》地图和模式

默认GameMode下拉框指定要使用的GameMode


GameMode:游戏规构成了游戏模式。只存在于服务器上。绝对不应该有客户需要了解的瞬态数据。

1.新建以Game Mode Base为基类的蓝图

AGameModeBase的派生类AGameMode实现了匹配状态的概念,因此更适合标准游戏类型,如多人射击游戏。

2.打开并设置Classes选项卡中的默认类

3.设置默认的游戏模式

4.覆盖默认的游戏模式

在编辑器的右侧

GameState:

当游戏中发生与规则相关的事件并需要跟踪并与所有玩家共享时,该信息将通过GameState进行存储和同步,例如排行榜。

GameState存在于服务器和所有客户端上,可以自由复制以使所有计算机保持最新状态。

PlayerState:

参与者的状态(例如玩家姓名和分数)

作为游戏的一部分存在的非玩家AI将不具有PlayerState

所有玩家的PlayerStates都存在于所有机器上(与PlayerControllers不同),并且可以自由复制以保持同步。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,176评论 5 469
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,190评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,232评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,953评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,879评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,177评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,626评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,295评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,436评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,365评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,414评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,096评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,685评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,771评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,987评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,438评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,032评论 2 341

推荐阅读更多精彩内容

  • 一、基本数据类型 注释 单行注释:// 区域注释:/* */ 文档注释:/** */ 数值 对于byte类型而言...
    龙猫小爷阅读 4,251评论 0 16
  • 转至元数据结尾创建: 董潇伟,最新修改于: 十二月 23, 2016 转至元数据起始第一章:isa和Class一....
    40c0490e5268阅读 1,678评论 0 9
  • 禅与 Objective-C 编程艺术 (Zen and the Art of the Objective-C C...
    GrayLand阅读 1,597评论 1 10
  • 晨从红豆山庄南行拾级而上,闻水声,如鸣佩环,心乐之,遂取道而下,下见小瀑布,潭水尤清冽,潭上薄雾袅袅...
    半风之舞阅读 308评论 0 0
  • 我不能决定自己怎么生,但我想决定自己怎么死。
    高能磷酸阅读 177评论 0 0