天天看点

虚幻4基础:GameMode接口

位置

虚幻4基础:GameMode接口

打开GameMode

虚幻4基础:GameMode接口

实例的生成(Spawn Default Pawn)

Functions—>Override—>Spawn Default Pawn For:生成一个Pawn。如果本身没有人物,没有调用这个函数,则会默认生成一个人物,但是如果调用了这个函数,则不会默认地生成实例。

Spawn Default Pawn For:

虚幻4基础:GameMode接口

通过Controller获取一个默认的Pawn Class,但是Get Default Pawn Class for Controller默认返回的是一个Uobject,最终我们要的对象类型是Pawn。所以要先转换成一个Actor Class。这里就用到了Cast to。接着Cast to返回一个As Actor。这个时候再用Spawn Actor接住转换的As Actor,再通过Cast to Pawn,把Spawn Actor转换成Pawn输出。

虚幻4基础:GameMode接口

但是这里我仍然不太明白Pawn,Spawn Actor,Actor,Uobject的关系。但是按照转换顺序来看,Uobject应该是一个基类,Pawn应该是这里面辈分最小的类。

重新设置(Should Reset)

会重置状态,这里也没讲清楚,先过。

Must Spectate

是否使用第三人称,如果勾选了是

虚幻4基础:GameMode接口
虚幻4基础:GameMode接口

视角就可能飞到天上去。

Event OnPostLogin

登陆:如果登陆服务端成功,会打印一个值。

如果在单机模式下,GameMode本身就是一个服务端。

但是如果是个联网的多人游戏,这个服务端在客户端是没有副本的,也就是不同步给客户端。多玩家情况下,GameMode只有一个,如果玩家加入成功,则打印出玩家名。

虚幻4基础:GameMode接口

客户端和服务端会有一个几次握手,如果成功则建立一个长连接,不断的同步数据。

Event OnRestartPlay

玩家是否可以重新开始。加入GameMode时,该函数会更新。

虚幻4基础:GameMode接口

上述三个函数都可以激活该函数。

Event OnChangeName

每个玩家对应一个名字,通过Change Name来更新名字。好像是储存在PlayStay里?我都不确定是不是…

Event Init Start Spot

初始化Spot,调用Restart Player激活该函数。如果Pawn不存在的话,无法激活该函数。

Event Initialize HUDFor Player

当很多玩家成功连接进入服务器时,服务器会通知客户端更新客户端的相关配置,其中就是HUD。HUD只存在于客户端,不存在于服务端,除非是单机类型的游戏。在多人游戏中,无法从服务端访问HUD。

Event Handlie Starting New Player

通过Event OnPostLogin确认是否登录成功,然后初始化HUD,然后Event Handle Starting New Player会初始化一个新的玩家。如果在蓝图中使用了这个函数,那么就只会执行蓝图中的该函数,C++内不会执行。

Find Player Start

寻找玩家生成点位。返回值是一个Actor。

Choose Player Start

选择最佳位置作为出生点位,这个位置可能是玩家没有被占用的位置。

UE4

继续阅读