UE4一些模块 乱写的

 Actor Pawns Character

Actor是能放置在UE4游戏世界里面的东西。任何能放置在World里面的东西都必须继承自它。

Pawns指的是可控制物,自然继承自Actor。

Character继承自Pawns,指的是havea mesh, collision, and built-in movement logicPawns

 

UClass()宏:让你的c++代码可以在Editor里面获得

GENERATED_UCLASS_BODY()宏:让你的c++类可以作为UE4 Editor所需要的类一样工作

 

 

GameInstance:

GameInstance是凌驾于GameMode和Levels之上的类。你在场景里面都存不了的东西就放在这里就对了。比如在进入比赛场景之前还有游戏状态,需要把游戏状态相关信息放在GameInstance里面管理。

 

GameMode:

EgAShooterGame_FreeForAll

 

一个游戏可以有任何数量的游戏类型,因此有任何数量的 “AGameMode” 类的子类;然而,在任何特定时间只可以使用一种游戏类型。每次通过“UGameEngine::LoadMap()” 函数初始化一个游戏等级时都会实例化一个 GameMode Actor

 

PawnPlayerControllerAIController也都是由GameMode负责

加载PersisitentLevel的时候创建GameMode

 

调用顺序:

UGameInstance::StartPIEGameInstance这种的是在创建play inenditor模式下的实例的时候

UWorld::SpawnActor ( GameClass

AShooterGame_FreeForAll::AShooterGame_FreeForAll

以上是PIE模式的GameMode的创建,并不具有一般性。

一般当你在界面选择创建场景的话,执行流程:

FShooterMainMenu::HostGame –UShooterGameInstance::HostGame 需要参数ULocalPlayer* LocalPlayer

在这里根据选项获取StartURL,就是要进入的场景信息,以及GameType比如FFA意思是FreeForAll

。。。

创建GameSession 其中的bIsLAN参数应该是从settings里面读出来的。(哪个settings?)

-FOnlineSessionNull::CreateSession

比如你想通过GameInstance->HostGame执行两次让一个session来创建两个Game那是不行滴。因为session已经创建过了就不能重复创建了。

 

在创建结束之后的UShooterGameInstance::FinishSessionCreation里面调用UWorld::ServerTravel 进而调用AGameMode::ProcessServerTravel

在这个里面会告诉客户端离开场景ProcessClientTravel

并且World->NextURL=URL这里面NextURL就表示接下来要转移到的场景。

 

 

GameEngin模块里面的WorldList中选取一个FWorldContent并且执行TickWorldTravel(Context, DeltaSeconds);

UEngine::LoadMapLoadMap

WorldContext.World()->SetGameMode(URL);

World.cpp中:

AuthorityGameMode = SpawnActor<AGameMode>( GameClass, SpawnInfo );

 

其中,UWorld类是一种最为顶级的object,代表着一个地图。World类对象也是由GameInstance创建的。

要理解的是,GameMode也是一种AAcotor

GameClass就是代表了你要创建的GameMode类型,是从GlobalDefaultServerGameMode中获得的。

 

GameMode是不可replicate的,只会存在于服务器,所以它需要一个扩展,这个扩展就是GameStateGameState是可以replicate的。客户端取数据还是需要在<

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值