自定义数据表:

#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); };

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

[UE4]自定义结构体、类、数据表的更多相关文章

  1. qsettings 保存自定义结构体(QVariant与自定义结构体相互转化)

    参考博文:QVariant与自定义数据类型转换的方法. 这里摘取其关键内容: 1.将自定义数据类型使用Q_DECLARE_METATYPE宏进行声明,便于编译器识别. 2.在插入对象的时候,声明QVa ...

  2. gin中绑定表单数据至自定义结构体

    package main import "github.com/gin-gonic/gin" type StructA struct { FieldA string `form:& ...

  3. Solidity的自定义结构体深入详解

    一.结构体定义 结构体,Solidity中的自定义类型.我们可以使用Solidity的关键字struct来进行自定义.结构体内可以包含字符串,整型等基本数据类型,以及数组,映射,结构体等复杂类型.数组 ...

  4. 用set、map等存储自定义结构体时容器内部判别各元素是否相同的注意事项

    STL作为通用模板极大地方便了C++使用者的编程,因为它可以存储任意数据类型的元素 如果我们想用set与map来存储自定义结构体时,如下 struct pp { double xx; double y ...

  5. typedef和自定义结构体类型

    在自定义结构体类型时会用到typedef关键字.大家都知道typedef是取别名的意思,在C语言中跟它容易混淆的有const,#define等,其区别不在本篇文章讨论之列. /*定义单链表结点类型*/ ...

  6. 枚举类 enum,结构体类 struct

    1.枚举类型的值,直观易于理解,见词知意. 格式: enum 枚举类名:值类型 { 值1, 值2, 值n } 每个值默认(省略“:值类型”)以int型数据存储,从0开始. 使用格式:枚举类名 变量=枚 ...

  7. iOS自定义结构体

    一.提要 通过以官方的CGSize为例,自定义Objective-C中的结构体,并使用. 二.CGSize 1.系统定义的CGSize结构体 struct CGSize { CGFloat width ...

  8. Qt--信号槽传递自定义结构体参数

    自定义结构体参数的信号槽连接 (1) 对于自定义的结构体参数,信号槽无法识别参数,导致信号槽连接不起作用.所以需要注册结构体参数.在结构体中声明结束的地方加上结构体注册. struct DealDet ...

  9. 5.Swift枚举|结构体|类|属性|方法|下标脚本|继承

    1. 枚举: ->在Swift中依然适用整数来标示枚举值,需搭配case关键字 enum  Celebrity{  case DongXie,XiDu,Nandi,BeiGai }  // 从左 ...

随机推荐

  1. Go Example--结构体

    package main import "fmt" //定义一个私有结构体 type person struct { name string age int } func main ...

  2. LOJ3048 「十二省联考 2019」异或粽子

    题意 题目描述 小粽是一个喜欢吃粽子的好孩子.今天她在家里自己做起了粽子. 小粽面前有 $n$ 种互不相同的粽子馅儿,小粽将它们摆放为了一排,并从左至右编号为 $1$ 到 $n$.第 $i$ 种馅儿具 ...

  3. WCF中的Dispose(转)

    毫无疑问,在.NET Framework中,一个资源(尤其是非托管资源)通常都需要实现IDisposable接口.一旦实现了该接口,我们就可以使用using语句来管理资源,这是最便捷的方式.但是,一旦 ...

  4. 【jar包删除,再添加版本更高的jar】******.jar in project cnnot be read or is not a valid

    把4.2.0删除,然后添加其他版本的jar包

  5. 计算机网络-数据结构-MAC帧头-IP头-TCP头-UDP头

    第0章 数据是如何进行一步步的封装的 第一章:mac帧头定义 帧头数据结构的定义: 一.MAC帧头定义 /*数据帧定义,头14个字节,尾4个字节*/ typedef struct _MAC_FRAME ...

  6. HIDL学习笔记

    一.HIDL简单介绍 HIDL是Android8.0新出的一个技能,以service和client的方式实现hal接口,目的是想使Android系统和BSP解绑,使系统升级更加方便.HIDL的使用方法 ...

  7. sqler sql 转rest api 源码解析(三) rest协议

    rest 服务说明 rest 协议主要是将配置文件中的宏暴露为rest 接口,使用了labstack/echo web 框架,同时基于context 模型 进行宏管理对象的共享,同时进行了一些中间件的 ...

  8. android设备兼容性

    原文地址:http://developer.android.com/guide/practices/compatibility.html android被设计成能够在多种不同的设备上执行的系统,为了达 ...

  9. [转] VS2017 打包安装程序

    前言 C#写好一个应用程序,总想分享给自己的朋友或者上架,然而被困在打包之外,这次为大家带来近期我的经验,经过几天的摸索,发现网上的教程并不全面,会给初学者带来很多疑问,这里将做些问题描述与解答. / ...

  10. tensorflow学习笔记

    常量的四则运算 import tensorflow as tf data1 = tf.constant(2) data2 = tf.constant(10) dataAdd=tf.add(data1, ...