当前位置: 首页 > news >正文

电商网站后台报价标准型网站建设

电商网站后台报价,标准型网站建设,php网页制作代码,专业网站设计服务好1 将用到的图标找好#xff0c;放一起 DataTable里对应好图标 测试一下能正确获取#xff1a; 2 装备增强属性思路 给FMyItemInfo添加一个枚举变量记录类型#xff08;物品#xff0c;道具#xff0c;装备#xff0c;饰品#xff0c;武器#xff09;-- 扩展DataT…1 将用到的图标找好放一起 DataTable里对应好图标 测试一下能正确获取 2 装备增强属性思路 给FMyItemInfo添加一个枚举变量记录类型物品道具装备饰品武器-- 扩展DataTable新建行结构继承FMyItemData增加属性增强数组数组元素为Struct其中的属性为FString,bool isPercent增强百分比或加数值,float value和GA数组(待完善赋予的能力)-- 用属性初始化AS时--倍率属性不参与读取的是固定增幅额外增幅应该记录在FMyItemInfo中 获取基础属性--临时的结构体数组记录每个属性增强的百分比和数值 遍历装备列表-- 读取并计算装备增幅--获取并赋予GA-- 遍历装备列表-- 读取并计算饰品增幅--获取并赋予GA-- 获取武器id-- 读取并计算武器增幅--获取并赋予GA-- 每个属性最终先总数值再*总百分比1总增幅百分比 最终属性赋予AS 3 实现过程 3.1 增加枚举类型变量 UENUM(BlueprintType) enum class EMyItemType : uint8 {None0,Item UMETA(DisplayName Item),Prop UMETA(DisplayName Prop),Arm UMETA(DisplayName Arm),Accessory UMETA(DisplayName Accessory),Weapon UMETA(DisplayName Weapon), }; 结构体里增加表示类型的变量 struct ARPG_CPLUS_API FMyItemInfo {GENERATED_USTRUCT_BODY()UPROPERTY(EditAnywhere, BlueprintReadOnly)int32 ItemId;UPROPERTY(EditAnywhere, BlueprintReadOnly)int64 CurrentOwnedCnt;UPROPERTY(EditAnywhere, BlueprintReadOnly)FString DisplayName;UPROPERTY(EditAnywhere, BlueprintReadOnly)EMyItemType ItemType{EMyItemType::Item};FMyItemInfo(int32 ItemId,int64 CurrentOwnedCnt,FString DisplayName) : ItemId(ItemId), CurrentOwnedCnt(CurrentOwnedCnt), DisplayName(DisplayName){}FMyItemInfo(){ItemId 0;CurrentOwnedCnt0;DisplayNameFString(Default);} }; 3.2 添加修改器的结构体并创建要使用的行结构继承FMyItemData USTRUCT(BlueprintType) struct ARPG_CPLUS_API FAttributeModifier {GENERATED_USTRUCT_BODY()UPROPERTY(EditAnywhere, BlueprintReadWrite)FString AttributeName;UPROPERTY(EditAnywhere, BlueprintReadWrite)bool bIsPercent;UPROPERTY(EditAnywhere, BlueprintReadWrite)float PercentValue;UPROPERTY(EditAnywhere, BlueprintReadWrite)float AddedValue; }; USTRUCT(BlueprintType) struct ARPG_CPLUS_API FAttrModItemData:public FMyItemData {GENERATED_USTRUCT_BODY()UPROPERTY(EditAnywhere, BlueprintReadWrite)TArrayFAttributeModifier AttributeMods;UPROPERTY(EditAnywhere, BlueprintReadWrite)TArrayTSubclassOfUGameplayAbility GAsToAdd; }; 3.3 MyPlayerAttributeSet里的计算逻辑 话不多说了逻辑太长了 核心逻辑 传入的是要检查的所有装备饰品等的Id 考虑所有物品的所有属性的修改幅值最后应用修改器 void UMyPlayerAttributeSet::ModAttribute(TArrayint ItemsId) {LogBaseValueMes();TArrayFAttributeModifier Sum{};//不受bIsPercent限制for(int i:ItemsId){CalModMagnitude(i,Sum);}UE_LOG(LogTemp,Warning,TEXT(Sum[0]--ModName%s PercentValue%f AddedValue%f),*Sum[0].AttributeName,Sum[0].PercentValue,Sum[0].AddedValue);for(FAttributeModifier Modifier:Sum){UE_LOG(LogTemp,Warning,TEXT(Sum--ModName%s PercentValue%f AddedValue%f),*Modifier.AttributeName,Modifier.PercentValue,Modifier.AddedValue);ApplyModifier(Modifier);}LogBaseValueMes(); } 以下是功能的具体实现  void UMyPlayerAttributeSet::CalModMagnitude(int ItemId,TArrayFAttributeModifier Modifiers) {if(!BuffItemsDataTable)return;// 获取DataTable的所有行TArrayFName RowNames BuffItemsDataTable-GetRowNames();// 遍历找到ItemId对应的装备for (const auto RowName : RowNames){FAttrModItemData* RowData BuffItemsDataTable-FindRowFAttrModItemData(RowName,FString(),true);if (RowData-ItemId ItemId){for(FAttributeModifier ModifierToCal:RowData-AttributeMods)//遍历ItemId对应的装备的所有增强属性{//对于每一个要增强的属性bool bIsFind{false};//先记录最终修改器里有没有这个属性for(FAttributeModifier Modifier:Modifiers){if(Modifier.AttributeName.Equals(ModifierToCal.AttributeName))//找到了对应的属性{bIsFindtrue;//标记为找到了if(ModifierToCal.bIsPercent)//根据是否百分比增幅累加对应值{Modifier.PercentValueModifierToCal.PercentValue;UE_LOG(LogTemp,Warning,TEXT(Percent%f),Modifier.PercentValue);}else{Modifier.AddedValueModifierToCal.AddedValue;}//UE_LOG(LogTemp,Warning,TEXT(ModName%s PercentValue%f AddedValue%f),*Modifier.AttributeName,Modifier.PercentValue,Modifier.AddedValue);break;}}if(!bIsFind){//要保证没用到的值为0Modifiers.Add(ModifierToCal);}//UE_LOG(LogTemp,Warning,TEXT(ModToCal--ModName%s PercentValue%f AddedValue%f),*ModifierToCal.AttributeName,ModifierToCal.PercentValue,ModifierToCal.AddedValue);//UE_LOG(LogTemp,Warning,TEXT(OnEveryModAttribute));}//TODO:赋予能力}} }void UMyPlayerAttributeSet::ApplyModifier(FAttributeModifier Modifier) {if(Modifier.AttributeName.Equals(FString(MaxHealth))){FinalModAttribute(Modifier,MaxHealth);return;}if(Modifier.AttributeName.Equals(FString(MaxStamina))){FinalModAttribute(Modifier,MaxStamina);return;}if(Modifier.AttributeName.Equals(FString(BaseAttack))){FinalModAttribute(Modifier,BaseAttack);return;}if(Modifier.AttributeName.Equals(FString(BaseStagger))){FinalModAttribute(Modifier,BaseStagger);return;}if(Modifier.AttributeName.Equals(FString(BaseResistance))){FinalModAttribute(Modifier,BaseResistance);return;}if(Modifier.AttributeName.Equals(FString(CRT))){FinalModAttribute(Modifier,CRT);return;}if(Modifier.AttributeName.Equals(FString(CriticalDamage))){FinalModAttribute(Modifier,CriticalDamage);return;}UE_LOG(LogTemp,Warning,TEXT(ApplyModifier--Attribute is mistake)); }void UMyPlayerAttributeSet::FinalModAttribute(const FAttributeModifier Modifier,FGameplayAttributeData Attribute) {//UE_LOG(LogTemp,Warning,TEXT(FinalModAttribute--ModName%s PercentValue%f AddedValue%f),*Modifier.AttributeName,Modifier.PercentValue,Modifier.AddedValue);Attribute.SetBaseValue((Attribute.GetBaseValue()Modifier.AddedValue)*(1Modifier.PercentValue));Attribute.SetCurrentValue(Attribute.GetBaseValue()); } 3.4 测试 测试调用 ModAttribute(TArrayint {100}); 对应的测试数值 修改前后属性变化 4 背包模块中添加装备栏 暂定三个装备栏头胸甲鞋先不管设定 还是FMyItemInfo类型的数组012记录 先把组件创建在脚本里 //MyPlayer.h UPROPERTY(EditAnywhere, BlueprintReadWrite) UBagManager* BagManager; //MyPlayer.cpp AMyPlayer::AMyPlayer(){......BagManagerCreateDefaultSubobjectUBagManager(TEXT(BagManager));//...... } 更新以下Bag保存相关的函数例如 Save-SetItemsInBag(ItemsInBag,Armor); BeginPlay里调用计算并修改属性逻辑 TArrayint ModsId{}; for(FMyItemInfo info:BagManager-Armor) {ModsId.Add(info.ItemId); } CastUMyPlayerAttributeSet(AttributeSet)-ModAttribute(ModsId); BagUI里添加一个栏位显示相关信息 运行测试 还好没啥问题属性也对不然今天不知道要调到啥时候了之后的装备和卸下装备的操作和逻辑就简单了只要修改Armor数组然后重新调用ModAtrribute就行了
http://www.hkea.cn/news/14582648/

