北京哪里做网站好2022年热点新闻事件

news/2025/10/8 10:28:34/文章来源:
北京哪里做网站好,2022年热点新闻事件,设计网站建,网站源码下载教程在上一篇文章里#xff0c;制作了显示血量和蓝量的ui#xff0c;并且还将ui和获取数据使用的控制器层创建出来并初始化成功。现在只有主用户控件上面被添加了控制器层#xff0c;还未给每个用户控件赋予控制器层。接下来要实现对属性的广播功能#xff0c;在属性值变化的时…在上一篇文章里制作了显示血量和蓝量的ui并且还将ui和获取数据使用的控制器层创建出来并初始化成功。现在只有主用户控件上面被添加了控制器层还未给每个用户控件赋予控制器层。接下来要实现对属性的广播功能在属性值变化的时候能够在蓝图中获取到数值的变化并更新到用户控件上面。 使用广播设置初始值 首先在控制器层里面添加一个函数 virtual void BroadcastInitialValues();这个函数用于广播初始化函数。我们上一文章里基于控制器层类创建了一个子类专门用于Overlay的在里面复写这个函数 public:virtual void BroadcastInitialValues() override;接下来就是重点我们将以委托的形式设置每个属性的广播功能这里就需要用到委托对应的函数。不清楚的小伙伴可以看下这里 一文理解透UE委托Delegate 这里使用了动态多播委托函数绑定下面是实现委托的函数DelegateName 首字母必须以F开头。 一下是定义了获取血量的委托返回一个参数就是当前的血量浮点数。 DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnHealthChangedSignature,float, NewHealth);接下来定义一个变量实现对回调的引用 UPROPERTY(BlueprintAssignable, CategoryGAS|Attributes)FOnHealthChangedSignature FOnHealthChanged;然后最后通过广播形式将数据广播出去 FOnHealthChanged.Broadcast(50.f);当前我们需要实际的血量数值所以广播出去的就是从AttributeSet里面获取到的值 const UAttributeSetBase* AttributeSetBase CastCheckedUAttributeSetBase(AttributeSet);OnHealthChanged.Broadcast(AttributeSetBase-GetHealth());OnMaxHealthChanged.Broadcast(AttributeSetBase-GetMaxHealth());函数有了需要有个地方调用实例化这个函数我们是在HUD类里面实例化的那就在实例化完成后面调用。也就是MyHUD.cpp里面的InitOverlay()里面这个顺序不能错首先需要设置控制器层这时会触发蓝图里面可以调用的设置控制器层回调通知用户控件会以此来绑定广播回调。然后再广播初始的值用户控件里就实现了对值的初始化设置。 OverlayWidgetController GetOverlayWidgetController(WidgetControllerParams); //获取控制器层OverlayWidget-SetWidgetController(OverlayWidgetController); //设置用户控件的控制器层OverlayWidgetController-BroadcastInitialValues(); //初始化广播这样设置完成以后打开UE在设置的WBP_Overlay里面在上一章最后设置的设置完成控制器层对象后的回调中将控制器层对象传递给需要显示的用户控件节点。 做到这一步我们在需要同步数据的UI上面就都可以获取到控制器层对象。接着我们要将Overlay的控制器层类公开给蓝图。 UCLASS(BlueprintType, Blueprintable) class AURA_API UOverlayWidgetController : public UMyWidgetController直接在类上面的UCLASS()内添加上两个参数。 BlueprintType 将此类公开为可用于蓝图中的变量的类型。 Blueprintable 将此类公开为用于创建蓝图的可接受基类。默认为NotBlueprintable除非继承时就并非如此。此说明符由子类继承。 设置完成这两项我们就可以把控制器层对象转换为控制器层类的实例了。 为了方便后面的工作推荐不要直接使用c的类通过蓝图创建一个c的基类去使用。 将HUD里面的控制器层类的引用修改成蓝图的。 在进度条的蓝图基类WBP_GlobeProgressBar中添加一个函数用于设置进度条百分比接收一个参数 之前在OverlayWidget里面将在c里面生成的控制器层对象传递给了对应的用户组件。我们在血量控件中也可以使用WidgetControllerSet通知获得通知后将变量保存。 之前我们在OverlayWidgetController里面添加了对血量和最大血量的广播所以在蓝图里我们可以实现绑定血量变化。在数值变化后可以通过调用设置进度条百分比进行进度条设置。 顺便也绑定最大血量。 监听数值的变化 上面我们实现通过广播的形式对用户控件内的值进行初始化还未实现对数值变化后触发广播更新ui显示。 我们需要通过使用AbilitySystemComponent-GetGameplayAttributeValueChangeDelegate()来注册一个监听一个值的变化如果监听的数值变化了接着将变化后的数值进行广播。比如下面就是监听血量属性是否变化 AbilitySystemComponent-GetGameplayAttributeValueChangeDelegate(AttributeSetBase-GetHealthAttribute())为了区分开我们需要在控制器层类里面新加一个函数专门用来注册监听数据变化回调的。 virtual void BindCallbacksToDependencies() override;接着创建两个保护类型的函数用于监听到数值变化后的回调函数 protected:void HealthChanged(const FOnAttributeChangeData Data) const;void MaxHealthChanged(const FOnAttributeChangeData Data) const;接着在绑定监听函数内实现监听 void UOverlayWidgetController::BindCallbacksToDependencies() {const UAttributeSetBase* AttributeSetBase CastCheckedUAttributeSetBase(AttributeSet);AbilitySystemComponent-GetGameplayAttributeValueChangeDelegate(AttributeSetBase-GetHealthAttribute()).AddUObject(this, UOverlayWidgetController::HealthChanged);AbilitySystemComponent-GetGameplayAttributeValueChangeDelegate(AttributeSetBase-GetMaxHealthAttribute()).AddUObject(this, UOverlayWidgetController::MaxHealthChanged);}在数值变化时就会触发去调用Changed函数我们只需要在changed函数内将数值广播给蓝图即可。 void UOverlayWidgetController::HealthChanged(const FOnAttributeChangeData Data) const {OnHealthChanged.Broadcast(Data.NewValue); }void UOverlayWidgetController::MaxHealthChanged(const FOnAttributeChangeData Data) const {OnMaxHealthChanged.Broadcast(Data.NewValue); }最后需要找一个地方调用监听函数绑定我选在了HUD对初始化数值调用之后 OverlayWidget-SetWidgetController(OverlayWidgetController); //设置用户控件的控制器层OverlayWidgetController-BroadcastInitialValues(); //初始化广播的值OverlayWidgetController-BindCallbacksToDependencies(); //绑定监听数值变化接下来按照之前的方式将蓝的设置添加上这里不在编写实现因为和血量的方式一行按照上面一步步来即可。下面列一下代码。 控制器层代码 MyWidgetController.h // 版权归暮志未晚所有。#pragma once#include CoreMinimal.h #include AbilitySystemComponent.h #include UObject/NoExportTypes.h #include MyWidgetController.generated.hclass UAttributeSet; class UAbilitySystemComponent;/*** 生成用户控件控制器的结构体需要四项内容去生成。*/ USTRUCT(BlueprintType) struct FWidgetControllerParams {GENERATED_BODY()FWidgetControllerParams(){}FWidgetControllerParams(APlayerController* PC, APlayerState* PS, UAbilitySystemComponent* ASC, UAttributeSet* AS): PlayerController(PC),PlayerState(PS),AbilitySystemComponent(ASC),AttributeSet(AS){}UPROPERTY(EditAnywhere, BlueprintReadWrite)TObjectPtrAPlayerController PlayerController nullptr;UPROPERTY(EditAnywhere, BlueprintReadWrite)TObjectPtrAPlayerState PlayerState nullptr;UPROPERTY(EditAnywhere, BlueprintReadWrite)TObjectPtrUAbilitySystemComponent AbilitySystemComponent nullptr;UPROPERTY(EditAnywhere, BlueprintReadWrite)TObjectPtrUAttributeSet AttributeSet nullptr; };/*** 用户控件控制器层用户控件可从控制器层更新数据显示以及为控制器层提供输入。*/ UCLASS() class AURA_API UMyWidgetController : public UObject {GENERATED_BODY()public:UFUNCTION(BlueprintCallable)void SetWidgetControllerParams(const FWidgetControllerParams WCParams);virtual void BroadcastInitialValues(); //广播初始化的值virtual void BindCallbacksToDependencies(); //绑定数值变动后回调的广播protected:UPROPERTY(BlueprintReadOnly, CategoryWidgetController)TObjectPtrAPlayerController PlayerController;UPROPERTY(BlueprintReadOnly, CategoryWidgetController)TObjectPtrAPlayerState PlayerState;UPROPERTY(BlueprintReadOnly, CategoryWidgetController)TObjectPtrUAbilitySystemComponent AbilitySystemComponent;UPROPERTY(BlueprintReadOnly, CategoryWidgetController)TObjectPtrUAttributeSet AttributeSet;}; MyWidgetController.cpp // 版权归暮志未晚所有。#include UI/WidgetController/MyWidgetController.hvoid UMyWidgetController::SetWidgetControllerParams(const FWidgetControllerParams WCParams) {PlayerController WCParams.PlayerController;PlayerState WCParams.PlayerState;AbilitySystemComponent WCParams.AbilitySystemComponent;AttributeSet WCParams.AttributeSet; }void UMyWidgetController::BroadcastInitialValues() { }void UMyWidgetController::BindCallbacksToDependencies() { } OverlayWidgetController.h // 版权归暮志未晚所有。#pragma once#include CoreMinimal.h #include UI/WidgetController/MyWidgetController.h #include OverlayWidgetController.generated.hDECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnHealthChangedSignature,float, NewHealth); DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnMaxHealthChangedSignature,float, NewMaxHealth); DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnManaChangedSignature,float, NewMana); DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnMaxManaChangedSignature,float, NewMaxMana);/*** 屏幕覆盖用户控件控制器层基类继承与用户控件控制器*/ UCLASS(BlueprintType, Blueprintable) class AURA_API UOverlayWidgetController : public UMyWidgetController {GENERATED_BODY()public:virtual void BroadcastInitialValues() override;virtual void BindCallbacksToDependencies() override;UPROPERTY(BlueprintAssignable, CategoryGAS|Attributes)FOnHealthChangedSignature OnHealthChanged;UPROPERTY(BlueprintAssignable, CategoryGAS|Attributes)FOnMaxHealthChangedSignature OnMaxHealthChanged;UPROPERTY(BlueprintAssignable, CategoryGAS|Attributes)FOnManaChangedSignature OnManaChanged;UPROPERTY(BlueprintAssignable, CategoryGAS|Attributes)FOnMaxManaChangedSignature OnMaxManaChanged;protected:void HealthChanged(const FOnAttributeChangeData Data) const;void MaxHealthChanged(const FOnAttributeChangeData Data) const;void ManaChanged(const FOnAttributeChangeData Data) const;void MaxManaChanged(const FOnAttributeChangeData Data) const; }; OverlayWidgetController.cpp // 版权归暮志未晚所有。#include UI/WidgetController/OverlayWidgetController.h#include AbilitySystem/AttributeSetBase.hvoid UOverlayWidgetController::BroadcastInitialValues() {const UAttributeSetBase* AttributeSetBase CastCheckedUAttributeSetBase(AttributeSet);OnHealthChanged.Broadcast(AttributeSetBase-GetHealth());OnMaxHealthChanged.Broadcast(AttributeSetBase-GetMaxHealth());OnManaChanged.Broadcast(AttributeSetBase-GetMana());OnMaxManaChanged.Broadcast(AttributeSetBase-GetMaxMana()); }void UOverlayWidgetController::BindCallbacksToDependencies() {const UAttributeSetBase* AttributeSetBase CastCheckedUAttributeSetBase(AttributeSet);AbilitySystemComponent-GetGameplayAttributeValueChangeDelegate(AttributeSetBase-GetHealthAttribute()).AddUObject(this, UOverlayWidgetController::HealthChanged);AbilitySystemComponent-GetGameplayAttributeValueChangeDelegate(AttributeSetBase-GetMaxHealthAttribute()).AddUObject(this, UOverlayWidgetController::MaxHealthChanged);AbilitySystemComponent-GetGameplayAttributeValueChangeDelegate(AttributeSetBase-GetManaAttribute()).AddUObject(this, UOverlayWidgetController::ManaChanged);AbilitySystemComponent-GetGameplayAttributeValueChangeDelegate(AttributeSetBase-GetMaxManaAttribute()).AddUObject(this, UOverlayWidgetController::MaxManaChanged);}void UOverlayWidgetController::HealthChanged(const FOnAttributeChangeData Data) const {OnHealthChanged.Broadcast(Data.NewValue); }void UOverlayWidgetController::MaxHealthChanged(const FOnAttributeChangeData Data) const {OnMaxHealthChanged.Broadcast(Data.NewValue); }void UOverlayWidgetController::ManaChanged(const FOnAttributeChangeData Data) const {OnManaChanged.Broadcast(Data.NewValue); }void UOverlayWidgetController::MaxManaChanged(const FOnAttributeChangeData Data) const {OnMaxManaChanged.Broadcast(Data.NewValue); } 多人模式调试UI显示 在运行下拉中将人数修改为2 然后将客户端同时作为服务器使用 接着会发现运行了两个实例并且拥有相同的血量和蓝量 接下来控制一个角色去吃掉药瓶会发现她的血和蓝都产生了变化而另外一个没有变化 到这里功能实现了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/931363.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025 年最新波形护栏厂家推荐排行榜:聚焦国内优质厂商技术优势与服务能力,助力采购方精准选型 三波/二波/双波/喷塑/公路/热浸锌/浸塑波形护栏厂家推荐

