[UE4]自定义结构体、类、数据表

自定义数据表:

#pragma once

#include "CoreMinimal.h"
#include "Engine/UserDefinedStruct.h"
#include "Components/CanvasPanel.h"
#include "Blueprint/UserWidget.h"
#include "Runtime/Engine/Classes/Engine/UserDefinedStruct.h"
#include "Runtime/Engine/Classes/Engine/DataTable.h"
#include "Runtime/CoreUObject/Public/UObject/ObjectMacros.h"

#include "MiniMapFlagData.generated.h"


/*BlueprintType:暴露成为蓝图数据类型,蓝图变量可以使用该结构体作为数据类型*/
USTRUCT(BlueprintType)
struct FUMiniMapFlagDataC : public FTableRowBase
{
    GENERATED_USTRUCT_BODY()

    //小图标
    UPROPERTY(EditAnywhere, BlueprintReadWrite)
        UUserWidget* flag;

    //小图标对应的Actor
    UPROPERTY(EditAnywhere, BlueprintReadWrite)
        AActor* Actor;

    //小图标对应的Canvas panel Slot
    UPROPERTY(EditAnywhere, BlueprintReadWrite)
        UCanvasPanelSlot* Slot;

    UPROPERTY(EditAnywhere, BlueprintReadWrite)
        int MyAge;
};

成员变量添加UPROPERTY标签,可以享受到UE4垃圾自动管理机制,不用手动释放变量内存。

自定义类

#pragma once

#include "CoreMinimal.h"
#include "Engine/UserDefinedStruct.h"
#include "Components/CanvasPanel.h"
#include "Blueprint/UserWidget.h"
#include "Runtime/Engine/Classes/Engine/UserDefinedStruct.h"
#include "Runtime/Engine/Classes/Engine/DataTable.h"
#include "Runtime/CoreUObject/Public/UObject/ObjectMacros.h"

#include "MiniMapFlagData.generated.h"

/**
*
*/
UCLASS(BlueprintType)
class PROJ10_0121_API UMiniMapFlagData : public UUserDefinedStruct
{
    GENERATED_BODY()

public:
    UMiniMapFlagData() {}
    UMiniMapFlagData(UUserWidget* flag, AActor* Actor, UCanvasPanelSlot* Slot)
        :flag(flag), Actor(Actor), Slot(Slot)
    {}
    /*
        flag(flag)表示将参数flag赋值给成员参数flag
        使用方法:UMiniMapFlagData data(flag,Actor,Slot);
    */

public:
    //小图标
    UPROPERTY()
        UUserWidget* flag;

    //小图标对应的Actor
    UPROPERTY()
        AActor* Actor;

    //小图标对应的Canvas panel Slot
    UPROPERTY()
        UCanvasPanelSlot* Slot;

    UPROPERTY()
        int MyAge;

};

 

自定义函数添加说明文字,可在蓝图中显示,如果要支持中文,则只要把h和cpp文件以utf-8编码保存就可以了。

注意:EditAnywhere,BlueprintReadWrite等等修饰符不能拼写错误,拼写错误是不会有错误提示的,并且编译出错信息也不会告诉我们是修饰符写错了,只会说编译出错,没有详细的出错信息。

#include "CoreMinimal.h"
#include "Blueprint/UserWidget.h"
#include "Components/CanvasPanel.h"
#include "MiniMap/MiniMapFlagData.h"

#include "StaticMiniMapBase.generated.h"

/**
 * 
 */
UCLASS()
class PROJ10_0121_API UStaticMiniMapBase : public UUserWidget
{
    GENERATED_BODY()

protected:
    UPROPERTY(EditAnywhere,BlueprintReadWrite, Category=myMethods,meta=(ToolTip="小图标容器面板"))
        UCanvasPanel * PanelFlag;
     
    UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = myMethods,meta=(ToolTip="存放小图标数据机构数组"))
        TArray<UMiniMapFlagData*> ArrayFlag;
    //TArray<TSubclassOf<class UMiniMapFlagData>> FlagArray;

    UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = myVariables,meta=(ToolTip="小地图比例尺"))
        float RatioMap;
    
protected:
    UFUNCTION(BlueprintCallable, Category = myMethods,meta=(ToolTip="初始化UI控件对象"))
        void ini(UCanvasPanel* sFlagPanel);

public:
    UFUNCTION(BlueprintCallable, Category = myMethods,meta=(ToolTip="添加图标到小地图"))
    void Add_Flag(UUserWidget* flag, AActor* actor);
    
};

 [UE4]自定义结构体、类、数据表

ArrayFlag是在C++定义的函数,可以在蓝图中显示中文说明文字。

 

原文链接: https://www.cnblogs.com/timy/p/10066118.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    [UE4]自定义结构体、类、数据表

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/286297

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月15日 上午9:13
下一篇 2023年2月15日 上午9:15

相关推荐