UE4 C++学习 浅析基本数据类型
2022/8/28 14:22:59
本文主要是介绍UE4 C++学习 浅析基本数据类型,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
本文只解析一些UE4特有的一些数据类型,一些常用的类型如布尔(Bool),整型(Int)等不再赘述。
UE4的基本数据类型有以下几种:
命名(FName):
在C++中,命名被写成FName
使用时需添加头文件:
#include "UObject/NameTypes.h"
我们来看下官方给的解释
意思是说:Name是一种文本,并且当游戏中需要查找操作时,使用Name会比使用String更快一些。
除此之外,Name还无法被修改,这意味着Name无法执行对字符串的操作如翻转等,
不区分大小写(当WITH_CASE_PRESERVING_NAME设置为1是可以保留大小写)
不区分大小写的例子:
如下建立两个实例TitleCaseName和camelCaseName
我们分别使用ToString将二者打印出来
结果要么他们都是MyActivity或者都是myActivity,二者变成哪个取决于哪一个变量首先被存储。
字符串(FString):
在C++中字符串被写成FString
要使用是需要加上头:
#include "Containers/UnrealString.h"
FString的基本用法和 std::string 的用法基本一致,都是一个可改变长度的文本。
在网上看到关于FString 主要出现的问题都是中文乱码问题
例如:
如果书写程序为:
FString Str = "你好";
这时候就会出现乱码,解决方法是改成这样
FString Str = TEXT("你好");
究其原因,所有使用FString的变量,UE4都会采用的是UTF-16编码将他们存储在内存中,而前一段代码中“你好”则是gb2312编码(简体中文),自然UE4中的编码会出错。
所以在导入文件或者保存什么表格进UE4中时一定要记得把编码改成UTF-8 or UTF-16.
文本(FText):
要使用是需要加上头:
#include "Internationalization/Text.h"
官方的对FText的解释是:
在UE4中,文本本地化的主要组件是FText类。所有面向用户的文本都应使用此类。
同时,FText可以和FString互相通过函数进行转换,值得注意的是,FText是可以包含本地化数据(localization data)的,而FString不具有。所以在从FText转化为FString时会丢失数据。想要不丢失数据可以使用Text Value Marshalling来进行转化。
:至于什么是本地化数据,暂时还没有搞清楚,感觉也用不到,之后遇到了再回来补充。
FText给用户的接口有Slate/UMG和HUD/Canvas,也就是在游戏中展示给玩家看到的一些文本内容,我们都可以使用FText。
向量(FVector):
使用时需要加上头:
#include "Math/Vector.h"
官方解释:向量是一个具有浮点精度的由三个不同的分量X,Y,Z所组成的一个组合(X,Y,Z)。
使用的方法也很简单,在UE4的世界里面采用的是笛卡尔坐标系,我们可以通过向量来准确的定位一个组件的具体位置。
旋转体(FRotator):
头文件:
#include "Math/Rotator.h"
官方解释:FRotator是一个用来存放旋转变换信息的一个容器。
它有三个参数:Pitch(俯角--Y),Roll(滚角--X),Yaw(偏角--Z)。分别表示绕Y轴,X轴,Z轴旋转的角度。
变换(FTransform):
官方解释:由缩放、旋转(作为四元数)和平移组成的变换。
为什么是这三个呢?用过UE4蓝图的朋友应该就知道了
这是物体在世界中位置最重要的三个值。
又由于,这三个值不同的变化顺序会影响到物体变化后的位置。
所以在UE4中 FTransform的默认变化顺序为:
Scale(缩放) -> Rotate(旋转) -> Translate(平移).
并且对于一个组合变换C = A * B,则首先会进行A的变换再进行B变换。
参考链接:
Unreal – FName non-preserved case sensitivitiy | by Peter Brooks | Medium
Character Encoding | Unreal Engine Documentation
这篇关于UE4 C++学习 浅析基本数据类型的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-23DevExpress 怎么实现右键菜单(Context Menu)显示中文?-icode9专业技术文章分享
- 2024-12-22怎么通过控制台去看我的页面渲染的内容在哪个文件中呢-icode9专业技术文章分享
- 2024-12-22el-tabs 组件只被引用了一次,但有时会渲染两次是什么原因?-icode9专业技术文章分享
- 2024-12-22wordpress有哪些好的安全插件?-icode9专业技术文章分享
- 2024-12-22wordpress如何查看系统有哪些cron任务?-icode9专业技术文章分享
- 2024-12-21Svg Sprite Icon教程:轻松入门与应用指南
- 2024-12-20Excel数据导出实战:新手必学的简单教程
- 2024-12-20RBAC的权限实战:新手入门教程
- 2024-12-20Svg Sprite Icon实战:从入门到上手的全面指南
- 2024-12-20LCD1602显示模块详解