当前位置: 首页 > news >正文

UE5基本数据类型

 

  • bool: 表示布尔值,只有两个取值:true 或 false,用于表示逻辑条件。
  • int8: 表示 8 位的有符号整数,范围是 −128−128 到 127127。
  • uint8: 表示 8 位的无符号整数,范围是 00 到 255255。
  • int16: 表示 16 位的有符号整数,范围是 −32,768−32,768 到 32,76732,767。
  • uint16: 表示 16 位的无符号整数,范围是 00 到 65,53565,535。
  • int32: 表示 32 位的有符号整数,范围是 −2,147,483,648−2,147,483,648 到 2,147,483,6472,147,483,647,通常是最常用的整数类型。
  • longlong: 表示 64 位的有符号整数,范围非常大,一般用于需要更大数值的情况,占用 8 个字节。
  • float: 表示 32 位的单精度浮点数,适合处理小数部分的数值,常用于需要进行物理运算、3D 模型坐标等场景。
  • ptrint: 表示指针大小的整数,大小依赖于平台(32 位或 64 位),用于存储指针或地址。

2. 禁止使用 C++ 的基本数据类型:

UE4(虚幻引擎)中推荐使用自己的数据类型(如上所述),而不是直接使用 C++ 的原生数据类型,如 intcharfloat 等。这是因为虚幻引擎是跨平台的,而不同平台对基础数据类型的大小和实现可能有所不同。使用 UE 提供的跨平台基础类型,可以确保代码在不同平台(如 Windows、Linux、主机游戏设备等)上的一致性,避免平台差异导致的错误或问题。

3 字符串

UE 中的字符串类型:FString、FName 和 FText

FString
  • 用途FString 是 UE 中最常用的字符串类型,适用于程序端的字符串操作。它是一个动态大小的字符串类,可以存储任何长度的文本。通常用于存储临时数据,比如文件路径、日志信息、调试文本、配置文件内容等。
  • 特点
    • 支持对字符串进行复杂的操作(拼接、截取、查找等)。
    • 由于它是动态分配内存的,所以可以方便地处理变化长度的文本。
    • 它的内存管理较为复杂,通常涉及堆内存,因此在性能敏感的场景中不适合频繁使用。
FName
  • 用途FName 主要用于 标识符 或 名称记录。它并不是为了存储大量文本而设计的,而是为了优化内存使用和性能,尤其是在涉及到大量相同字符串的场景中(例如对象名、资源名等)。当你有很多重复的字符串时,FName 可以避免多次存储相同的字符串,提高效率。
  • 特点
    • 它是基于 FNameEntry 的内存管理机制,所有相同的字符串都只存储一次。
    • 与 FString 不同,FName 是不可变的,也就是说它不支持像 FString 那样的动态操作。
    • FName 存储的是字符串的引用(即指向已存储字符串的标识符),而不是整个字符串本身。
    • 它在执行比较时比 FString 快,因为它直接比较内部存储的索引值,而不是每次比较整个字符串。
FText
  • 用途FText 主要用于 国际化(i18n) 和 本地化(l10n) 相关的字符串,适合用于用户界面(UI)展示。FText 支持翻译,并且能够根据不同语言和文化设置提供不同的显示内容。
  • 特点
    • FText 用于 UI 显示文本,确保文本能根据玩家的语言设置进行翻译和本地化处理。
    • 它提供了对文本的多语言支持(例如,支持不同的字符串翻译、文化格式化等),是处理多语言项目的关键类。
    • 与 FString 和 FName 不同,FText 具有更高的内存开销,因为它需要支持本地化的文本数据结构。
    • FText 的本地化是通过 "Text Localization" 系统进行的,允许对字符串进行翻译和格式化,确保在不同的地区和语言中显示正确的内容。

2. FString、FName 和 FText 的用途

  • FString 用于程序端:它适合用于程序内部的字符串处理,尤其是在非 UI 相关的地方。例如,在游戏逻辑中,使用 FString 可以方便地进行字符串的拼接、处理和转换。
  • FName 用于记录名称:由于 FName 采用优化的内存管理,它适用于标识对象或资源的名称。举例来说,在游戏开发中,很多时候你需要比较或者存储大量的对象名、资源名、类名等,这时使用 FName 可以有效节省内存并提高性能。比如,在 Unreal 中,很多对象(例如材质、蓝图、声音文件等)都使用 FName 来标识其名字。
  • FText 用于 UI 端:在 UI 上显示的文本通常需要支持多语言和文化的格式化。这时 FText 就是最佳选择。例如,游戏中的对话框、按钮文字、任务提示等,使用 FText 可以方便地管理不同语言的翻译。
