UE求职Demo开发日志#10 伤害显示和完善存储文件(补)

游戏普攻与伤害显示功能实现过程

1 任务与实现思路

任务:

        1.完善普攻的倍率,每段加入实际判定

        2.加入第五段倍率属性,具体按比例将第五段分成几段,契合动画

        3.加入伤害显示UI

        4.用DoesSaveGameExist判断是否存在文件,不存在就新建,存在就读取

这里记录一下添加新的属性要做的操作:

1.AS里添加定义

2. 结构体里添加定义

3.完善函数

2 实现过程

2.1 给FSavedAttributes添加构造函数

FSavedAttributes()
	{
		MaxHealth=0;
		CurrentHealth=0;
		MaxStamina=0;
		CurrentStamina=0;
		BaseAttack=0;
		BaseStagger=0;
		BaseResistance=0;
		CRT=0;
		CriticalDamage=0;
		NA_1_Multi=0;
		NA_2_Multi=0;
		NA_3_Multi=0;
		NA_4_Multi=0;
		NA_5_Multi=0;
	}
	FSavedAttributes(float MaxHealth, float CurrentHealth, float MaxStamina, float CurrentStamina,float BaseAttack,
		float BaseStagger,float BaseResistance,float CRT,float CriticalDamage,float NA_1_Multi,float NA_2_Multi,float NA_3_Multi,
		float NA_4_Multi,float NA_5_Multi)
	{
		this->MaxHealth=MaxHealth;
		this->CurrentHealth=CurrentHealth;
		this->MaxStamina=MaxStamina;
		this->CurrentStamina=CurrentStamina;
		this->BaseAttack=BaseAttack;
		this->BaseStagger=BaseStagger;
		this->BaseResistance=BaseResistance;
		this->CRT=CRT;
		this->CriticalDamage=CriticalDamage;
		this->NA_1_Multi=NA_1_Multi;
		this->NA_2_Multi=NA_2_Multi;
		this->NA_3_Multi=NA_3_Multi;
		this->NA_4_Multi=NA_4_Multi;
		this->NA_5_Multi=NA_5_Multi;
	}

2.2 AS中添加新属性

UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Player_AS")
FGameplayAttributeData NA_5_Multi;
ATTRIBUTE_ACCESSORS(UMyPlayerAttributeSet, NA_5_Multi);

2.3 完善AS初始化函数和转化结构体的函数

就是在这俩函数里补一下刚加的属性

void UMyPlayerAttributeSet::InitPlayerAttributeSet(FSavedAttributes savedAttribute)

FSavedAttributes UMyPlayerAttributeSet::ASToFSavedAttribute()

2.4 完善AS构造函数的读写逻辑

UMyPlayerAttributeSet::UMyPlayerAttributeSet()
{
	// 从槽位加载游戏
	bool bIsSaveGameExist=UGameplayStatics::DoesSaveGameExist(FString("PlayerAttributes"), 0);
	
	if(bIsSaveGameExist)
	{
		UMyPlayerData*  LoadedPlayerData= Cast<UMyPlayerData>(UGameplayStatics::LoadGameFromSlot(FString("PlayerAttributes"), 0));
		InitPlayerAttributeSet(LoadedPlayerData->GetSavedAttributes());
	}
	else
	{
		UMyPlayerData*  LoadedPlayerData=NewObject<UMyPlayerData>();
		//构造新的
		FSavedAttributes ASToSave=FSavedAttributes(100,
			100,
			100,
			100,
			10,
			10,
			10,
			0.5,
			0.5,
			1.1,
			1.2,
			1.3,
			1.4,
			3.2);
		//用这个新的FSavedAttributes初始化AS
		InitPlayerAttributeSet(ASToSave);
		//保存到槽位里
		LoadedPlayerData->SetSavedAttributes(ASToSave);
		UE_LOG(LogTemp,Warning,TEXT("On Construct New AttributeSet"));
		UGameplayStatics::SaveGameToSlot(LoadedPlayerData,FString("PlayerAttributes"),0);
	}
	UE_LOG(LogTemp, Warning, TEXT("MyPlayerAttributeSet-->OnConstruct"));
}

2.5 同理完善强化系统的读写

