温馨提示:这篇文章已超过386天没有更新,请注意相关的内容是否还可用!
摘要:在UE5的GAS开发中,P31阶段实现了将hud成功绑定在特定角色上的功能。这一创新举措简化了游戏界面与角色的互动,增强了游戏体验的真实感和沉浸感。通过这一技术实现,玩家能够更直观地获取角色信息,进一步提升游戏操作的便捷性和流畅性。
WidgetController中的OverlayAuraWidgetController新建及HUD初始状态修改
在WidgetController
内,我们新建一个OverlayAuraWidgetController
以修改HUD
的初始状态。
AuraHUD类定义
确保在您的项目中正确设置版权信息后,对AuraHUD
类进行如下定义:
#pragma once #include "CoreMinimal.h" #include "GameFramework/HUD.h" #include "UI/Widget/AuraUserWidget.h" #include "UI/WidgetController/OverlayAuraWidgetController.h" #include "AuraHUD.generated.h" UCLASS() class MYGAS_API AAuraHUD : public AHUD { GENERATED_BODY() protected: public: UPROPERTY() TObjectPtr OverlayWidget; UPROPERTY(EditAnywhere) TSubclassOf OverlayWidgetClass; UPROPERTY(EditAnywhere) TSubclassOf OverlayAuraWidgetControllerClass; UOverlayAuraWidgetController* GetOverlayAuraWidgetController(const FWidgetControllerParams& WCParams); void InitOverlay(APlayerController* PC, APlayerState* PS, UAbilitySystemComponent* ASC, UAttributeSet* AS); private: TObjectPtr OverlayAuraWidgetController; // 用于存储OverlayAuraWidgetController的引用 };
AuraHUD类的实现(AuraHUD.cpp)
确保您的版权信息已填写后,实现AAuraHUD
类的相关函数:
#include "UI/HUD/AuraHUD.h" // 确保包含正确的头文件路径 UOverlayAuraWidgetController* AAuraHUD::GetOverlayAuraWidgetController(const FWidgetControllerParams& WCParams) { if (OverlayAuraWidgetController == nullptr) { OverlayAuraWidgetController = NewObject<UOverlayAuraWidgetController>(this, OverlayAuraWidgetControllerClass); OverlayAuraWidgetController->SetWidgetControllerParams(WCParams); return OverlayAuraWidgetController; } return OverlayAuraWidgetController; } void AAuraHUD::InitOverlay(APlayerController* PC, APlayerState* PS, UAbilitySystemComponent* ASC, UAttributeSet* AS) { checkf(OverlayWidgetClass != nullptr, TEXT("Overlay Widget Class uninitialized , please fill out BP_AuraHUD")); checkf(OverlayAuraWidgetControllerClass != nullptr, TEXT("Overlay Widget Controller Class uninitialized , please fill out OverlayAuraWidgetControllerClass")); UUserWidget* Widget = CreateWidget(GetWorld(), OverlayWidgetClass); OverlayWidget = Cast<UUserWidget>(Widget); // 确保类型转换正确 const FWidgetControllerParams WidgetControllerParams(PC, PS, ASC, AS); UOverlayAuraWidgetController* WidgetController = GetOverlayAuraWidgetController(WidgetControllerParams); OverlayWidget->SetWidgetController(WidgetController); Widget->AddToViewport(); }
AuraCharacter类的修改(AuraCharacter.cpp)
在角色初始化时加载UI的初始化部分,确保正确调用并传递必要的参数给AAuraHUD::InitOverlay
方法,这部分代码看起来已经相对完整,只需确保所有引用的变量都已正确初始化或获取,确保AbilitySystemComponent
和AttributesSet
在调用InitOverlay
之前已经被正确初始化或获取,同时确保传递的参数类型正确无误,如果涉及到类型转换或引用获取,请确保使用正确的API和方法,请确保在调用这些方法时正确处理可能的空指针异常,使用Cast
函数时,确保目标对象不是空指针。### 蓝图中OverlayAuraWidgetController的更新在蓝图界面(WBP_AuraHUD),将新创建的OverlayAuraWidgetController
添加到相应的组件或节点中,请根据您的具体需求和项目结构进行相应的调整,确保所有的连接和配置都正确无误,并且符合您的项目需求,这些修改应该涵盖了从定义到实现的各个方面,以确保代码的完整性和正确性,具体的实现细节可能因项目结构和需求的不同而有所差异,请根据您的具体情况进行调整和优化。
还没有评论,来说两句吧...