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

网站建设的核心是免费自助建站怎么样

网站建设的核心是,免费自助建站怎么样,私域流量运营,徐州网站建设公司哪个好1.创建该类的子类 然后重启项目#xff0c;再创建子类的子类 再创建一个UI用于敌人 创建一个接口 2.然后打开Warriorplayer和EnemyCharacter实现ui组件 //UIUPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category Combat, meta (AllowPrivateAccess 再创建子类的子类 再创建一个UI用于敌人 创建一个接口 2.然后打开Warriorplayer和EnemyCharacter实现ui组件 //UIUPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category Combat, meta (AllowPrivateAccess true))UPlayerUIComponent* PlayerUIComponent; PlayerUIComponent CreateDefaultSubobjectUPlayerUIComponent(TEXT(PlayerUIComponent)); UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category UI)UEnemyUIComponent* EnemyUIComponent; EnemyUIComponent CreateDefaultSubobjectUEnemyUIComponent(EnemyUIComponent); 3.打开PawnUIInterface public:virtual UPawnUIComponent* GetPawnUIComponent() const 0; 打开CHaracterBase继承此接口 //Begin IUIPawnInterface Interfacevirtual UPawnUIComponent* GetPawnUIComponent() const override;//End IUIPawnInterface Interface UPawnUIComponent* ACharacterBase::GetPawnUIComponent() const {return nullptr; } 然后打开WarriorPlayer做同样的事 //Begin IUIPawnInterface Interfacevirtual UPawnUIComponent* GetPawnUIComponent() const override;//End IUIPawnInterface Interface UPawnUIComponent* AWarriorPlayer::GetPawnUIComponent() const {return PlayerUIComponent; } 打开EnemyBase做同样的事 //Begin IUIPawnInterface Interfacevirtual UPawnUIComponent* GetPawnUIComponent() const override;//End IUIPawnInterface Interface UPawnUIComponent* AEnemyBase::GetPawnUIComponent() const {return EnemyUIComponent; } 4.接下来对数值进行广播 打开PawnUIComponent.h,创建好委托 //当值的百分比发生变化时 DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnPercentChangedDelegate, float, NewPercent);UPROPERTY(BlueprintAssignable)FOnPercentChangedDelegate OnCurrentHealthChanged; 然后进入PlayerUIComponent.h为Rage单独创建一个委托因为这个东西是只有玩家才有怪物没有 UPROPERTY(BlueprintAssignable)FOnPercentChangedDelegate OnCurrentRageChanged; 然后进入PawnUiInterface.h virtual UPlayerUIComponent* GetPlayerUIComponent() const; UPlayerUIComponent* IPawnUIInterface::GetPlayerUIComponent() const {return nullptr; } 进入WarriorPlayer覆写此函数 virtual UPlayerUIComponent* GetPlayerUIComponent() const override; UPlayerUIComponent* AWarriorPlayer::GetPlayerUIComponent() const {return PlayerUIComponent; } 接着进入XMBAttributeSet,先创建一个用于存储当前Pawn对象的变量 private://用于存储当前的PawnUIInterfaceTWeakInterfacePtrIPawnUIInterface CachedPawnUIInterface; 然后需要在数值发生变化时先获取到当前对象的PawnUIComponent void UXMBAttributeSet::PostGameplayEffectExecute(const struct FGameplayEffectModCallbackData Data) { //获取到目标的UIComponent则可以用广播if (!CachedPawnUIInterface.IsValid()){CachedPawnUIInterface TWeakInterfacePtrIPawnUIInterface(Data.Target.GetAvatarActor());}checkf(CachedPawnUIInterface.IsValid(), TEXT(%s didnt implement IPawnUIInterface),*Data.Target.GetAvatarActor()-GetActorNameOrLabel());UPawnUIComponent* PawnUIComponent CachedPawnUIInterface-GetPawnUIComponent();checkf(PawnUIComponent,TEXT(Couldnt extrac a PawnUiComponent from %s),*Data.Target.GetAvatarActor()-GetActorNameOrLabel()); } 然后在生命发生变化时 //Data.EvaluatedData.Attribute是当前被修改的属性if (Data.EvaluatedData.Attribute GetCurrentHealthAttribute())//找到正在修改的属性{const float NewCurrentHealth FMath::Clamp(GetCurrentHealth(),0.f, GetMaxHealth());SetCurrentHealth(NewCurrentHealth);//广播变化后的生命PawnUIComponent-OnCurrentHealthChanged.Broadcast(GetCurrentHealth()/GetMaxHealth());} 当体力发生变化时需要现货区到玩家的UIComponent if (UPlayerUIComponent* PlayerUIComponent CachedPawnUIInterface-GetPlayerUIComponent()){PlayerUIComponent-OnCurrentRageChanged.Broadcast(GetCurrentRage()/GetMaxRage());} 最后在设置当前生命后再广播一次当前生命 SetCurrentHealth(NewCurrentHealth);const FString DebugString FString::Printf(TEXT(OldHealth : %f, damage Done :%f, NewCurrentHealth:%f),OldHealth,DamageDone,NewCurrentHealth);//将当前生命广播出去不管变没变化都要广播PawnUIComponent-OnCurrentHealthChanged.Broadcast(GetCurrentHealth()/GetMaxHealth()); 5.启动项目创建一个UserWidget的C类 然后创建两个函数 protected:virtual void NativeOnInitialized() override;UFUNCTION(BlueprintImplementableEvent, meta (DisplayName On Owning Player UI Component Initialized))void BP_OnOwningPlayerUIComponentInitialized(UPlayerUIComponent* OwningPlayerUIComponent); void UWarriorWidgetBase::NativeOnInitialized() {Super::NativeOnInitialized();if (IPawnUIInterface* PawnUIInterface CastIPawnUIInterface(GetOwningPlayerPawn())){if (UPlayerUIComponent* PlayerUIComponent PawnUIInterface-GetPlayerUIComponent()){BP_OnOwningPlayerUIComponentInitialized(PlayerUIComponent);}}} 6.这一步要进行敌人widget的初始化首先进入pawnuiinterface为敌人写一个获取uicompnent的函数 virtual UEnemyUIComponent* GetEnemyUIComponent() const; UEnemyUIComponent* IPawnUIInterface::GetEnemyUIComponent() const {return nullptr; } 然后进入EnemyBase内进行覆写 virtual UEnemyUIComponent* GetEnemyUIComponent() const; UEnemyUIComponent* AEnemyBase::GetEnemyUIComponent() const {return EnemyUIComponent; } 再回到WarriorWidgetBase创建两个函数 public://为敌人创建的UFUNCTION(BlueprintCallable)void InitEnemyCreatedWidget(AActor* OwningEnemyActor); protected: UFUNCTION(BlueprintImplementableEvent, meta (DisplayName On Owning Enemy UI Component Initialized))void BP_OnOwningEnemyUIComponentInitialized(UEnemyUIComponent* OwningEnemyUIComponent); void UWarriorWidgetBase::InitEnemyCreatedWidget(AActor* OwningEnemyActor) {if (IPawnUIInterface* PawnUIInterface CastIPawnUIInterface(OwningEnemyActor)){//获取Enemy的UIComponentUEnemyUIComponent* EnemyUIComponent PawnUIInterface-GetEnemyUIComponent();checkf(EnemyUIComponent, TEXT(Failed to extrac an EnemyUIComponent from %s),*OwningEnemyActor-GetActorNameOrLabel());BP_OnOwningEnemyUIComponentInitialized(EnemyUIComponent);} }
http://www.hkea.cn/news/14403304/