UStrengthenManager::UStrengthenManager()
{
	bool bIsExist=UGameplayStatics::DoesSaveGameExist(FString("StrengthenInfo"), 0);
	if(bIsExist)
	{
		Load();
	}
	else
	{
		UE_LOG(LogTemp, Warning, TEXT("New StrengthenInfo"));
		FStrengthenCellInfo SCI_1=FStrengthenCellInfo();
		SCI_1.bIsActive = false;
		SCI_1.DescriptionText=FString("BaseAttack+10");
		TArray<FMyItemInfo>NeededItems;
		NeededItems.Add(FMyItemInfo(1,10,FString("源能结晶")));
		SCI_1.NeededItems=NeededItems;
		SCI_1.PreIndex=TArray<int32>();
		StrengthenTree_1.Add(SCI_1);


		SCI_1.bIsActive = false;
		SCI_1.DescriptionText=FString("MaxHealth+100");
		NeededItems.Empty();
		NeededItems.Add(FMyItemInfo(1,15,FString("源能结晶")));
		SCI_1.NeededItems=NeededItems;
		SCI_1.PreIndex={0};
		StrengthenTree_1.Add(SCI_1);

		SCI_1.bIsActive = false;
		SCI_1.DescriptionText=FString("BaseResistance+10");
		NeededItems.Empty();
		NeededItems.Add(FMyItemInfo(1,15,FString("源能结晶")));
		SCI_1.NeededItems=NeededItems;
		SCI_1.PreIndex={0};
		StrengthenTree_1.Add(SCI_1);
		Save();
	}
}

2.6 完善第五段普攻的四段伤害

  测试打印了一下倍率,没啥问题

2.7 EnemyUI里添加伤害显示的动画

 是否暴击来播放不同的动画:

 

 因为今天晚上才回来,这篇是补的昨天的,先到这

TODO:

1.将第五段普攻按比例分给四段判定

2.将伤害判定逻辑完善

内容概要:本文设计了一种基于PLC的全自动洗衣机控制系统内容概要:本文设计了一种,采用三菱FX基于PLC的全自动洗衣机控制系统,采用3U-32MT型PLC作为三菱FX3U核心控制器,替代传统继-32MT电器控制方式,提升了型PLC作为系统的稳定性与自动化核心控制器,替代水平。系统具备传统继电器控制方式高/低水,实现洗衣机工作位选择、柔过程的自动化控制/标准洗衣模式切换。系统具备高、暂停加衣、低水位选择、手动脱水及、标准两种蜂鸣提示等功能洗衣模式,支持,通过GX Works2软件编写梯形图程序,实现进洗衣过程中暂停添加水、洗涤、排水衣物,并增加了手动脱水功能、脱水等工序蜂鸣器提示的自动循环控制功能,提升了使用的,并引入MCGS组便捷性与灵活性态软件实现人机交互界面监控。控制系统通过GX。硬件设计包括 Works2软件进行主电路、PLC接梯形图编程线与关键元,完成了启动、进水器件选型,软件、正反转洗涤部分完成I/O分配、排水、脱、逻辑流程规划水等工序的逻辑及各功能模块梯设计,并实现了大形图编程。循环与小循环的嵌; 适合人群:自动化套控制流程。此外、电气工程及相关,还利用MCGS组态软件构建专业本科学生,具备PL了人机交互C基础知识梯界面,实现对洗衣机形图编程能力的运行状态的监控与操作。整体设计涵盖了初级工程技术人员。硬件选型、; 使用场景及目标:I/O分配、电路接线、程序逻辑设计及组①掌握PLC在态监控等多个方面家电自动化控制中的应用方法;②学习,体现了PLC在工业自动化控制中的高效全自动洗衣机控制系统的性与可靠性。;软硬件设计流程 适合人群:电气;③实践工程、自动化及相关MCGS组态软件与PLC的专业的本科生、初级通信与联调工程技术人员以及从事;④完成PLC控制系统开发毕业设计或工业的学习者;具备控制类项目开发参考一定PLC基础知识。; 阅读梯形图建议:建议结合三菱编程能力的人员GX Works2仿真更为适宜。; 使用场景及目标:①应用于环境与MCGS组态平台进行程序高校毕业设计或调试与运行验证课程项目,帮助学生掌握PLC控制系统的设计,重点关注I/O分配逻辑、梯形图与实现方法;②为工业自动化领域互锁机制及循环控制结构的设计中类似家电控制系统的开发提供参考方案;③思路,深入理解PL通过实际案例理解C在实际工程项目PLC在电机中的应用全过程。控制、时间循环、互锁保护、手动干预等方面的应用逻辑。; 阅读建议:建议结合三菱GX Works2编程软件MCGS组态软件同步实践,重点理解梯形图程序中各环节的时序逻辑与互锁机制,关注I/O分配与硬件接线的对应关系,并尝试在仿真环境中调试程序以加深对全自动洗衣机控制流程的理解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值