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.将伤害判定逻辑完善

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值