#include "CoreMinimal.h"
#include "Engine/Engine.h"void ExampleStringConversions()
{// Using TEXT macro to define a wide character stringFName myName = TEXT("PlayerCharacter");FString myStringFromFName = myName.ToString();// From FString to FName using TEXT macroFString myStringToFName = TEXT("PlayerCharacter");FName myNameFromFString(*myStringToFName);// From FText to FStringFText myText = FText::FromString(TEXT("Hello World"));FString myStringFromFText = myText.ToString();// From FString to FTextFString myStringToFText = TEXT("Hello World");FText myTextFromFString = FText::FromString(myStringToFText);
}
#include "CoreMinimal.h"
#include "Engine/Engine.h"void ExampleFStringFunctions()
{// 构造函数FString str1 = TEXT("Hello");FString str2(TEXT("World"));// 字符串拼接FString concatenatedStr = str1 + TEXT(" ") + str2;str1.Append(TEXT(" Universe"));// 查找和替换int32 index = concatenatedStr.Find(TEXT("World"));if (index != INDEX_NONE){concatenatedStr.ReplaceInline(TEXT("World"), TEXT("Universe"));}// 分割和连接TArray<FString> parts;FString longStr = TEXT("Apple,Banana,Cherry");longStr.ParseIntoArray(parts, TEXT(","), true);FString joinedStr = FString::Join(parts, TEXT(";"));// 大小写转换FString upperStr = concatenatedStr.ToUpper();FString lowerStr = concatenatedStr.ToLower();// 修剪空格FString spacedStr = TEXT("   Trim Me   ");FString trimmedStr = spacedStr.TrimStartAndEnd();// 长度检查int32 length = concatenatedStr.Len();bool isEmpty = concatenatedStr.IsEmpty();// 格式化FString formattedStr;formattedStr.Printf(TEXT("Formatted String: %s, Length: %d"), *concatenatedStr, length);// 输出结果UE_LOG(LogTemp, Log, TEXT("Concatenated: %s"), *concatenatedStr);UE_LOG(LogTemp, Log, TEXT("Appended: %s"), *str1);UE_LOG(LogTemp, Log, TEXT("Replaced: %s"), *concatenatedStr);UE_LOG(LogTemp, Log, TEXT("Parsed Parts: %s"), *joinedStr);UE_LOG(LogTemp, Log, TEXT("Upper Case: %s"), *upperStr);UE_LOG(LogTemp, Log, TEXT("Lower Case: %s"), *lowerStr);UE_LOG(LogTemp, Log, TEXT("Trimmed: %s"), *trimmedStr);UE_LOG(LogTemp, Log, TEXT("Length: %d"), length);UE_LOG(LogTemp, Log, TEXT("Is Empty: %s"), isEmpty ? TEXT("True") : TEXT("False"));UE_LOG(LogTemp, Log, TEXT("Formatted: %s"), *formattedStr);
}

相关文章:

UE5基本数据类型

bool: 表示布尔值&#xff0c;只有两个取值&#xff1a;true 或 false&#xff0c;用于表示逻辑条件。int8: 表示 8 位的有符号整数&#xff0c;范围是 −128−128 到 127127。uint8: 表示 8 位的无符号整数&#xff0c;范围是 00 到 255255。int16: 表示 16 位的有符号整数&am…...

Next.js 系统性教学:中间件与国际化功能深入剖析

更多有关Next.js教程&#xff0c;请查阅&#xff1a; 【目录】Next.js 独立开发系列教程-CSDN博客 目录 一、Next.js 中间件 (Middleware) 功能解析 1.1 什么是中间件&#xff1f; 1.2 Next.js 中间件的工作机制 1.3 中间件的功能应用 身份验证与授权 请求重定向 修改请…...

鸿蒙HarmonyOS元服务应用开发实战完全指导

内容提要 元服务概述 元服务开发流程 第一个元服务开发 元服务部署与运行 一、服务概述 1、什么是元服务 在万物互联时代&#xff0c;人均持有设备量不断攀升&#xff0c;设备种类和使用场景更加多样&#xff0c;使得应用开发、应用入口变得更加复杂。在此背景下&#x…...

CT中的2D、MPR、VR渲染、高级临床功能

CT中的2D、MPR、VR渲染 在CT&#xff08;计算机断层扫描&#xff09;中&#xff0c;2D、MPR&#xff08;多平面重建&#xff09;、VR&#xff08;体积渲染&#xff09;是不同的图像显示和处理技术&#xff0c;它们各自有独特的用途和优势。下面分别介绍这三种技术&#xff1a;…...

利用docker-compose来搭建flink集群

1.前期准备 &#xff08;1&#xff09;把docker&#xff0c;docker-compose&#xff0c;kafka集群安装配置好 参考文章&#xff1a; 利用docker搭建kafka集群并且进行相应的实践-CSDN博客 这篇文章里面有另外两篇文章的链接&#xff0c;点进去就能够看到 &#xff08;2&…...

力扣打卡10:K个一组翻转链表

