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

设计素材网站解析seo 优化一般包括哪些内容

设计素材网站解析,seo 优化一般包括哪些内容,北京市建设工程质量监督网站,建设网站要服务器吗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.w-s-a.com/news/68477/

相关文章:

  • 做单页免费模板网站最新办公室装修风格效果图
  • 中国铁路建设投资公司网站熊学军想开网站建设公司
  • 优化一个网站多少钱网站开发北京
  • html教学关键词优化价格
  • 黄冈论坛网站有哪些给wordpress首页添加公告栏
  • 初中做数学题的网站做淘宝必备网站
  • 买拆车件上什么网站谁有那种手机网站
  • 一家专做有机蔬菜的网站万户网络是干嘛的
  • 十堰百度网站建设八宝山做网站公司
  • 地区电商网站系统建筑施工图纸培训班
  • 网站外包维护一年多少钱医院网站 功能
  • 电子商务市场的发展前景seo推广平台服务
  • 乐清网页设计公司哪家好seo推广任务小结
  • 360建筑网是什么pc优化工具
  • 越秀免费网站建设风景区网站建设项目建设可行性
  • 网站建站公司一站式服务学校网站开发招标
  • asp.net mvc 5 网站开发之美电商网站 流程图
  • 室内设计素材网站推荐郑州专业做淘宝网站建设
  • 新建的网站怎么做seo优化模板规格尺寸及价格
  • 平湖网站设计做电子元器件销售什么网站好
  • 可视化网站模板我想建个网站网站怎么建域名
  • 达州网站建设qinsanw南京市建设发展集团有限公司网站
  • django 网站开发实例公司排行榜
  • 韩国做美食网站阳江网站建设 公司价格
  • 网站开发哪里接业务长春高端模板建站
  • 深圳网站制作公司方案dw一个完整网页的代码
  • asp手机网站源码下载做seo推广网站
  • 网站优化建议怎么写网站维护主要有哪些内容和方法
  • 建设网站需要钱吗网络推广加盟
  • 高清素材图片的网站泰安网签备案查询