独立游戏《星尘异变》UE5 C++程序开发日志3——UEC++特供的数据类型

本篇日志将介绍FString,FText、FName的用法和相互转换,以及容器TMap,TArray的增删查改

一、字符串相关数据类型:FString、FText、FName

FString是最接近std::string的类型,字符串本身可以看做一个存储char型的动态数组,也可以使用'+'来进行字符串连接

FName是不可修改的字符串类型,其会在定义时生成一个哈希值,适合作为TMap的键

FText最主要的功能是向玩家展示不同的语言包括中文,可以在DataTable中进行设置

UPROPERTY(EditAnywhere,BlueprintReadWrite)
FString S1 = "a";
UPROPERTY(EditAnywhere, BlueprintReadWrite)
FName S2 = "b";
UPROPERTY(EditAnywhere, BlueprintReadWrite)
FText S3 = FText::FromString("c");//FText无法直接用字符串赋值

(三种字符串在蓝图中显示的颜色是不同的)

三种数据类型是可以互相转化的,这里我们统一使用FString作为跳板:

S1 = S3.ToString();//FText向FString转化
S1 = S2.ToString();//FName向FString转化
S2 = FName(S1);//FString向FName转化
S3 = FText::FromString(S1);//FString向FText转化

FString和std::string之间也是可以相互转化的:

S4 = TCHAR_TO_UTF8(*S1);//FString向std::string转化
S1 = UTF8_TO_TCHAR(S4.c_str());//std::string向FString转化

二、容器:TArray,TMap

TArray是一种动态数组,类似于std::array或std::vector,下面是其常用的增删改查方法:

TArray<int>Array;
Array.Add(3);//添加一个元素到末尾
Array[0] = 5;//可以进行随机访问
auto x = Array.FindByPredicate([](const int& x) {return x > 3; });//返回找到的第一个符合条件的的值的指针,没找到返回nullptr
UE_LOG(LogTemp, Warning, TEXT("%d"), *x);
Array.RemoveAt(0);//删除某个索引值对应的元素

TMap是一个哈希表,类似于std::unordered_map,其提供了针对例如FString的UE特殊数据类型的哈希函数,使用方法如下:

TMap<FString, int>Map;
Map.Add("A", 1);//在哈希表中添加一个键值对
//Map["B"] = 2;//注意TMap不能像std::unordered_map一样自动创建一个"B",2的键值对,而是会报错
if(Map.Contains("A"))
{UE_LOG(LogTemp, Warning, TEXT("warning:%d"), Map["A"]);//注意在用键求值是要先查询是否存在Map["A"] = 2;
}
Map.Remove("A");//移除哈希表中对应的元素

下一篇日志我将介绍UE中函数的声明和定义

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/779864.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Django学习笔记(二)】CSS语言介绍

CSS语言介绍 前言正文1、CSS 快速了解2、CSS 应用方式2.1 在标签上应用2.2 在head标签中写style标签2.3 写到文件中 3、问题探讨&#xff1a;用Flask框架开发不方便4、选择器4.1 ID选择器4.2 类选择器4.3 标签选择器4.4 属性选择器4.5 后代选择器4.6 注意事项 5、样式5.1 高度和…

x86_64 ubuntu22.04编译MetaRTC

metaRTC5.0 API https://github.com/metartc/metaRTC/wiki/metaRTC5.0-API Sample https://github.com/metartc/metaRTC/wiki/metaRTC5.0-API-Sample MetaRTC7.0编译 https://github.com/metartc/metaRTC/wiki/Here-we-come,-write-a-C-version-of-webRTC-that-runs-everywhere…

【RISC-V】如何使用release的risc-v gnu toolchain

riscv64-elf-ubuntu-22.04-gcc-nightly-2024.03.01-nightly.tar.gz 首先去release页面中获取相应的压缩包 将压缩包解压到想解压的位置&#xff0c;这里我选择了 mv Downloads/riscv64-elf-ubuntu-22.04-gcc-nightly-2024.03.01-nightly.tar.gz riscv64-tool-chain/然后解压…

python 字典练习

# 字典练习1 import time def main():month_income{1月: 8000, 2月: 8200, 3月: 7900, 4月: 6900, 5月: 8900, 6月: 12000, 7月: 8900, 8月: 6000,9月: 8900, 10月: 9200, 11月: 6200, 12月: 7000}year_income0for k,v in month_income.items():print(月份→,k,工资→,v)time.s…

中国香港男歌手张国荣 明星网页成品 html人物明星网页设计制作 明星前端网页开发 网页期末设计制作作业成品

中国香港男歌手张国荣 7页面 人物明星主题 带设计说明 jquery图片轮播特效 滚动文字 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns"http://ww…

R语言数据分析基础(二)

R语言和Python的pandas库都用于数据处理和分析&#xff0c;但它们在语法和功能上有所不同。R语言主要用于统计计算和图形生成&#xff0c;而pandas则专注于数据处理和分析。 以下是一些R语言中实现pandas相似操作的方法&#xff1a; 数据框&#xff08;Data Frame&#xff09;…

