位置
打开GameMode
实例的生成(Spawn Default Pawn)
Functions—>Override—>Spawn Default Pawn For:生成一个Pawn。如果本身没有人物,没有调用这个函数,则会默认生成一个人物,但是如果调用了这个函数,则不会默认地生成实例。
Spawn Default Pawn For:
通过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输出。
但是这里我仍然不太明白Pawn,Spawn Actor,Actor,Uobject的关系。但是按照转换顺序来看,Uobject应该是一个基类,Pawn应该是这里面辈分最小的类。
重新设置(Should Reset)
会重置状态,这里也没讲清楚,先过。
Must Spectate
是否使用第三人称,如果勾选了是
视角就可能飞到天上去。
Event OnPostLogin
登陆:如果登陆服务端成功,会打印一个值。
如果在单机模式下,GameMode本身就是一个服务端。
但是如果是个联网的多人游戏,这个服务端在客户端是没有副本的,也就是不同步给客户端。多玩家情况下,GameMode只有一个,如果玩家加入成功,则打印出玩家名。
客户端和服务端会有一个几次握手,如果成功则建立一个长连接,不断的同步数据。
Event OnRestartPlay
玩家是否可以重新开始。加入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
选择最佳位置作为出生点位,这个位置可能是玩家没有被占用的位置。