链接&#xff1a;25. K 个一组翻转链表 - 力扣&#xff08;LeetCode&#xff09; 这道题需要在链表上&#xff0c;每k个为一组&#xff0c;翻转&#xff0c;链接。 乍一看好像比较容易&#xff0c;其实有很多细节。比如每一组反转后怎么找到上一组的新尾&#xff0c;怎么找到…...

深度学习详解

深度学习&#xff08;Deep Learning&#xff0c;DL&#xff09;是机器学习&#xff08;Machine Learning&#xff0c;ML&#xff09;中的一个子领域&#xff0c;利用多层次&#xff08;深层&#xff09;神经网络来自动从数据中提取特征和规律&#xff0c;模仿人脑的神经系统来进…...

鸿蒙分享(一):添加模块,修改app名称图标

码仓库&#xff1a;https://gitee.com/linguanzhong/share_harmonyos 鸿蒙api:12 新建公共模块common 在entry的oh-package.json5添加dependencies&#xff0c;引入common模块 "dependencies": {"common": "file:../common" } 修改app名称&…...

【Redis】not support: redis

1、查看redis进程 2、查看是否安装redis扩展&#xff0c;此处以宝塔为例...

【集群划分】含分布式光伏的配电网集群电压控制【33节点】

目录 主要内容 模型研究 1.节点电压灵敏度的计算 2.Kmeans聚类划分 3.集群K值 部分代码 运行结果 下载链接 主要内容 该程序参考文献《含分布式光伏的配电网集群划分和集群电压协调控制》&#xff0c;基于社团检测算法&#xff0c;实现基于电气距离和区域电压调节能…...

嵌入式蓝桥杯学习5 定时中断实现按键

Cubemx配置 打开cubemx。 前面的配置与前文一样&#xff0c;这里主要配置基本定时器的定时功能。 1.在Timer中点击TIM6&#xff0c;勾选activated。配置Parameter Settings中的预分频器&#xff08;PSC&#xff09;和计数器&#xff08;auto-reload Register&#xff09; 补…...

【Java】类似王者荣耀游戏

r77683962/WangZheYouDianRongYao 运行效果图&#xff1a; 类似王者荣耀游戏运行效果图_哔哩哔哩_bilibili...

C++<基本>:union是没有构造函数和析构函数的

今天发现当我在union中包含了多个结构体时&#xff0c;结构体有默认构造函数时&#xff0c;编译报错。 问题点&#xff1a; union不支持构造函数和析构函数union中的元素本身也是不支持构造函数和析构函数的。包含union的结构体也不支持构造函数和析构函数。 出错代码如下&a…...

SQL中IN和NOT操作符的用法

1. IN操作符&#xff08;布尔逻辑&#xff09; 在SQL中&#xff0c;IN 是一个用于检查某个字段值是否包含在给定的多个可能值中的布尔操作符。它经常与条件表达式一起使用&#xff0c;通常出现在WHERE子句中。 用法&#xff1a; IN操作符用来确定某个字段的值是否存在于给定…...

C++平常学习用的

4.1 友元函数 4.2 友元类 5.2 类模板 7.2 虚函数dynamic_cast运算 7.2 纯虚函数和抽象类...

JAVA |日常开发中Servlet详解

JAVA &#xff5c;日常开发中Servlet详解 前言一、Servlet 概述1.1 定义1.2 历史背景 二、Servlet 的生命周期2.1 加载和实例化2.2 初始化&#xff08;init 方法&#xff09;2.3 服务&#xff08;service 方法&#xff09;2.4 销毁&#xff08;destroy 方法&#xff09; 三、Se…...

QT实战--QTreeWidget实现两种行颜色+QListWidget样式