【c++】类和对象(五)赋值运算符重载

&#x1f525;个人主页&#xff1a;Quitecoder &#x1f525;专栏&#xff1a;c笔记仓 朋友们大家好&#xff0c;本篇文章带大家认识赋值运算符重载&#xff0c;const成员&#xff0c;取地址及const取地址操作符重载等内容 目录 1.赋值运算符重载1.1运算符重载1.1.1特性&#…

刷题之动态规划

前言 大家好&#xff0c;我是jiantaoyab&#xff0c;开始刷动态规划的题目了&#xff0c;要特别注意初始化的时候给什么值。 动态规划5个步骤 状态表示 &#xff1a;dp数组中每一个下标对应值的含义是什么->dp[i]表示什么状态转移方程&#xff1a; dp[i] 等于什么1 和 2 是…

软考101-上午题-【信息安全】-网络安全

一、网络安全 1-1、安全协议 SSL(Secure Socket Layer&#xff0c;安全套接层)是 Netscape 于 1994年开发的传输层安全协议&#xff0c;用于实现 Web 安全通信。1996 年发布的 SSL3.0 协议草案已经成为一个事实上的Web 安全标准。 端口号是43。 SSL HTTP HTTPS TLS(Transpo…

uniapp中怎么引入echarts(最简单)

目录 引言 echarts.vue 文件代码 echarts-config 文件代码 在需要引入echarts图表的页面(.vue)中进行导入该文件(echarts.vue) 使用该组件(echarts) 引言 在uniapp中需要引入echarts时的时候,需要引入两个配置文件.分别是 echarts.vue 以及 echarts-config 放在你项目中…

XXE漏洞知识及ctfshow例题

XXE漏洞相关知识 XXE全称为XML Enternal Entity Injection 中文叫xml外部实体注入 什么是xml 简单了解XML&#xff1a; &#xff08;xml和html的区别可以简易的理解成&#xff1a;xml是用来储存数据和传输数据的而html是用来将数据展现出来&#xff09; XML 指可扩展标记语…

Leetcode 680. 验证回文串 II

给你一个字符串 s&#xff0c;最多 可以从中删除一个字符。 请你判断 s 是否能成为回文字符串&#xff1a;如果能&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 示例 1&#xff1a; 输入&#xff1a;s “aba” 输出&#xff1a;true 示例 2&#xff1a…

vue3封装Element导航菜单

1. 导航外层布局 AsideView.vue <template><el-menu:default-active"defaultActive"class"my-menu":collapse"isCollapse":collapse-transition"false"open"handleOpen"close"handleClose"><menu…

springmvc实现文件上传功能

第一&#xff1a; RequestMapping("/testUp") public String testUp(MultipartFile photo, HttpSession session) throws IOException {//获取上传的文件的文件名String fileName photo.getOriginalFilename();//获取上传的文件的后缀名String suffixName fileName…

Mysql or与in的区别

创建一个表格 内涵一千万条数据 这张表中&#xff0c;只有id有建立索引&#xff0c;且其余都没有 测试1&#xff1a;使用or的情况下&#xff0c;根据主键进行查询 可以看到根据主键id进行or查询 花费了30-114毫秒&#xff0c;后面30多毫秒可能是因为Mysql的Buffer Pool缓冲池的…

JAVA面试大全之架构篇

目录 1、架构基础 1.1、如何理解架构的演进? 1.2、如何理解架构的服务化趋势? 1.3、架构中有哪些技术点? 2、缓存

#设计模式#3.1用做松鼠桂鱼来理解抽象工厂(对象创建型模式)

概念&#xff1a;xx工厂&#xff0c;xx产品 区分 工厂是动作&#xff0c;产品是结果&#xff08;菜品&#xff09; 概念&#xff1a;抽象xx&#xff0c;具体xx 区分 抽象产品&#xff1a;“中式菜品” 具体产品&#xff1a;“麻婆豆腐”、“宫保鸡丁” 抽象工厂&#xff1a;“…

ubuntu制作deb安装包

这篇文章很好 https://blog.csdn.net/weixin_51495377/article/details/132797013 使用脚本来控制的好处是比较灵活与功能强大 这里附上我的脚本 #!/bin/sh set -e echo "Installing My pd_sns Application..." cp -r ../application/lib/cartographer_ros/* /home…

大模型重塑电商,淘宝、百度、京东讲出新故事

配图来自Canva可画 随着AI技术日渐成熟&#xff0c;大模型在各个领域的应用也越来越深入&#xff0c;国内互联网行业也随之进入了大模型竞赛的后半场&#xff0c;开始从“百模大战”转向了实际应用。大模型从通用到细分垂直领域的跨越&#xff0c;也让更多行业迎来了新的商机。…

对象新增属性为什么不更新?

data () {return {obj: {a: 1}} }methods: {update () {this.obj.b 2} } 上面的伪代码&#xff0c;当我们执行 update 更新 obj 时&#xff0c;我们预期视图是要随之更新的&#xff0c;实际是并不会 这个其实很好理解&#xff0c;我们先要明白 vue 中 data init 的时机&am…