这里梳理一下迄今在GAS里和建造系统中用到的UI:(仅供个人学习参考使用)
状态信息显示:
1、简单版,在UE4 技能系统(GAS插件的使用) 02--MeleeAttackAbility 近战攻击技的UI部分有讲,这里再整理一遍
01、创建一个Widget(UserInterface->Blueprint Widget),里面放入一个Progressbar,设置好大小,颜色,百分比等属性:
02、再在这个Wiget的Graph中添加一个自定义事件,用于设置该ProgressBar的百分比属性
03、这个是在敌人头顶上显示的,所以在BP_BaseEnemy中添加一个WidgetComponent,调整位置
在Detail面板中指定Widgetclass为之前创建的HealthBar,Space为ScreenSpace,以便UI的朝向始终正对玩家
2、中级版:在UE4 技能系统(GAS插件的使用) 04--Health Regen Ability生命回复技中没有讲,这里补上。这里设计一个球形的状态显示UI,另外不做冒泡效果,我日后用不到
01、需要导入材质贴图(网上找英文原版教程,有提供),创建一个球形的材质M_GlassBall,如果懒省事的话可以直接用商城材质包,
02、拖入贴图,设置M_GlassBall节点属性:UserInterface与Transluncent(半透明的),需要在颜色节点上乘以红色
03、要实现生命值从上往下降低那种效果,需要用到LinearGradient节点,该节点表示从0,然后1-x节点使之变为1,下面的逻辑是如果大于Percentage的部分为白色,小于Percentage的部分为红色,注意按下s键可以设置一个参数,对Liquid节点按下右键,将它也设置为一个参数,这样子就可以在该材质的实例中修改Percentage,和Color值了
04、创建材质的实例MI_Health,MI_Mana,MI_Strength,在里面设置想要表现的颜色例如红蓝黄
05、创建一个Widget,在里面就可以添加一个Image,调整参数
06、同样的在该Widget中添加一个自定义事件来设置Percentage,由于是对Material进行设置,需要先获取GlassBall的Material,然后set Scalar parameter Value指定参数Percentage进行设置
07、创建Widget,命名为WPB_PrimaryUI,这个是主要的UI界面,在里面拖入创建的GlassBar Widget,
其中Image_69是视频所带资源
调整Image_69
调整设置三个GlassBall位置
08、在WPB_PrimaryUI的Graph中添加初始化函数,用于初始化三个不同图标的颜色,在EventConstruct中调用CreateDynamicMaterialInstance来使用04创建的三个材质实例,SetBrushFromMaterial来设置GlassBall的颜色
09、在PlayerController中需要将WBP_PrimaryUI添加到主视口中
09、最终完成调用是在BP_BaseCharacter的派生类,BP_PlayerPawn中:
怎么样到这一步呢?其实逻辑比较清晰:UBaseAttributeSet里面定义一个多播类型的委托
//创建一个Multicast多播类型的委托,里面传入两个参数
DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FOnHealthChangeDelegate, float, Health, float, MaxHealth);FOnHealthChangeDelegate OnHealthChange;
FOnHealthChangeDelegate OnManaChange;
FOnHealthChangeDelegate OnStrengthChange;
但数值发生变化时,会调用PostGameplayEffectExecute,在里面将发生改变的数据广播出去
virtual void PostGameplayEffectExecute(const struct FGameplayEffectModCallbackData& Data)override;
有广播就要有接收,这里就通过BaseChracter来接收,完成动态绑定
当委托事件发生时,就会调用BaseCharacter中绑定的函数,最终通知蓝图事件调用
带冷却提示的技能图标的制作和堡垒之夜建造系统中的图标制作放到下一篇