虚幻引擎结构之GName
一. 全局名称表(Global Name Table)介绍
全局名称表(Global Name Table)是虚幻引擎中用于高效存储和查找唯一字符串的数据结构。这些字符串通常以 FName 类的形式表示,FName 是虚幻引擎中用于标识对象、属性、函数等的轻量级类。通过将所有 FName 实例集中存储在全局名称表中,虚幻引擎能够显著节省内存并加速字符串比较操作。
全局名称表的特性
字符串去重(String Interning):全局名称表确保每个唯一的字符串仅存储一次,无论它在代码中被引用多少次。这种设计减少了冗余数据,提高了内存使用效率,并加快了字符串比较的速度。
硬编码名称(Hardcoded Names):引擎中有一些预定义的、常用的字符串(如 "None"、"ByteProperty" 等),它们在全局名称表中被分配固定的索引值。这些硬编码名称可以通过枚举值(如 NAME_None、NAME_ByteProperty)在代码中引用,从而提高性能和一致性。
线程安全(Thread Safety):全局名称表是线程安全的,可以在多线程环境中安全地进行字符串的添加和查找操作,无需担心数据竞争或同步问题。
全局名称表的作用
全局名称表的主要作用是为 FName 提供高效的存储和查找服务。通过 FName,虚幻引擎可以快速定位对象、属性、方法等相关信息,这对于实现引擎的许多核心功能至关重要。例如,虚幻引擎的反射系统依赖于 FName 对象来查找类、属性和方法的元数据,从而支持动态类型检查和编辑器功能。
二. FName 介绍
FName 是虚幻引擎中用于表示名称(如对象名称、属性名称、函数名