本文主要介绍了QTreeWidget实现两种行颜色、点击打开父节点以及设置父子节点之间距离,同时附带介绍了QListWidget样式 树效果图: 列表效果图: 1.树样式的实现 1)使用代码: m_pLeftTreeWidget = new QTreeWidget(this);m_pLeftTreeWidget->setObjectName("suolue_t…...

RPA在IT运维中的实践:自动化监控与维护

一、引言 1. IT运维面临的挑战与RPA的机遇 在IT运维领域&#xff0c;日常的监控、维护和故障响应等工作占据了大量的时间和资源。随着技术的发展&#xff0c;RPA技术提供了自动化这些重复性任务的可能性&#xff0c;从而释放IT团队的潜力&#xff0c;让他们能够专注于更复杂和…...

C# 设置方法执行超时,则执行下一个方法

最近在开发过程中遇到了一个问题&#xff0c;在进行通讯连接时&#xff0c;如果没有连接的话会延时几十秒&#xff0c;而且还设置不了连接超时时间&#xff0c;于是我就想着有没有一种可以判断这个方法的执行时间超过多少秒&#xff0c;就跳出执行其他方法&#xff0c;经过大量…...

【iOS】UIImagePickerController

【iOS】UIImagePickerController 前言 笔者简单学习了iOS开发如何调用本地的一个相册的内容&#xff0c;下面简单介绍一下相关内容。 介绍 UIImagePickerController是iOS平台上的一个类&#xff0c;用于在应用程序中访问设备的照片库、相机和视频录制功能。它提供了一个用户…...

ARM架构TRFCR_EL2寄存器解析与虚拟化调试应用

1. ARM架构TRFCR_EL2寄存器深度解析在ARMv8/v9体系结构中&#xff0c;TRFCR_EL2&#xff08;Trace Filter Control Register at EL2&#xff09;是一个关键的系统寄存器&#xff0c;专门用于管理EL2&#xff08;Hypervisor&#xff09;级别的追踪过滤行为。这个寄存器在虚拟化环…...

VMware ESXi版本回退全攻略:从适用条件、DCUI操作到6.x升7.0的‘后悔药’失效分析

VMware ESXi版本回退深度解析&#xff1a;从技术原理到实战避坑指南 在虚拟化运维领域&#xff0c;版本升级往往伴随着不可预知的风险。当新版本出现兼容性问题或性能异常时&#xff0c;版本回退能力就成为系统管理员手中的"后悔药"。然而&#xff0c;不同于普通软件…...

系统提示词工程:构建稳定可控的大语言模型应用实践

1. 项目概述与核心价值 最近在GitHub上看到一个挺有意思的项目&#xff0c;叫 edoardoavenia/chatgpt-system-prompts 。乍一看&#xff0c;这似乎又是一个收集ChatGPT提示词的仓库&#xff0c;但当你真正点进去&#xff0c;花点时间研究一下它的结构和内容&#xff0c;你会发…...

Arduino库持续集成实战:Travis CI自动化编译测试指南

1. 项目概述&#xff1a;为什么Arduino库需要持续集成&#xff1f; 如果你和我一样&#xff0c;维护过几个甚至几十个Arduino库&#xff0c;那你一定对下面这个场景深恶痛绝&#xff1a;你修复了一个库里的Bug&#xff0c;或者添加了一个新功能&#xff0c;满怀信心地提交了代…...

HsMod终极指南:如何通过55项功能全面优化炉石传说游戏体验

HsMod终极指南&#xff1a;如何通过55项功能全面优化炉石传说游戏体验 【免费下载链接】HsMod Hearthstone Modification Based on BepInEx 项目地址: https://gitcode.com/GitHub_Trending/hs/HsMod HsMod是基于BepInEx框架开发的炉石传说模改插件&#xff0c;专为提升…...

EmotionBook开源项目:构建可计算的情绪数据模型与可视化分析系统

1. 项目概述&#xff1a;一个为情绪寻找容器的数字实验最近在GitHub上看到一个挺有意思的项目&#xff0c;叫“EmotionBook”。光看名字&#xff0c;你可能会联想到一本情绪日记&#xff0c;或者一个记录心情的App。但点进去之后&#xff0c;你会发现它远不止于此。这其实是一个…...

赣州威视智投GEO优化服务

在数字化浪潮席卷的当下&#xff0c;赣州本地商家面临着线上曝光不足、流量少、排名靠后的经营难题。如何在激烈的市场竞争中脱颖而出&#xff0c;实现精准获客与稳定引流&#xff0c;成为众多商家亟待解决的问题。赣州威视智投科技有限公司&#xff08;以下简称“威视智投”&a…...

Llama 的演变:从 Llama 1 到 Llama 3.1

原文&#xff1a;towardsdatascience.com/the-evolution-of-llama-from-llama-1-to-llama-3-1-13c4ebe96258 本文与 Rafael Guedes 共同撰写。 简介 Meta 已经发布了其大型语言模型&#xff08;LLM&#xff09;Llama 的三个主要版本&#xff0c;以及一个较小的更新&#xff0…...

开源硬件自动化测试平台:OpenClaw Grand Central 架构与实战

1. 项目概述&#xff1a;一个面向开源硬件与自动化测试的“中央枢纽”最近在折腾一些开源硬件项目&#xff0c;特别是涉及到多设备、多协议联动的自动化测试时&#xff0c;经常被一个老大难问题困扰&#xff1a;如何高效、统一地管理和调度那些五花八门的设备&#xff1f;从树莓…...

山东反向旅游推荐“小众秘境古村落”

假期不想挤热门景区&#xff0c;只想寻一处安静古村放空散心&#xff1f;给大家整理山东4 个小众秘境古村落&#xff0c;全程 1-2.5 小时车程&#xff0c;适合近郊自驾、短途出游&#xff0c;原生态氛围拉满&#xff0c;人少景美超适合避峰出行。一、济南长清&#xff5c;方峪古…...