当前道路交通建设持续推进,波形护栏作为保障道路安全的关键设施,其质量直接关系到公众出行安全与道路运营稳定性。但市场上厂家数量繁杂,部分厂商存在技术落后、原材料劣质、质量检测缺失等问题,导致产品耐冲击性差…

建立网站要钱吗学东西的网站

目录 String类型 Hash类型 List类型 Set类型 SortedSet类型 全局命令 集合中的交并补 String类型 //set,get型set key valueget key//设置一个10s后过期的键值对 ex单位是sset key value ex 10 或者 setex key 10 value//设置一个10ms后过期的键值对 px单位是msset key…

linux 中paste命令实现按照指定列数输出文件

001、[root@localhost test]# seq -w 12 01 02 03 04 05 06 07 08 09 10 11 12 [root@localhost test]# seq -w 12 | paste -d " " - - ## 指定列数输出 01 02 03 04 05 06 07 08 09 10 11 12 [root@lo…

Transformer原理解析及中文项目实践(微课视频版)

本书深入浅出地介绍了深度学习中的序列模型及其发展历程,重点讲解了Transformer架构及其变体的原理与实战应用。全书共5章,旨在帮助读者从理论基础到实战应用,全面掌握Transformer技术。 第1章详细介绍RNN和LSTM的原…

