解释说明:

(1) 直接通过FName的Index和Number进行比较来判断两个FName是否相等

(2) 通过FName的Index从全局Names数组中取出对应的FNameEntry,可以获得FName的字符串内容

(3) 全局NameHash链表数组是为了优化查找而存在的数据结构

(4) 创建一个FName时,会在全局NameHash链表数组查找是否已存在:

若存在则直接设置当前FName的Index;若不存在才会创建新的FNameEntry,并添加到Names末尾和对应NameHash链表的头部

(5) UE3名称为大小写不敏感的;若要将名称改为大小写敏感,要注意两个地方:①大小写敏感进行hash值计算  ②大小写敏感进行链表中线性查找

TArrayNoInit<FNameEntry*> Names (Names长度为12个字节)结构详解:

注1:定义了SUPPORT_NAME_FLAGS宏,FNameEntry才会有EObjectFlags Flags(typedef QWORD EObjectFlags)成员变量

#define SUPPORT_NAME_FLAGS !(CONSOLE && FINAL_RELEASE)

即:开启了FINAL_RELEASE宏的发布版本,是没有Flags成员变量的

注2:UE中,在使用TArrayNoInit数组变量之前,必须显示地初始化,否则数组中的Data、ArrayNum、ArrayMax会为随机值,最后会导致该变量在析构回收堆内存时,引发堆破坏

可以用以下方式进行抹零初始化:appMemzero(&FName::Names, sizeof(FName::Names));//Data、ArrayNum、ArrayMax全部为0

注3:含有array成员的native脚本的struct变量,作为局部变量在c++函数中使用时,若不想如注2那样显示地初始化

可以在array之前加上init关键字,使得其转换成c++中的TArray类型(若不加init,则会生成TArrayNoInit类型)

来自于native脚本中这种成员变量不存在该问题,因为在构建这个Object对象时,会对该成员变量进行初始化

struct native UniqueNetId

{

var init array<int> NetParamID;

};

转载于:https://www.cnblogs.com/kekec/p/5435175.html

UE3名称结构(Name)相关推荐

  1. c语言结构体共用体枚举实例程序,10-C语言结构体-共用体-枚举

    结构体是什么? 结构体和数组一样属于构造类型 数组是用于保存一组相同类型数据的,而结构体是用于保存一组不同类型的数组 定义结构体 在使用结构体之前必须先定义结构体类型,因为C语言不知道你的结构体中需要 ...

  2. Matlab | Matlab从入门到放弃(7)——struct结构体

    博主github:https://github.com/MichaelBeechan 博主CSDN:https://blog.csdn.net/u011344545 代码下载:https://gith ...

  3. 一起学习C语言:结构体(二)

    上一篇<一起学习C语言:结构体(一)> 中,我们了解了结构体的概念与定义形式,以及结构体变量初始化赋值.本章节,我们分析结构体成员访问形式,以及结构数组使用的场景. 章节预览: 4. 结构 ...

  4. 结构数据类型 struce c# 1613533319

    结构数据类型 struce c# 1613533319 结构定义 struct 结构名称{} 结构的使用1 不NEW // 声明了一个变量,它是一个结构类型 结构名称 变量名:// 给变量赋值 变量. ...

  5. C语言结构体学习(二)

    结构体数组 结构体数组有两种定义方法, (1)第一种就是声明结构体的时候进行定义: Struct 结构体名称{ 结构体成员: }数组名[长度]: (2)第二种就是先声明,但是到后面使用的时候在定义 s ...

  6. C语言小记:结构体及其在内存中的储存形式

    C语言小记:结构体及其在内存中的储存形式 1.结构体 结构体的作用:自定义一个包含多种不同数据类型的变量. 语法: struct 结构体名称 {结构体成员1:结构体成员2:结构体成员3:... } 定 ...

  7. c语言结构体世界杯,世界杯冷知识 | 12座球场的结构巡礼

    原标题:世界杯冷知识 | 12座球场的结构巡礼 2018世界杯开赛一周,32只球队都已亮相完毕(有些球队在买回家机票了?),同时12座赛场也都和大家见过面了,也许专(he)心(jiu)看(lu)球(c ...

  8. C语言学习笔记(15)——结构体程序设计

    前言 C语言的基本数据类型有整数型.实数型及字符型,使用这些基本数据类型可以构造数组类型,并且可以定义相关数据类型的指针.本节介绍的结构体类型区别于以上任何数据类型,它还能把各种不同类型的数据组合成一 ...

  9. C基础 | 【05】(内存结构以及复合类型)

    文章目录 内存结构 作用域 局部变量 全局变量 静态变量 静态局部变量 静态全局变量 全局函数和静态函数 静态函数 全局函数 内存布局 内存分区 代码区(程序指令) 数据区(静态区.全局区) 栈区 堆 ...

  10. CODOSYS之结构化文本(ST)—— 初级篇(四)基础-数据类型

    清楚的了解数据类型是编程必备技能 数据类型分三类:(本篇范扩展数据类型) 规范扩展数据类型 基于IEC 61131-3的标准化扩展 UNION(可以在用户定义类型声明单元) 例子:       TYP ...

最新文章

  1. [SPOJ705]不同的子串
  2. 中国电力行业运行形势及十四五供需状况分析报告2021-2027年
  3. 傅里叶变换音频可视化_Web Audio在音频可视化中的应用
  4. iphone开发JSON库之BSJSONAdditions
  5. WPF中TreeView.BringIntoView方法的替代方案
  6. Flink 里程碑版本即将发布,快点入手
  7. HTTP响应头信息 Content-Type
  8. 计算机网络 - 物理层
  9. C# Winform编程ListBox之DrawItem事件
  10. 末日前的唠叨:SEO之四大要不得
  11. 【OpenGL开发】glut和freeglut下载及配置
  12. C语言IDE和编辑器比较
  13. 基于华为云服务器Docker nginx安装和配置挂载
  14. 7-6 输入数据范围的简单判断7-7 计算半圆面积和弧长
  15. 毕业季快到了,在为毕业设计担心嘛?收下这份毕设知识大扫盲
  16. tensorflow实现卷积神经网络——经典网络(LeNet5、AlexNet、VGG-16、ResNet)
  17. 作为一名视觉工程师该怎么学习?
  18. 云办公、智能办公时代,微软还能一枝独秀吗?(下)
  19. vue-router的addRoutes()和addRoute()的使用问题
  20. 分享78个JS相册代码,总有一款适合您

热门文章

  1. 小施同学的投资日记 开篇
  2. 区块链 Fisco bcos 智能合约(11)-深入浅出Solidity
  3. kubernetes视频教程笔记 (16)-DaemonSet
  4. Hyperledger Fabric Composer安装blockchain explorer
  5. 精益创业(LeanStartup)
  6. 关于账号密码校验的两种IO流操作
  7. 深度神经网络反向传播算法
  8. 设计模式之模版方法模式
  9. Java JDK 自带监控工具 jps.exe、jconsole.exe、jvisualvm.exe
  10. 阶段5 3.微服务项目【学成在线】_day03 CMS页面管理开发_18-异常处理-不可预知异常处理...