相关文章:

  • 建个网站怎么做推广做外卖系统哪家网站做的好
  • 网站主办者单位有效证件电子件是什么代运营是如何骗人的
  • 长春如何建立一个平台网站wordpress书本目录模板
  • 七星网络网站wordpress文字转图插件
  • 营销型网站设计注意北京东道设计公司官网
  • 东莞seo优化指南企业搜索引擎优化
  • 手机网站建设价格明细表网站设置支付宝在线支付
  • 网站的风格对比信息表东南亚网站建设市场
  • 设计专业考研平面素材网站房产网站开发
  • 中交上航建设网站哈尔滨的互联网公司
  • 网站建设开源做门户网站主要技术哪一块
  • 扎实做好机构编制网站建设东莞网站建设信科
  • 湛江模板建站公司中国消防公众号关注
  • 如何自学3d建模搜索引擎优化简称
  • sns网站设计国内最好的网站建设公司
  • 怎样用vps做网站六盘水市城乡建设局网站
  • 网站建设的一些原理网站友链是什么情况
  • 长春公司推广网站爱站关键词挖掘软件
  • 可以做哪些有趣的网站网站推广广告语
  • 用上海注册的公司建的网站兼职做一篇微信的网站
  • 网站软件定制开发公司响应式网站管理系统
  • 网站自己做还是用程序wordpress备案
  • 如何建单页网站机电建设工程施工网站
  • 矿区网站建设网站审核时间
  • 找人给公司做网站去哪找二七郑州网站建设
  • 丹阳做公司网站的哪个网站可以做兼职笔译
  • 成都做网站的公司对电子商务网站与建设的心得
  • 如何网站专题策划建设 网站工作汇报
  • 手机咋建网站沈阳高端网站
  • 网站主持人长沙建网站的