2025 年章丘二手磁选机服务公司最新推荐榜单:含回收置换 / 全型号设备及优质售后企业权威排行

在矿产加工与原料提纯行业持续发展的当下,二手磁选机因性价比优势成为众多企业降低成本的重要选择,但市场乱象却让采购者陷入困境。部分商家设备型号不全,无法满足不同产能企业需求;品牌选择狭窄,限制采购灵活性;…

Navicat配置MySQL自动备份

【自动运行】-> 【新建批处理作业】选择备份->目标数据库->添加工作设置任务计划触发器输入登录密码点击【开始】测试【还原备份】备份文件位置C:\Users\用户名\Documents\Navicat\MySQL\Servers\连接名\数据…

云南建设人力资源网站精准推广引流5000客源

来源:DataFunTalk导读:推荐系统技术,总体而言,与 NLP 和图像领域比,发展速度不算太快。不过最近两年,由于深度学习等一些新技术的引入,总体还是表现出了一些比较明显的技术发展趋势。这篇文章试…

营销型网站建设中坚站汽配外贸论坛

记录一些好的文字,希望可以和大家共勉。 一个人真正的成长,是战胜自己 不知你是否有这样的经历:曾经觉得一道题很难,但解出来后,发现其实并没那么难;曾经觉得一件事是不可能完成的,但历经千辛万…

