[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); };
ArrayFlag是在C++定义的函数,可以在蓝图中显示中文说明文字。
[UE4]自定义结构体、类、数据表的更多相关文章
- qsettings 保存自定义结构体(QVariant与自定义结构体相互转化)
参考博文:QVariant与自定义数据类型转换的方法. 这里摘取其关键内容: 1.将自定义数据类型使用Q_DECLARE_METATYPE宏进行声明,便于编译器识别. 2.在插入对象的时候,声明QVa ...
- gin中绑定表单数据至自定义结构体
package main import "github.com/gin-gonic/gin" type StructA struct { FieldA string `form:& ...
- Solidity的自定义结构体深入详解
一.结构体定义 结构体,Solidity中的自定义类型.我们可以使用Solidity的关键字struct来进行自定义.结构体内可以包含字符串,整型等基本数据类型,以及数组,映射,结构体等复杂类型.数组 ...
- 用set、map等存储自定义结构体时容器内部判别各元素是否相同的注意事项
STL作为通用模板极大地方便了C++使用者的编程,因为它可以存储任意数据类型的元素 如果我们想用set与map来存储自定义结构体时,如下 struct pp { double xx; double y ...
- typedef和自定义结构体类型
在自定义结构体类型时会用到typedef关键字.大家都知道typedef是取别名的意思,在C语言中跟它容易混淆的有const,#define等,其区别不在本篇文章讨论之列. /*定义单链表结点类型*/ ...
- 枚举类 enum,结构体类 struct
1.枚举类型的值,直观易于理解,见词知意. 格式: enum 枚举类名:值类型 { 值1, 值2, 值n } 每个值默认(省略“:值类型”)以int型数据存储,从0开始. 使用格式:枚举类名 变量=枚 ...
- iOS自定义结构体
一.提要 通过以官方的CGSize为例,自定义Objective-C中的结构体,并使用. 二.CGSize 1.系统定义的CGSize结构体 struct CGSize { CGFloat width ...
- Qt--信号槽传递自定义结构体参数
自定义结构体参数的信号槽连接 (1) 对于自定义的结构体参数,信号槽无法识别参数,导致信号槽连接不起作用.所以需要注册结构体参数.在结构体中声明结束的地方加上结构体注册. struct DealDet ...
- 5.Swift枚举|结构体|类|属性|方法|下标脚本|继承
1. 枚举: ->在Swift中依然适用整数来标示枚举值,需搭配case关键字 enum Celebrity{ case DongXie,XiDu,Nandi,BeiGai } // 从左 ...
随机推荐
- 【BZOJ3527】【ZJOI2014】力
"FFT还不是随手写?"我终于能说这样的话了இwஇ 原题: 给出n个数qi,给出Fj的定义如下: 令Ei=Fi/qi,求Ei. FFT嘛,直接推公式 然后就变成俩卷积了,FFT ...
- 阿里Dragonfly docker p2p 镜像分发试用
阿里的Dragonfly p2p 镜像分发已经开源了,同时加入了cncf ,很给力 拉取镜像 docker pull registry.cn-hangzhou.aliyuncs.com/alidr ...
- How To Use the AWK language to Manipulate Text in Linux
https://www.digitalocean.com/community/tutorials/how-to-use-the-awk-language-to-manipulate-text-in-l ...
- [转]MyBatis中resultType与resultMap区别
MyBatis中关于resultType和resultMap的具体区别如下: MyBatis中在查询进行select映射的时候,返回类型可以用resultType,也可以用resultMap.resu ...
- node api 之:stream - 流
stream 模块可以通过以下方式使用: const stream = require('stream'); 流可以是可读的.可写的.或者可读可写的. 所有的流都是 EventEmitter 的实例. ...
- js 控件样式显隐和赋值
控制样式显示: $("#againMetting")[0].style.display = "inline";//显示 $("#againMettin ...
- Linux 下Tomcat单机多应用
修改/etc/profile 下,增加如下两个tomcat的配置.apache-tomcat-8.0.50为第一个tomcat, apache-tomcat-8.0.50_2为第二个tomcat ex ...
- Golang 端口复用测试
先给出结论: 同一个进程,使用一个端口,然后连接关闭,大约需要30s后才可再次使用这个端口. 测试 首先使用端口9001连接服务端,发送数据,然后关闭连接,接着再次使用端口9001连接服务端,如果连接 ...
- CentOS7局域网下安装离线Ambari
1 Ambari介绍.安装与应用案例介绍 1.1 Ambari Ambari 跟 Hadoop 等开源软件一样,也是 Apache Software Foundation 中的一个项目,并且是顶级项目 ...
- 安装plsql developer
需求:要连接oracle数据库,不想在本地安装oracle,太大,又占内存,所以用plsql developer.. 在网上看了很多博客,妈呀,被毒的不清,一直提示初始化失败,就是那个oci,dll ...