1 今日任务
-
获得物品逻辑改为检测背包,合成逻辑也改为检测背包,合成面板数据绑定背包
-
敌人生成管理,每次进入固定生成一小波,普通小怪掉落物品
3.合成之后完成第一个任务,绑定合成成功
4.创建几个空气墙限制区域,任务1完成后解锁
2 实现过程
2.1 修改了背包管理类中的函数,确保了数组的长度固定为最大限制,空的元素默认构造,添加物品自动找第一个空位
2.2 合成物品时请求更新任务系统
![](https://i-blog.csdnimg.cn/direct/b38203d0166c4e2195459a12290c20d3.png)
获取结果物品信息:
然后尝试调用任务系统的函数:
![](https://i-blog.csdnimg.cn/direct/57ef84de48ef4e2c8a74b3c791a57f25.png)
2.3 整理所有UI的关系
不可能会同时出现的面板放在switch里,两个TipUI设为非可命中测试,
一个switch函数控制UI的显示:
![](https://i-blog.csdnimg.cn/direct/5a9e74eae3e048eb9782dc2107520187.png)
2.4 加了阻挡体积,实现了触发生成敌人,并在击败敌人后打开特定的门
![](https://i-blog.csdnimg.cn/direct/455c177a3c5c4c789665f12f3c407d92.png)
2.5 添加完成任务1的回调,更新游戏流程,之后实现生成精英敌人的时候在前加一步流程判断就行了
cpp
if(QuestId==1)
{
UMyGameInstance* MyGameInstance=Cast<UMyGameInstance>(UGameplayStatics::GetGameInstance(GetWorld()));
MyGameInstance->GameFlowKeyPointsInGameInstance[0]=true;
if(MyGameInstance->SaveGameFlow())
{
UE_LOG(LogTemp,Warning,TEXT("GameFlowSaved"));
}
else
{
UE_LOG(LogTemp,Warning,TEXT("GameFlow Save Failed"));
}
}