ROS 2机器人操作系统与Gazebo机器人仿真

本书全面地介绍了ROS 2机器人操作系统与Gazebo机器人仿真技术,内容涵盖了机器人技术的基础知识、ROS 2的运行原理、基本操作与编程方法,以及新一代Gazebo仿真工具的使用,通过详细的操作步骤解析和丰富的实践案例,帮…

2025 年次氯酸钠发生器厂家最新推荐榜:覆盖电解法 / 食盐电解等类型,聚焦专利技术与成本优势的品牌深度解析水厂/大型/小型/食盐电解产生次氯酸钠发生器厂家推荐

随着水处理消毒需求的持续增长,次氯酸钠发生器因现场制备、安全环保的特性,成为水厂、污水处理厂等场景的关键设备。但当前市场乱象凸显:部分设备盐耗、电耗过高,长期运行成本居高不下;技术储备不足导致设备适配性…

2025 年最新铝镁锰板厂商口碑排行榜:实力厂家推荐及 100 万㎡工程案例与 20 年质保深度解读铝镁锰板屋面板/保温板/卷/墙面板 铝镁锰板金属屋面板

在当前建筑材料市场中,铝镁锰板因轻质、耐用、美观等优势,已成为钢结构厂房、机场、体育馆等大型项目的核心材料。但随着市场需求增长,供应商数量激增,产品质量却呈现明显分化,部分厂商存在原材料以次充好、生产工…

