GameMode: 定义游戏规则。分数。 facets,游戏类型
GameState: 负责启用客户端监控游戏状态, 全局的游戏状态。 管理游戏数据
Player State: 在服务器创建的每个玩家的状态,同步到客户端做表现, 管理玩家数据
Pawn: 可以从控制器接收 处理输入数据的, 游戏主角
PlayerController: 玩家控制器, responsible, 业务层,控制 Pawn 角色
AIController:AI玩家控制器
PlayerCameraManager: 相机管理者
Actor: Actor是可以放置到关卡中的任何对象,可动态创建
ActorComponent: 可复用的组件。挂载到 Actor上的
Character: includes the ability to walk around. 可以移动的角色吧
为什么使用Subsystem
用Subsystem的好处:
不需要自己管理生命周期,引擎自动帮你管理,而且保证和指定的类型(目前只有5种)生命周期一致;
官方提供蓝图接口,能够很方便地在蓝图调用Subsystem;
与UObject类一样,可以定义UFUNCTION和UPROPERTY;
容易使用,只需继承需要的Subsystem类型就能够正常使用,维护成本低;
更模块化,而且可以迁移某个Subsystem到其他游戏项目使用;
目前UE4支持的Subsystem类型有以下5种:
Engine类:UEngineSubsystem
Editor类:UEditorSubsystem
GameInstance类:UGameInstanceSubsystem
World类:UWorldSubsystem
LocalPlayer类:ULocalPlayerSubsystem
UEngine* GEngine(引擎启动期间存在,或者说游戏进程期间存在);
UEditorEngine* GEditor(编辑器启动期间存在);
UGameInstance* GameInstance(游戏运行期间存在);
UWorld* World(关卡运行期间存在,一个游戏可能会有多个关卡,另外要注意的是编辑器下看到的场景其实也是一个World);
ULocalPlayer* LocalPlayer(本地玩家存在的时候存在,实际上通常和GameInstance生命周期差不多,但是可能有多个本地玩家,而且游戏进行过程中可以随时添加减少本地玩家,所以生命周期视情况、Outer对象依附于哪个LocalPlayer而定);
DynamicSubsystem: 能够随时加载和卸载。而DynamicSubsystem就能提供这种功能
FString and string
FString UE4Str = "UE4 C++";
**//FString to std::string**
std::string cstr(TCHAR_TO_UTF8(*UE4Str));
**//std::string to FString**
ClientMessage(FString(cstr.c_str()));
/* <CreateObjectDemo> * 创建Component对象,要使用CreateDefaultSubobject模板函数 */
MyComponent = CreateDefaultSubobject<UMyActorComponent>(TEXT("MyComponent"));
/* <CreateObjectDemo> * 创建AActor派生类对象不要用NewObject或new,而要用UWorld::SpawnActor() */
UWorld* World = GetWorld(); FVector pos(150, 0, 20);
AMyActor* MyActor = World->SpawnActor<AMyActor>(pos, FRotator::ZeroRotator);
/* <CreateObjectDemo> * 创建AActor派生类对象不要用NewObject或new,而要用UWorld::SpawnActor() */
UWorld* World = GetWorld(); FVector pos(150, 0, 20);
AMyActor* MyActor = World->SpawnActor<AMyActor>(pos, FRotator::ZeroRotator);
注意事项
1.CreateDefaultSubobject必须写在Actor的无参构造函数 中,否则crash;
2.CreateDefaultSubobject中的TEXT或者FName参数在同一个Actor中不能重复,否则crash;
3.UE4不推荐try catch,并且默认是不支持的,UE4推荐Assertions。