交互命令: UPrimalcCommand
用于交互具体实现,包括查询、校验、实现
建议重载BeginPlay在此函数中将OwnerActor转换为建筑或怪物并保存在变量中并且建筑与怪物设置不同的交互命令蓝图
变量 | 说明 |
---|---|
OwnerActor | 父Actor |
CommandComponent | 交互命令组件 |
InteractionDistance(设置) | 交互距离,OwnerActor与玩家Actor最大交互距离,超过此距离将不会进行交互 |
CommandID | 命令ID,不同效果请设置不同ID, 但打开建筑背包与打开怪物背包可设置为相同(因为建筑命令列表中不会存在怪物的命令) |
UseColdDown | 使用冷却,与UltimateControllerComponent->CommandColdDownTime不同,为单独的一个冷却系统 |
具体实现,重载函数
重载函数 | 说明 |
---|---|
QueryCommand(ACharacter* Character, APlayerController* PC, FCommandEntrie& OutCommandEntrie) | 查询命令,一般为UI使用,返回FCommandEntrie结构用于轮盘选择器或默认交互 |
AllowCommand(ACharacter* Character, APlayerController* PC) | 允许使用该交互命令,交互前与查询都会调用此函数, 函数无需实现判断角色死亡与交互距离,请使用客户端能接受到的数据 |
ExecuteCommand(ACharacter* Character, APlayerController* PC) | 执行具体交互命令,例如打开背包、关闭熔炉等, 虽然在AllowCommand中已添加一些校验,但在此可以添加一些服务器使用的特殊校验(例如校验一些客户端无需接收的数据) |