2025 年二氧化氯发生器厂家最新推荐排行榜:电解式设备厂家综合实力测评及优质企业选购指南电解/电解法/电解食盐/电解盐二氧化氯发生器厂家推荐

随着我国水处理行业朝着精细化、智能化方向发展,消毒设备作为水质安全的关键环节,其性能与成本已成为水厂、污水处理厂、养殖企业等用户的核心关注点。当前市场上二氧化氯发生器品牌数量激增,既有深耕行业多年的老牌…

渔具网站建设策划书前言网络推广计划书范文

1.导入的excel模版 2.点击导入&#xff0c;显示excel导入弹窗 3.点击选择文件&#xff0c;会调用本地文件夹里面的excel文件 4.选中文件&#xff0c;点击 导入 html部分 <a-button type"primary" click"onImportXls">导入</a-button><…

郯城县网站建设网站域名查ip

(方式一 ) 通过QGis创建形状图层点 1、如下gif&#xff0c;演示了创建形状图层 2、如下gif&#xff0c;演示了在高德地图上&#xff0c;形状图层上添加点 3、如下gif&#xff0c;演示了对形状图层点查看详细信息 4、如下gif&#xff0c;演示了对形状图层点查看属性表&#xff0…

eclipes网站建设教程美艺网站建设

目录 目录的权限 目录的权限 1、可执行权限: 如果目录没有可执行权限, 则无法cd到目录中. 2、可读权限: 如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容. 3、可写权限: 如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件. 上面三个权限是…

那个网站点击率高做物流网站的图片素材

基于AFM的物质表面微观结构及力学性质表征仿真实验 说明&#xff1a; 本次实验为本科生《基础物理实验》课程中的虚拟实验部分&#xff0c;在虚拟实验平台中进行。 一、实验目的&#xff1a; 1. 掌握AFM的基本成像原理及系统结构&#xff1b; 2. 掌握AFM的基本操作技巧及操…

2025 年国内铝板厂家最新推荐排行榜:1-7 系主流铝板企业实力测评及优选指南1060/1100/3003/3004/5052/5083/6061/6063/6082铝板厂家推荐

随着工业制造、建筑装饰、交通运输等领域对铝板需求的持续增长,市场上铝板品牌数量激增,但产品质量、工艺水平与服务能力却存在显著差距。部分企业因原材料把控不严、生产设备落后,导致铝板出现尺寸偏差、表面瑕疵、…

Fedora 38 安装 perl-JSON RPM 包步骤(含依赖问题解决及附安装包)​

Fedora 38 安装 perl-JSON RPM 包步骤(含依赖问题解决及附安装包)​​perl-JSON​ 是一个 ​Perl 语言的模块,它的作用是让 Perl 程序能够 ​轻松地处理 JSON 格式的数据。一、先确认你系统是 Fedora 38 这个包名字…

2025 年染井吉野樱种植服务公司最新推荐排行榜:苗木分枝点规格详解与景观适配指南及优质企业榜单染井吉野樱花苗/五公分染井吉野樱/十公分染井吉野樱/染井吉野樱批发公司推荐

在当前染井吉野樱苗木采购与景观工程领域,分枝点规格混乱、适配性不足的问题愈发凸显,给采购方和项目实施带来诸多困扰。市场上苗木分枝点标注随意,缺乏统一标准,部分供应商忽视科学培育,导致苗木移栽后景观效果差…

完整教程:BUUCTF[ACTF2020 新生赛]Include 1题解

完整教程:BUUCTF[ACTF2020 新生赛]Include 1题解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas",…