首页 > 编程语言 >UE4 C++学习 浅析基本数据类型

UE4 C++学习 浅析基本数据类型

时间:2022-08-28 11:33:14浏览次数:75  
标签:文本 FText 数据类型 C++ 使用 UE4 include 浅析 FString

本文只解析一些UE4特有的一些数据类型,一些常用的类型如布尔(Bool),整型(Int)等不再赘述。

 

UE4的基本数据类型有以下几种:

 

 

 

命名(FName)

在C++中,命名被写成FName

使用时需添加头文件:

#include "UObject/NameTypes.h"

 

我们来看下官方给的解释

 意思是说:Name是一种文本,并且当游戏中需要查找操作时,使用Name会比使用String更快一些。

除此之外,Name还无法被修改,这意味着Name无法执行对字符串的操作如翻转等,

不区分大小写(当WITH_CASE_PRESERVING_NAME设置为1是可以保留大小写)

 

不区分大小写的例子:

如下建立两个实例TitleCaseNamecamelCaseName

 

我们分别使用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

标签:文本,FText,数据类型,C++,使用,UE4,include,浅析,FString
From: https://www.cnblogs.com/CatSevenMillion/p/16622422.html

相关文章

  • c++ bind ref 例子
    //bindexample#include<iostream>//std::cout#include<functional>//std::bind//afunction:(alsoworkswithfunctionobject:std::divides<doubl......
  • C++ 之函数模板
    C++之函数模板函数的参数类型不确定,这样就可以使用泛型。//类型参数化C++中称之为泛型编程--模板技术template<classT>//告诉编译器,下面如果出现T不要报错,T是......
  • 《机器人SLAM导航核心技术与实战》第1季:第2章_C++编程范式
    《机器人SLAM导航核心技术与实战》第1季:第2章_C++编程范式视频讲解【第1季】2.第2章_C++编程范式-视频讲解【第1季】2.1.第2章_C++编程范式-C++工程的组织结构-视频......
  • 【Java学习Day08】数据类型、变量及字节
    数据类型强类型语言要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用弱类型语言要求变量的使用要符合规定,所有变量都必须先定义后才能使用Java......
  • 【C++】实现D3D9 的 Inline hook
    【C++】实现D3D9的Inlinehook 简单介绍一下HOOK原理:函数调用的过程大致是先push参数进去,再执行call函数地址,进入函数。此时将所调用的函数的前五个字......
  • 刨析一下C++构造析构函数能不能声明为虚函数的背后机理?
    以下内容为本人的著作,如需要转载,请声明原文链接微信公众号「englyf」https://www.cnblogs.com/englyf/p/16631774.html先说结论:构造函数不能声明为虚函数,析构函数可以......
  • C++ Protobuf
    Protobufprotobuf(protocolbuffer)是谷歌内部的混合语言数据标准。通过将结构化的数据进行序列化(串行化),用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展......
  • 基本数据类型与严格模式和约束条件(3)
      整型 分类TINYINTSMALLINTMEDUIMINTINTBIGINT"""以TINYINT是否有符号默认情况下是带符号的超出会如何超出限制只存最大可接......
  • python之数据类型转换
    一、隐式类型转换隐式类型转换-自动完成我们对两种不同类型的数据进行运算,较低数据类型(整数)就会转换为较高数据类型(浮点数)以避免数据丢失num_int=123num_flo=1.2......
  • C++中的cout.setf(ios::fixed)是什么意思?
    问题描述:在阅读一段代码时,发现代码的最后一部分出现...cout.setf(ios::fixed);cout.setf(ios::showpoint);...解决:cout.setf()是通过设置格式标志来控制cout输出格......