文章目录
基本数据类型
分类 | 范围 | 字节 | 备注 |
---|---|---|---|
uint8 | 0 ~ 255 | 1 | 无符号8位 |
uint16 | 0 ~ 65535 | 2 | 无符号16位 |
uint32 | 0 ~ 4294967295 | 4 | 无符号32位 |
uint64 | 0 ~ 18446744073709551615 | 8 | 无符号64位 |
int8 | -128 ~ 127 | 1 | 有符号8位 |
int16 | -32768 ~ 32767 | 2 | 有符号16位 |
int32 | -2147483648 ~ 2147483647 | 4 | 有符号32位 |
int64 | -9223372036854775808 ~ 9223372036854775807 | 8 | 有符号64位 |
float | -3.4E+38 ~ 3.4E+38 | 1 | 单精度浮点型 |
double | -1.7E-308 ~ 1.7E+308 | 1 | 双精度型浮点型 |
bool | true ~ false | 1 | 布尔 |
FName | FName不区分大小写,并且不可变,无法被操作 | 12 | 字符串类型 |
FString | 提供了对FString的修改、比较,也同时增加了性能消耗 | 12 | 字符串类型 |
FText | 一般用作显示和语言的翻译 | 12 | 字符串类型 |
数据类型转换
FString、FName、FText相互之间的转化
{
/** FString 转化为 FName */
FString Str = TEXT("MyString");
FName Name = FName(*Str);
/** FName 转化为 FString */
FString NewString = Name.ToString();
}
{
/** FText 转化为 FName */
FName MyName = FName(*MyText.ToString());
/** FName 转化为 FText */
FText MyText1 = FText::FromName(MyName);
}
{
/** FString 转化为 FText */
FString Str = TEXT("MyString");
FText MyText = FText::FromString(Str);
/** FText 转化为 FString */
FString NewString = MyText.ToString();
}
FString与Int32、float、bool的转化
{
/** FString 转化为 Int32 */
FString MyString = TEXT("MyString");
int32 i1 = FCString::Atoi(*MyString); // 使用FCString
int32 i2 = atoi(TCHAR_TO_UTF8(*MyString)); // 使用C++原生方法
/** FString 转化为 float */
float f1 = FCString::Atof(*MyString); // 使用FCString
float f2 = atof(TCHAR_TO_UTF8(*MyString)); // 使用C++原生方法
/** FString 转化为 bool */
bool b = MyString.ToBool();
/** int 转化为 FSting */
FString FStr1 = FString::FromInt(123);
/** float 转化为 FSting */
FString FStr2 = FString::SanitizeFloat(36.1f);
/** bool 转化为 FSting */
bool myBool;
FString FStr3 = myBool ? TEXT("true") : TEXT("false");
}
FString与C++原生的转化
{
// std::string 转化为 FString
std::string stdStr = "MyString";
FString a = FString(stdStr.c_str());
// FString 转化为 std::string
std::string newString(TCHAR_TO_UTF8(*a));
// FString 转化为 char*
char* newChar = TCHAR_TO_UTF8(*a);
// char* 转化为 FString
FString NewString = FString(UTF8_TO_TCHAR(newChar));
}
{
// FString 转化为 TCHAR
FString MyString = TEXT("UEString");
const TCHAR* MyChar = *MyString;
}
UPROPERTY介绍
属性使用标准的C++变星语法声明,前面用UPROPERTY宏来定义属性元数据和变量说明符。UPROPERTY的作用是将变量公开到编辑器或蓝图。
常见属性说明
VisiableAnywhere
:如果给一个变星声明了此关键词,那么它会出现在蓝图编辑器的右边和主编辑器上。(只是显示,不能编辑)VisibleDefaultsOnly
:在主编辑器中不显示,但是在蓝图编辑器中显示(不可编辑),Default默认是蓝图编译器。EditDefaultsOnly
:在蓝图中可以编辑,但是在主编辑器中不显示所以不可编辑,只在类默认设置中可见。EditAnywhere
:在主编辑器和蓝图编辑器中都显示并且都可以编辑。EditInstanceOnly
:在蓝图编辑器中不可修改但是可见,只有当蓝图实例化到场景中点击该组件才会出现相应的设置,实例化之后可以修改。但只能在原型上进行。
使用示例
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "MyCategory")
int MyInt;
UFUNCTION介绍
使用UFUNCTION宏可以方便地为我们的函数添加元数据和属性,使得它们可以在蓝图中方便地使用和调用。
常见属性说明
BlueprintCallable
:此函数可在蓝图或关卡蓝图图表中执行。此函数不对拥有它的对象产生任何影响,可在蓝图或关卡蓝图图表中执行。BlueprintPure
:此函数可在蓝图或关卡蓝图图表中执行。此函数不对拥有它的对象产生任何影响,可在蓝图或关卡蓝图图表中执行。BlueprintlmplementableEvent
:需要在蓝图里面重载。此函数旨在被蓝图覆盖掉,但是也具有默认原生实现。用于声明名称与主函数相同的附加函数,但是末尾添加了Implementation,是写入代码的位置。如果未找到任何蓝图覆盖,该自动生成的代码将调用lmplementation方法。BlueprintReadOnly
:蓝图只读BlueprintReadwrite
:蓝图可读可写BlueprintNativeEvent
:可通过细节(Details)面板中的按钮在编辑器中的选定实例上调用此函数。callnEditor:可通过细节(Details)面板中的按钮在编辑器中的选定实例上调用此函数。BlueprintAssignable
:蓝图中可绑定委托Server
和Client
:表示这个函数是由服务器或客户端调用的。
使用示例
UFUNCTION(BlueprintCallable, Category = "MyCategory")
void MyFunction(int MyInt, FString MyString);