UE4 C++常用代码及格式
1.Debug相关
LOG Debug
UE_LOG(LogTemp,Warning,Text(“Bginplay”));
在屏幕显示文字
GEngine->AddOnScreenDebugMessage(-1,5.f,FColor::Black,Text(“Beginplay”));
2.常用数据类型变化
int变为Int8 int16 int32 int64
string 变为 FString
新增FVector等类型
3.各继承类型前缀代表含义
A --Actor
F--Other
U--UE4
E--Enum
I--Interface
T--Template
S --Slate
4.宏 暴露变量给蓝图
UPROPERTY(EditAnywhere,BlueprintReadWrite,/*VisibleAnywhere,BlueprintReadOnly*/)Float Health = 100;
5.宏 暴露函数给蓝图
.h //普通节点
UFUNCTION(BlueprintCallable, Category = “MyActorFunction”) //Category给节点分组void PrintAString(FString String, UPARAM(Ref) int32& a,FString& OutString);
.cpp
void AMyActor::PrintAString(FString String, UPARAM(Ref) int32& a,FString& OutString) //通过UPARAM(Ref) 数据类型& 引用传入值
{GEngine->AddOnScreenDebugMessage(-1,5.f,FColor::Black,String);OnGetPrintString(string); //调用下面的可执行事件OutString = “OK”; //通过FString&引用,获得返回值
}
.h //事件节点类型1,不需要.cpp文件UFUNCTION(BlueprintImplementableEvent, Category = “MyActorFunction”) //不能在C++里写节点的内容Void OnGetPrintString(const FString& String);
.h //事件节点类型2UFUNCTION(BlueprintNativeEvent, /*BlueprintCallable,*/ Category = “MyActorFunction”) //可以在C++里写东西,但是会被蓝图覆盖,BlueprintCallable出来的节点内容会被该事件屏蔽Void OnGetPrintString(const FString& String);virtual void OnGetPrintString_Implementation(const FString& String);.cppvoid AMyActor::OnGetPrintString_Implementation(const FString& String){GEngine->AddOnScreenDebugMessage(-1,5.f,FColor::Green,String);}
.hUFUNCTION(BlueprintPure) //BlueprintPure定义纯函数,一般都有返回值float GetHealth();.cppfloat AMyActor::GetHealth() //可借鉴const FString& String返回多个值{return Health;}
6.多播代理
.h#include下方定义DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FMyDelegate, FString,Sting);UPROPERTY(BlueprintAssignable)FMyDelegate MyDelegate;.cppVoid AMyActor::BeginPlay()//例如在BeginPlay时引用{Super::BeginPlay();MyDelegate.Broadcast(“BeginPlay”);}
7.单播代理
.h#include下方定义DECLARE_DYNAMIC_DELEGATE_OneParam(FMyDelegateOne, float,Sting);UFUNCTION(BlueprintCallable)void DelegateTest(FMyDelegateOne MyDelegateOne);.cppVoid AMyActor::DelegateTest(FMyDelegateOne MyDelegateOne){HealthPercentage = Health/MaxHealth;DelegateOne.Execute(Healthpercentage);}
8.结构体
.h#include下方定义USTRUCT(BuleprintType)struct FHealth{GENERATED_BODY()UPROPERTY(EditAnywhere,BlueprintReadWrite)Float Health = 100;UPROPERTY(EditAnywhere,BlueprintReadWrite)Float MaxHealth = 100;UPROPERTY(VisibleAnywhere,BlueprintReadOnly)Float HealthPercentage = Health / MaxHealth;};UPROPERTY(EditAnywhere,BlueprintReadWrite)FHealth HealthS; //C++使用时可HealthS.Healthu提取,蓝图使用时可直接调用也可先Split Struct Pin解开结构体
9.枚举
.h#include下方定义UENUM(BuleprintType)enum class EMyENumType :uint8{Data1, //蓝图创建Enum变量,get变,switch提取变量E_Data2 UMETA=(DisplayName=”Data2”), //蓝图中屏蔽E_前缀,便于在代码中区分变量,而蓝图中仍显示为Data2Data3,//...};UPROPERTY(EditAnywhere,BlueprintReadWrite)EMyENumType MyENumType = EMyENumType::Data1;
10.数组
.hUFUNCTION(BlueprintCallable)void PrintAllString(TArray<FString> StringArray);.cppVoid PrintAllString(TArray<FString> StringArray){For(FString Each : StringArray) //等同于FoeEachLoop{GEngine->AddOnScreenDebugMessage(-1,5.f,FColor::Green,Each);}}
11.元数据说明符
.h //使用方法UFUNCTION(BlueprintPure,meta=(displayname = “CustomName”,Keywords=”CustomKeywords”, DevelopmentOnly/*,...*/)) //meta=(按所需功能填写)Float MyFunction().cppFloat AMyActor::MyFunction(){Return 0.f;}
.h //一个例子,给蓝图引脚定义默认值UFUNCTION(BlueprintCallable,meta=(AutoCreateRefTerm="b")) //不添加AutoCreateRefTerm则引脚必须从上一节点处获取参数void MyInput(int a, UPARAM(Ref) int32& b);.cppvoid AMyActor::MyInput(int a, UPARAM(Ref) int32& b) //通过UPARAM(Ref) 数据类型& 引用 在蓝图中传入值{ //随便写}
以上内容参考自@暂无名讳和官方文档
UE4 C++常用代码及格式相关推荐
- java qlv转mp4 代码_独家的kux如何转成常用的mp4格式?快速将kux转mp4的技巧
如何将kux转mp4?kux是优酷独家的视频格式,和qsv.qlv一样只能用自家播放器打开.当你在没有特点播放器的情况下kux格式的文件是不能直接打开的,遇到这类情况时大多数小伙伴会把独家的kux转换 ...
- 收藏!PyTorch常用代码段合集
↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:Jack Stark,来源:极市平台 来源丨https://zhu ...
- PyTorch常用代码段合集
↑ 点击蓝字 关注视学算法 作者丨Jack Stark@知乎 来源丨https://zhuanlan.zhihu.com/p/104019160 极市导读 本文是PyTorch常用代码段合集,涵盖基本 ...
- JavaScript常用代码
在这存一下JavaScript常用代码: 1.封装输出 1 var log = function() { 2 console.log.apply(console, arguments) 3 } 4 5 ...
- 常用代码整理(重要)
常用代码整理: 1.判断邮箱格式是否正确的代码: //利用正则表达式验证 -(BOOL)isValidateEmail:(NSString *)email { NSString *emailRegex ...
- 【深度学习】PyTorch常用代码段合集
来源 | 极市平台,机器学习算法与自然语言处理 本文是PyTorch常用代码段合集,涵盖基本配置.张量处理.模型定义与操作.数据处理.模型训练与测试等5个方面,还给出了多个值得注意的Tips,内容非常 ...
- android 环境配置和安装, Android系统包说明,基本控件,常用代码,ADB 命令行,APK文件确解,小技艺,...
一. 环境配置和安装(Android2.2) 参考文章:这里 1.1 JDK 1.2 SDK 下载地址:http://dl.google.com/android ...
- pytorch list转tensor_PyTorch 52.PyTorch常用代码段合集
本文参考于: Jack Stark:[深度学习框架]PyTorch常用代码段zhuanlan.zhihu.com 1. 基本配置 导入包和版本查询: import torch import torc ...
- 程序员必须知道的HTML常用代码有哪些?
HTML即超文本标记语言,是目前应用最为广泛的语言之一,是组成一个网页的主要语言.在现今这个HTML5华丽丽地占领了整个互联网的时候,如果想要通过网页抓住浏览者的眼球光靠因循守旧是不行的,程序猿们需要 ...
最新文章
- 老年机按键串号_2019年最适合买的老人机——AGM M5,4G全网通+支持微信
- Excel VBA开发中数字签名的管理
- China Linux Kernel-ppt
- 从壹开始 [ Id4 ] 之一║ 授权服务器 IdentityServer4 开篇讲计划书
- 写给即将过去的2012
- python声音捕获_在Python中实现实时信号处理如何连续捕获音频?
- Spring的入门学习笔记 (注解)
- 数组中每个元素都出现了两次,但是其中一个元素只出现了一次,求出此元素
- (每日一题 day 003 - 二维前缀和+动态规划) 1314. 矩阵区域和
- 更适合私有云的网络部署模式-动态路由
- html小写数字怎么转换大写,如何将数字123转化成大写的文字 一百二十三 或 一二三?...
- Nodejs设备接入阿里云IoT平台
- 省市定位(省市区三级联动插件Distpicker)
- HTTP与HTTPS请求过程
- Erueka状态变更说明(十三)
- 带你开发一款给Apk中自动注入代码工具icodetools(完善篇)
- SptingBoot构建电商基础秒杀项目时遇到的问题
- 科目二 座椅调节 记录
- Vue 自定义富文本编辑器 tinymce 支持导入 word 模板
- 通过 U 盘启动重装 macOS 系统
热门文章
- arduino 与java通信_在Java应用程序与Arduino Uno之间建立串口连接
- 第二十九章 OOTV杯超级模式大赛-模式总结(读书笔记)
- Linux入门(6)- SecureCRT 和 SecureFX 的使用
- 连续系统的时域分析(一)LTI连续系统微分方程解法3——零状态响应的求解方法
- 成为zabbix合作伙伴费用及意义
- JAVA中如何精确取到时间间隔
- 2020-10《信息资源管理 02378》真卷(独家文字版),圈定章节考点+统计真题分布
- Java Date Calendar类的使用 如何计算两个日期之间有多少天
- 使用protobuf作为游戏网络通讯的协议
- sqlDbx连接oracle64位