相关文章:

  • 58同城网站模板下载外链发布的平台最好是
  • 网站搭建说明flash网站设计师
  • 建设网站技术解决方案企业获客方式
  • 做网站要在工商备案吗17.zwd一起做网站
  • 购物网站运营WordPress百度智能小程序
  • 网站编写教程wordpress4.9漏洞利用
  • 梅州兴宁网站建设网络营销策略名词解释
  • 福州市工程建设质量管理网站微信 分享网站开发
  • 网站如何续费物流企业的网站模板
  • 查看WordPress网站插件如何自己办网站
  • 淘宝网站的建设目的网络营销推广外包平台
  • 专业官方网站建设phpstudy怎么做网站
  • 怎样写网站文案查询关键词网站
  • 电商网站建设常见问题网站建设 紧急检查工作
  • 制作一个自适应网站源码本地网站搭建
  • 培训行业网站建设求职简历模板2021
  • 网站运营方案设计网站的建设思路
  • 平价建网站格公众号的网站怎么做的
  • 长春联通网站备案小广告怎么做
  • 刚做的网站关键字能搜到么qq个人邮箱登录入口
  • 建立公司网站步骤wordpress轮播插件下载
  • 自己建立网站怎么建福田蒙派克4s店电话和地址
  • wordpress搬站换空间wordpress邮件发布
  • 免费网站空间 - 百度wordpress常用插件汇总 知更鸟
  • 区块链网站用vue.js做怎么样移动宽带怎么网上续费
  • 做企业网站制作郑佩佩 最新消息
  • 网课网站桂阳县网站建设公司哪家好
  • 旅游网站建设主要工作手机响应式网站开发模板之家
  • 网站建设服务器主板1150针河南企业网络推广方法
  • 小程序同步wordpress佛山百度seo代理