UE5 C++ 基础

阅读: 评论:0

UE5 C++ 基础

UE5 C++ 基础

文章目录

    • 基本数据类型
    • 数据类型转换
      • FString、FName、FText相互之间的转化
      • FString与Int32、float、bool的转化
      • FString与C++原生的转化
    • UPROPERTY介绍
      • 常见属性说明
      • 使用示例
    • UFUNCTION介绍
      • 常见属性说明
      • 使用示例
    • 枚举UEnum、结构体UStruct

基本数据类型

分类范围字节备注
uint80 ~ 2551无符号8位
uint160 ~ 655352无符号16位
uint320 ~ 42949672954无符号32位
uint640 ~ 184467440737095516158无符号64位
int8-128 ~ 1271有符号8位
int16-32768 ~ 327672有符号16位
int32-2147483648 ~ 21474836474有符号32位
int64-9223372036854775808 ~ 92233720368547758078有符号64位
float-3.4E+38 ~ 3.4E+381单精度浮点型
double-1.7E-308 ~ 1.7E+3081双精度型浮点型
booltrue ~ false1布尔
FNameFName不区分大小写,并且不可变,无法被操作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);        // 使用FCStringint32 i2 = atoi(TCHAR_TO_UTF8(*MyString));   // 使用C++原生方法/** FString 转化为 float */float f1 = FCString::Atof(*MyString);       // 使用FCStringfloat 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 转化为 FStringstd::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* 转化为 FStringFString NewString = FString(UTF8_TO_TCHAR(newChar));
}
{// FString 转化为 TCHARFString MyString = TEXT("UEString");const TCHAR* MyChar = *MyString;
}

UPROPERTY介绍

属性使用标准的C++变星语法声明,前面用UPROPERTY宏来定义属性元数据和变量说明符。UPROPERTY的作用是将变量公开到编辑器或蓝图。

常见属性说明

  1. VisiableAnywhere:如果给一个变星声明了此关键词,那么它会出现在蓝图编辑器的右边和主编辑器上。(只是显示,不能编辑)
  2. VisibleDefaultsOnly:在主编辑器中不显示,但是在蓝图编辑器中显示(不可编辑),Default默认是蓝图编译器。
  3. EditDefaultsOnly :在蓝图中可以编辑,但是在主编辑器中不显示所以不可编辑,只在类默认设置中可见。
  4. EditAnywhere:在主编辑器和蓝图编辑器中都显示并且都可以编辑。
  5. EditInstanceOnly:在蓝图编辑器中不可修改但是可见,只有当蓝图实例化到场景中点击该组件才会出现相应的设置,实例化之后可以修改。但只能在原型上进行。

使用示例

UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "MyCategory")
int MyInt;

UFUNCTION介绍

使用UFUNCTION宏可以方便地为我们的函数添加元数据和属性,使得它们可以在蓝图中方便地使用和调用。

常见属性说明

  1. BlueprintCallable:此函数可在蓝图或关卡蓝图图表中执行。此函数不对拥有它的对象产生任何影响,可在蓝图或关卡蓝图图表中执行。
  2. BlueprintPure:此函数可在蓝图或关卡蓝图图表中执行。此函数不对拥有它的对象产生任何影响,可在蓝图或关卡蓝图图表中执行。
  3. BlueprintlmplementableEvent:需要在蓝图里面重载。此函数旨在被蓝图覆盖掉,但是也具有默认原生实现。用于声明名称与主函数相同的附加函数,但是末尾添加了Implementation,是写入代码的位置。如果未找到任何蓝图覆盖,该自动生成的代码将调用lmplementation方法。
  4. BlueprintReadOnly:蓝图只读
  5. BlueprintReadwrite:蓝图可读可写
  6. BlueprintNativeEvent:可通过细节(Details)面板中的按钮在编辑器中的选定实例上调用此函数。callnEditor:可通过细节(Details)面板中的按钮在编辑器中的选定实例上调用此函数。
  7. BlueprintAssignable:蓝图中可绑定委托
  8. ServerClient:表示这个函数是由服务器或客户端调用的。

使用示例

UFUNCTION(BlueprintCallable, Category = "MyCategory")
void MyFunction(int MyInt, FString MyString);

枚举UEnum、结构体UStruct

//定义一个原生enum class
enum class EMyType 
{Type1,Type2,Type3,
};namespace EState 
{enum Type {Stop,Close,Open};
}// 带反射枚举
UENUM(BlueprintType)
enum class ECurrentState : uint8
{Idle UMETA(DisplayName="空闲"),Attack UMETA(DisplayName="攻击"),Roll UMETA(DisplayName="翻滚"),Dead UMETA(DisplayName="死亡"),
};UPROPERTY(EditAnywhere,BlueprintReadWrite)
ECurrentState MyCurrentState UMETA(DisplayName = "当前状态");
//结构体
//BlueprintType可以将枚举暴露给蓝图,继承FTableRowBase之后可以用于DataTable
USTRUCT(BlueprintType)
struct FMyStruct: public FTableRowBase
{GENERATED_BODY()// 暴露给蓝图UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Test Variables")int32 MyIntegerMemberVariable;// 不暴露给蓝图int32 NativeOnlyMemberVariable;// 蓝图图表无法访问此UObject指针,但是指针对UE4的反射、智能指针和垃圾回收系统可见。UPROPERTY()UObject* SafeObjectPointer;
};UPROPERTY(EditAnywhere,BlueprintReadWrite)FMyStruct MyStruct;

本文发布于:2024-01-28 03:02:22,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/17063821654306.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

上一篇:ue4 读写文件
标签:基础
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23